config: Add ability to exit simulation after initialization
authorCurtis Dunham <Curtis.Dunham@arm.com>
Mon, 23 Mar 2015 10:57:38 +0000 (06:57 -0400)
committerCurtis Dunham <Curtis.Dunham@arm.com>
Mon, 23 Mar 2015 10:57:38 +0000 (06:57 -0400)
When using gem5 as a slave simulator, it will not advance the
clock on its own and depends on the master simulator calling
simulate(). This new option lets us use the Python scripts
to do all the configuration while stopping short of actually
simulating anything.

configs/common/Options.py
configs/common/Simulation.py

index 4cf1e6c5ae2a0cc664fd5bbdd0fc5844d8400fd4..f110f7dfb50965e7ca5da3a757a94e86f79b3741 100644 (file)
@@ -150,6 +150,9 @@ def addCommonOptions(parser):
     parser.add_option("--init-param", action="store", type="int", default=0,
                       help="""Parameter available in simulation with m5
                               initparam""")
+    parser.add_option("--initialize-only", action="store_true", default=False,
+                      help="""Exit after initialization. Do not simulate time.
+                              Useful when gem5 is run as a library.""")
 
     # Simpoint options
     parser.add_option("--simpoint-profile", action="store_true",
index 72d3d0e97f72fd81c35ef5d74281783ae6294786..230701c236f7302ffd1fdb566379f1e04b590e43 100644 (file)
@@ -581,6 +581,13 @@ def run(options, root, testsys, cpu_class):
         cpt_starttick, checkpoint_dir = findCptDir(options, cptdir, testsys)
     m5.instantiate(checkpoint_dir)
 
+    # Initialization is complete.  If we're not in control of simulation
+    # (that is, if we're a slave simulator acting as a component in another
+    #  'master' simulator) then we're done here.  The other simulator will
+    # call simulate() directly. --initialize-only is used to indicate this.
+    if options.initialize_only:
+        return
+
     # Handle the max tick settings now that tick frequency was resolved
     # during system instantiation
     # NOTE: the maxtick variable here is in absolute ticks, so it must