simplify maxtick parsing in both the python and the c++.
authorLisa Hsu <hsul@eecs.umich.edu>
Wed, 8 Nov 2006 20:05:23 +0000 (15:05 -0500)
committerLisa Hsu <hsul@eecs.umich.edu>
Wed, 8 Nov 2006 20:05:23 +0000 (15:05 -0500)
configs/common/Simulation.py:
    simplify maxtick code a little bit - instead of checking for -1, just set it at MaxTick.
src/python/m5/__init__.py:
    make a new m5 param called MaxTick.
src/sim/host.hh:
    fix the M5 def. of MaxTick
src/sim/main.cc:
    Simplify the MaxTick/num_cycles parsing within main.cc

--HG--
extra : convert_revision : f800addfbc1323591c2e05b892276b439b671668

configs/common/Simulation.py
src/python/m5/__init__.py
src/sim/host.hh
src/sim/main.cc

index afa147537da5c62f0ea1242cef4edb2d5c1173bf..a67159a502766f14a11bad819743cc2d82de21ff 100644 (file)
@@ -65,7 +65,7 @@ def run(options, root, testsys, cpu_class):
         print "simulating for: ", simtime
         maxtick = simtime
     else:
-        maxtick = -1
+        maxtick = m5.MaxTick
 
     if options.checkpoint_dir:
         cptdir = options.checkpoint_dir
@@ -191,7 +191,7 @@ def run(options, root, testsys, cpu_class):
         sim_ticks = when
         exit_cause = "maximum %d checkpoints dropped" % max_checkpoints
         while num_checkpoints < max_checkpoints:
-            if (sim_ticks + period) > maxtick and maxtick != -1:
+            if (sim_ticks + period) > maxtick:
                 exit_event = m5.simulate(maxtick - sim_ticks)
                 exit_cause = exit_event.getCause()
                 break
@@ -214,11 +214,7 @@ def run(options, root, testsys, cpu_class):
                 exit_cause =  "maximum %d checkpoints dropped" % max_checkpoints
                 break
 
-            if maxtick == -1:
-                exit_event = m5.simulate(maxtick)
-            else:
-                exit_event = m5.simulate(maxtick - m5.curTick())
-
+            exit_event = m5.simulate(maxtick - m5.curTick())
             exit_cause = exit_event.getCause()
 
     if exit_cause == '':
index 42abfe2cc57c6dc357577b9209a94476475f667e..579562b38e17a5737c4eb133e2f4ead86c691ef2 100644 (file)
@@ -39,6 +39,9 @@ from cc_main import simulate, SimLoopExitEvent
 # import the m5 compile options
 import defines
 
+# define a MaxTick parameter
+MaxTick = 2**63 - 1
+
 # define this here so we can use it right away if necessary
 def panic(string):
     print >>sys.stderr, 'panic:', string
index 9c79580b1ff73d5bf4b0170fca05bf19c4872296..a2faa206bfa060308cdda75e7e35d4766659743e 100644 (file)
@@ -56,7 +56,7 @@ typedef int64_t Counter;
  */
 typedef int64_t Tick;
 
-const Tick MaxTick = (1LL << 62);
+const Tick MaxTick = (1LL << 63) - 1;
 
 /**
  * Address type
index 133141e572f497e9ebe0d687d5a56579bbbbe0c3..5b44102a825a622192b46d5fdc8a2298a6009cb6 100644 (file)
@@ -309,18 +309,14 @@ finalInit()
  * @return The SimLoopExitEvent that caused the loop to exit.
  */
 SimLoopExitEvent *
-simulate(Tick num_cycles = -1)
+simulate(Tick num_cycles = MaxTick)
 {
     warn("Entering event queue @ %d.  Starting simulation...\n", curTick);
 
-    // Fix up num_cycles.  Special default value -1 means simulate
-    // "forever"... schedule event at MaxTick just to be safe.
-    // Otherwise it's a delta for additional cycles to simulate past
-    // curTick, and thus must be non-negative.
-    if (num_cycles == -1)
-        num_cycles = MaxTick;
-    else if (num_cycles < 0)
+    if (num_cycles < 0)
         fatal("simulate: num_cycles must be >= 0 (was %d)\n", num_cycles);
+    else if (curTick + num_cycles < 0)  //Overflow
+        num_cycles = MaxTick;
     else
         num_cycles = curTick + num_cycles;