X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configs%2Fcommon%2FOptions.py;h=cb9fc49881d3ed2acd9af21dc7d62b320623afd7;hb=1bb293d1e7a27e306ca584a3922f2fd13481e248;hp=d89023082d458080b20fe9f6f59daeaee37186cf;hpb=b40af2328a254b109a08327475bb8f2aa906399b;p=gem5.git diff --git a/configs/common/Options.py b/configs/common/Options.py index d89023082..cb9fc4988 100644 --- a/configs/common/Options.py +++ b/configs/common/Options.py @@ -1,4 +1,16 @@ -# Copyright (c) 2006 The Regents of The University of Michigan +# Copyright (c) 2013 ARM Limited +# All rights reserved. +# +# The license below extends only to copyright in the software and shall +# not be construed as granting a license to any other intellectual +# property including but not limited to intellectual property relating +# to a hardware implementation of the functionality of the software +# licensed hereunder. You may use the software subject to the license +# terms below provided that you ensure that this notice is replicated +# unmodified and in its entirety in all distributions of the software, +# modified or unmodified, in source code or in binary form. +# +# Copyright (c) 2006-2008 The Regents of The University of Michigan # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -26,33 +38,213 @@ # # Authors: Lisa Hsu -# system options -parser.add_option("-d", "--detailed", action="store_true") -parser.add_option("-t", "--timing", action="store_true") -parser.add_option("-n", "--num_cpus", type="int", default=1) -parser.add_option("--caches", action="store_true") - -# Run duration options -parser.add_option("-m", "--maxtick", type="int") -parser.add_option("--maxtime", type="float") - -# Checkpointing options -###Note that performing checkpointing via python script files will override -###checkpoint instructions built into binaries. -parser.add_option("--take_checkpoints", action="store", type="string", - help=" will take checkpoint at cycle M and every N cycles \ - thereafter") -parser.add_option("--max_checkpoints", action="store", type="int", - help="the maximum number of checkpoints to drop", - default=5) -parser.add_option("--checkpoint_dir", action="store", type="string", - help="Place all checkpoints in this absolute directory") -parser.add_option("-r", "--checkpoint_restore", action="store", type="int", - help="restore from checkpoint ") - -# CPU Switching - default switch model goes from a checkpoint -# to a timing simple CPU with caches to warm up, then to detailed CPU for -# data measurement -parser.add_option("-s", "--standard_switch", action="store", type="int", - help="switch from timing CPU to Detailed CPU after a period of \ - cycles warmup", default=5000000000) +import m5 +from m5.defines import buildEnv +from m5.objects import * +from Benchmarks import * + +import CpuConfig +import MemConfig + +def _listCpuTypes(option, opt, value, parser): + CpuConfig.print_cpu_list() + sys.exit(0) + +def _listMemTypes(option, opt, value, parser): + MemConfig.print_mem_list() + sys.exit(0) + +def addCommonOptions(parser): + # system options + parser.add_option("--list-cpu-types", + action="callback", callback=_listCpuTypes, + help="List available CPU types") + parser.add_option("--cpu-type", type="choice", default="atomic", + choices=CpuConfig.cpu_names(), + help = "type of cpu to run with") + parser.add_option("--checker", action="store_true"); + parser.add_option("-n", "--num-cpus", type="int", default=1) + parser.add_option("--sys-voltage", action="store", type="string", + default='1.0V', + help = """Top-level voltage for blocks running at system + power supply""") + parser.add_option("--sys-clock", action="store", type="string", + default='1GHz', + help = """Top-level clock for blocks running at system + speed""") + parser.add_option("--cpu-clock", action="store", type="string", + default='2GHz', + help="Clock for blocks running at CPU speed") + parser.add_option("--smt", action="store_true", default=False, + help = """ + Only used if multiple programs are specified. If true, + then the number of threads per cpu is same as the + number of programs.""") + + # Memory Options + parser.add_option("--list-mem-types", + action="callback", callback=_listMemTypes, + help="List available memory types") + parser.add_option("--mem-type", type="choice", default="simple_mem", + choices=MemConfig.mem_names(), + help = "type of memory to use") + parser.add_option("--mem-channels", type="int", default=1, + help = "number of memory channels") + parser.add_option("--mem-size", action="store", type="string", + default="512MB", + help="Specify the physical memory size (single memory)") + + # Cache Options + parser.add_option("--caches", action="store_true") + parser.add_option("--l2cache", action="store_true") + parser.add_option("--fastmem", action="store_true") + parser.add_option("--num-dirs", type="int", default=1) + parser.add_option("--num-l2caches", type="int", default=1) + parser.add_option("--num-l3caches", type="int", default=1) + parser.add_option("--l1d_size", type="string", default="64kB") + parser.add_option("--l1i_size", type="string", default="32kB") + parser.add_option("--l2_size", type="string", default="2MB") + parser.add_option("--l3_size", type="string", default="16MB") + parser.add_option("--l1d_assoc", type="int", default=2) + parser.add_option("--l1i_assoc", type="int", default=2) + parser.add_option("--l2_assoc", type="int", default=8) + parser.add_option("--l3_assoc", type="int", default=16) + parser.add_option("--cacheline_size", type="int", default=64) + + # Enable Ruby + parser.add_option("--ruby", action="store_true") + + # Run duration options + parser.add_option("-m", "--abs-max-tick", type="int", default=m5.MaxTick, + metavar="TICKS", help="Run to absolute simulated tick " \ + "specified including ticks from a restored checkpoint") + parser.add_option("--rel-max-tick", type="int", default=None, + metavar="TICKS", help="Simulate for specified number of" \ + " ticks relative to the simulation start tick (e.g. if " \ + "restoring a checkpoint)") + parser.add_option("--maxtime", type="float", default=None, + help="Run to the specified absolute simulated time in " \ + "seconds") + parser.add_option("-I", "--maxinsts", action="store", type="int", + default=None, help="""Total number of instructions to + simulate (default: run forever)""") + parser.add_option("--work-item-id", action="store", type="int", + help="the specific work id for exit & checkpointing") + parser.add_option("--work-begin-cpu-id-exit", action="store", type="int", + help="exit when work starts on the specified cpu") + parser.add_option("--work-end-exit-count", action="store", type="int", + help="exit at specified work end count") + parser.add_option("--work-begin-exit-count", action="store", type="int", + help="exit at specified work begin count") + parser.add_option("--init-param", action="store", type="int", default=0, + help="""Parameter available in simulation with m5 + initparam""") + + # Simpoint options + parser.add_option("--simpoint-profile", action="store_true", + help="Enable basic block profiling for SimPoints") + parser.add_option("--simpoint-interval", type="int", default=10000000, + help="SimPoint interval in num of instructions") + + # Checkpointing options + ###Note that performing checkpointing via python script files will override + ###checkpoint instructions built into binaries. + parser.add_option("--take-checkpoints", action="store", type="string", + help=" take checkpoints at tick M and every N ticks thereafter") + parser.add_option("--max-checkpoints", action="store", type="int", + help="the maximum number of checkpoints to drop", default=5) + parser.add_option("--checkpoint-dir", action="store", type="string", + help="Place all checkpoints in this absolute directory") + parser.add_option("-r", "--checkpoint-restore", action="store", type="int", + help="restore from checkpoint ") + parser.add_option("--checkpoint-at-end", action="store_true", + help="take a checkpoint at end of run") + parser.add_option("--work-begin-checkpoint-count", action="store", type="int", + help="checkpoint at specified work begin count") + parser.add_option("--work-end-checkpoint-count", action="store", type="int", + help="checkpoint at specified work end count") + parser.add_option("--work-cpus-checkpoint-count", action="store", type="int", + help="checkpoint and exit when active cpu count is reached") + parser.add_option("--restore-with-cpu", action="store", type="choice", + default="atomic", choices=CpuConfig.cpu_names(), + help = "cpu type for restoring from a checkpoint") + + + # CPU Switching - default switch model goes from a checkpoint + # to a timing simple CPU with caches to warm up, then to detailed CPU for + # data measurement + parser.add_option("--repeat-switch", action="store", type="int", + default=None, + help="switch back and forth between CPUs with period ") + parser.add_option("-s", "--standard-switch", action="store", type="int", + default=None, + help="switch from timing to Detailed CPU after warmup period of ") + parser.add_option("-p", "--prog-interval", type="str", + help="CPU Progress Interval") + + # Fastforwarding and simpoint related materials + parser.add_option("-W", "--warmup-insts", action="store", type="int", + default=None, + help="Warmup period in total instructions (requires --standard-switch)") + parser.add_option("--bench", action="store", type="string", default=None, + help="base names for --take-checkpoint and --checkpoint-restore") + parser.add_option("-F", "--fast-forward", action="store", type="string", + default=None, + help="Number of instructions to fast forward before switching") + parser.add_option("-S", "--simpoint", action="store_true", default=False, + help="""Use workload simpoints as an instruction offset for + --checkpoint-restore or --take-checkpoint.""") + parser.add_option("--at-instruction", action="store_true", default=False, + help="""Treat value of --checkpoint-restore or --take-checkpoint as a + number of instructions.""") + +def addSEOptions(parser): + # Benchmark options + parser.add_option("-c", "--cmd", default="", + help="The binary to run in syscall emulation mode.") + parser.add_option("-o", "--options", default="", + help="""The options to pass to the binary, use " " + around the entire string""") + parser.add_option("-i", "--input", default="", + help="Read stdin from a file.") + parser.add_option("--output", default="", + help="Redirect stdout to a file.") + parser.add_option("--errout", default="", + help="Redirect stderr to a file.") + +def addFSOptions(parser): + # Simulation options + parser.add_option("--timesync", action="store_true", + help="Prevent simulated time from getting ahead of real time") + + # System options + parser.add_option("--kernel", action="store", type="string") + parser.add_option("--script", action="store", type="string") + parser.add_option("--frame-capture", action="store_true", + help="Stores changed frame buffers from the VNC server to compressed "\ + "files in the gem5 output directory") + + if buildEnv['TARGET_ISA'] == "arm": + parser.add_option("--bare-metal", action="store_true", + help="Provide the raw system without the linux specific bits") + parser.add_option("--machine-type", action="store", type="choice", + choices=ArmMachineType.map.keys(), default="RealView_PBX") + parser.add_option("--dtb-filename", action="store", type="string", + help="Specifies device tree blob file to use with device-tree-"\ + "enabled kernels") + # Benchmark options + parser.add_option("--dual", action="store_true", + help="Simulate two systems attached with an ethernet link") + parser.add_option("-b", "--benchmark", action="store", type="string", + dest="benchmark", + help="Specify the benchmark to run. Available benchmarks: %s"\ + % DefinedBenchmarks) + + # Metafile options + parser.add_option("--etherdump", action="store", type="string", dest="etherdump", + help="Specify the filename to dump a pcap capture of the" \ + "ethernet traffic") + + # Disk Image Options + parser.add_option("--disk-image", action="store", type="string", default=None, + help="Path to the disk image to use.")