diff --git a/src/sim/simulate.cc b/src/sim/simulate.cc --- a/src/sim/simulate.cc +++ b/src/sim/simulate.cc @@ -51,10 +51,10 @@ if (num_cycles < 0) fatal("simulate: num_cycles must be >= 0 (was %d)\n", num_cycles); - else if (curTick() + num_cycles < 0) //Overflow + else if (num cycles < MaxTick - curTick()) + num_cycles = curTick() + num_cycles; + else //counter would roll over or, be set to MaxTick anyhow num_cycles = MaxTick; - else - num_cycles = curTick() + num_cycles; Event *limit_event = new SimLoopExitEvent("simulate() limit reached", 0);