config: add --param to fs.py, se.py and fs_bigLITTLE.py
authorCiro Santilli <ciro.santilli@arm.com>
Thu, 13 Sep 2018 14:11:03 +0000 (15:11 +0100)
committerCiro Santilli <ciro.santilli@arm.com>
Fri, 19 Oct 2018 17:12:35 +0000 (17:12 +0000)
The option allows to set SimObject params from the CLI.

The existing config scripts have a large number of options that simply set
a single SimObject parameter, and many still are not exposed.

This commit allows users to pass arbitrary parameters from the command
line to prevent the need for this kind of trivial option.

Change-Id: Ic4bd36948aca4998d2eaf6369c85d3668efa3944
Reviewed-on: https://gem5-review.googlesource.com/c/12985
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

configs/common/Options.py
configs/common/Simulation.py
configs/example/arm/fs_bigLITTLE.py

index aed8881919e96c4438ec8863f47ae9c5618e816b..c36dc384e4a56bf999467d0014619fe5e68dd9be 100644 (file)
@@ -125,6 +125,14 @@ def addNoISAOptions(parser):
     parser.add_option("--maxtime", type="float", default=None,
                       help="Run to the specified absolute simulated time in "
                       "seconds")
+    parser.add_option("-P", "--param", action="append", default=[],
+        help="Set a SimObject parameter relative to the root node. "
+             "An extended Python multi range slicing syntax can be used "
+             "for arrays. For example: "
+             "'system.cpu[0,1,3:8:2].max_insts_all_threads = 42' "
+             "sets max_insts_all_threads for cpus 0, 1, 3, 5 and 7 "
+             "Direct parameters of the root object are not accessible, "
+             "only parameters of its children.")
 
 # Add common options that assume a non-NULL ISA.
 def addCommonOptions(parser):
index f306a035885609a0277a4182b0bb75f02eac0ee4..23a778397874c7b3ee10a9085dc1fa37f009b34a 100644 (file)
@@ -597,6 +597,7 @@ def run(options, root, testsys, cpu_class):
     checkpoint_dir = None
     if options.checkpoint_restore:
         cpt_starttick, checkpoint_dir = findCptDir(options, cptdir, testsys)
+    root.apply_config(options.param)
     m5.instantiate(checkpoint_dir)
 
     # Initialization is complete.  If we're not in control of simulation
index 7d66c03a6f30dc386d7ed586917c0001623733ba..8cf89e3c782efde28453947936054e11391dcb4d 100644 (file)
@@ -182,6 +182,14 @@ def addOptions(parser):
     parser.add_argument("--sim-quantum", type=str, default="1ms",
                         help="Simulation quantum for parallel simulation. " \
                         "Default: %(default)s")
+    parser.add_argument("-P", "--param", action="append", default=[],
+        help="Set a SimObject parameter relative to the root node. "
+             "An extended Python multi range slicing syntax can be used "
+             "for arrays. For example: "
+             "'system.cpu[0,1,3:8:2].max_insts_all_threads = 42' "
+             "sets max_insts_all_threads for cpus 0, 1, 3, 5 and 7 "
+             "Direct parameters of the root object are not accessible, "
+             "only parameters of its children.")
     return parser
 
 def build(options):
@@ -330,6 +338,7 @@ def main():
     addOptions(parser)
     options = parser.parse_args()
     root = build(options)
+    root.apply_config(options.param)
     instantiate(options)
     run()