From a7adc0af074826a4c68c7395d2abfd4b931955df Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Wed, 7 Dec 2022 20:04:15 -0600 Subject: Make the cycle limit optional --- sim/gdbstub.py | 1 + sim/sim.py | 7 +++++-- tb/top/conspiracion.cpp | 8 +++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sim/gdbstub.py b/sim/gdbstub.py index 75c15cb..c01a4a7 100644 --- a/sim/gdbstub.py +++ b/sim/gdbstub.py @@ -1,5 +1,6 @@ import sys, socket +cycles = None start_halted = True def init(): diff --git a/sim/sim.py b/sim/sim.py index be846fb..b0a194a 100755 --- a/sim/sim.py +++ b/sim/sim.py @@ -275,13 +275,16 @@ prelude.update({k: v for k, v in all_regs}) module.__dict__.update(prelude) spec.loader.exec_module(module) -cycles = module_get('cycles', 1024) mem_dumps = module_get('mem_dumps', []) if init := module_get('init'): init() -exec_args = [verilated, '--headless', '--no-tty', '--cycles', str(cycles), '--dump-regs'] +exec_args = [verilated, '--headless', '--no-tty', '--dump-regs'] + +cycles = module_get('cycles', 1024) +if cycles is not None: + exec_args.extend(['--cycles', str(cycles)]) for rng in mem_dumps: length = rng.stop - rng.start diff --git a/tb/top/conspiracion.cpp b/tb/top/conspiracion.cpp index bd1086a..f222e54 100644 --- a/tb/top/conspiracion.cpp +++ b/tb/top/conspiracion.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -204,7 +205,7 @@ int main(int argc, char **argv) args::ValueFlag cycles ( - parser, "cycles", "Number of core cycles to run", {"cycles"}, 256 + parser, "cycles", "Max number of core cycles to run", {"cycles"}, UINT_MAX ); args::ValueFlag control_fd @@ -446,9 +447,10 @@ int main(int argc, char **argv) }; unsigned i = 0; - while(!failed && i < *cycles) + // Abuse unsigned overflow (cycles is UINT_MAX by default) + while(!failed && i + 1 <= *cycles) { - for(; i < *cycles; ++i) + for(; i + 1 <= *cycles; ++i) { cycle(); if(failed || top.cpu_halted) [[unlikely]] -- cgit v1.2.3