Example #1
0
     cur_sys.cf1 = CowIdeDisk(driveID='master')
     cur_sys.cf1.childImage(disk("benchmarks.img"))
     # default to an IDE controller rather than a CF one
     # assuming we've got one
     try:
         cur_sys.realview.ide.disks = [cur_sys.cf0, cur_sys.cf1]
     except:
         cur_sys.realview.cf_ctrl.disks = [cur_sys.cf0, cur_sys.cf1]

     return cur_sys
parser = optparse.OptionParser()
Options.addCommonOptions(parser)
Options.addFSOptions(parser)

# Add the ruby specific and protocol specific options
Ruby.define_options(parser)

(options, args) = parser.parse_args()
options.ruby = True

if args:
    print "Error: script doesn't take any positional arguments"
    sys.exit(1)

if options.benchmark:
    try:
        bm = Benchmarks[options.benchmark]
    except KeyError:
        print "Error benchmark %s has not been defined." % options.benchmark
        print "Valid benchmarks are: %s" % DefinedBenchmarks
        sys.exit(1)
Example #2
0
    for i in xrange(len(drive_sys.mem_ctrls)):
        drive_sys.mem_ctrls[i].port = drive_sys.membus.master

    drive_sys.init_param = options.init_param

    return drive_sys


# Add options
parser = optparse.OptionParser()
Options.addCommonOptions(parser)
Options.addFSOptions(parser)

# Add the ruby specific and protocol specific options
if '--ruby' in sys.argv:
    Ruby.define_options(parser)

(options, args) = parser.parse_args()

if args:
    print "Error: script doesn't take any positional arguments"
    sys.exit(1)

# system under test can be any CPU
(TestCPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)

# Match the memories with the CPUs, based on the options for the test system
TestMemClass = Simulation.setMemClass(options)

if options.benchmark:
    try:
def add_options():
    parser = optparse.OptionParser()
    Options.addCommonOptions(parser)
    Options.addSEOptions(parser)
    parser.add_option("--dramsim2", action="store_true")
    if "--dramsim2" in sys.argv:
        parser.add_option(
            "--devicecfg", type="string", default="", help="device configuration file to be used by DRAMSim2"
        )
        parser.add_option(
            "--systemcfg", type="string", default="", help="system configuration file to be used by DRAMSim2"
        )
        parser.add_option(
            "--tpturnlength", type="string", default="12", help="Turn length for TP. Unused if another scheme is used."
        )
        parser.add_option("--outputfile", type="string", default="", help="output file for DRAMSim results."),
        parser.add_option(
            "--fixaddr", action="store_true", default=False, help="fixed the address mapping of each application"
        )
        parser.add_option(
            "--diffperiod",
            action="store_true",
            default=False,
            help="use different periods for different security domains",
        )
        parser.add_option("--p0period", type="int", default=64, help="period for security domain 0")
        parser.add_option("--p1period", type="int", default=64, help="period for security domain 1")
        parser.add_option("--dramoffset", type="int", default=0, help="dram offset")
        # bus turn length and offset
        parser.add_option("--l2l3req_tl", type="int", default=1, help="l2l3 bus request layer turn length")
        parser.add_option("--l2l3req_offset", type="int", default=0, help="l2l3 bus request layer offset")
        parser.add_option("--l2l3resp_tl", type="int", default=1, help="l2l3 bus response layer turn length")
        parser.add_option("--l2l3resp_offset", type="int", default=0, help="l2l3 bus response layer offset")
        parser.add_option("--membusreq_tl", type="int", default=1, help="membus request layer turn length")
        parser.add_option("--membusreq_offset", type="int", default=0, help="membus request layer offset")
        parser.add_option("--membusresp_tl", type="int", default=1, help="membus response layer turn length")
        parser.add_option("--membusresp_offset", type="int", default=0, help="membus response layer offset")

        parser.add_option("--p0", type="string", help="workload for processor 0."),
        parser.add_option("--p0threadID", type="int", default=0, help="timing compartment id for p0")
        parser.add_option("--p1", type="string", help="workload for processor 1.")
        parser.add_option("--p1threadID", type="int", default=1, help="timing compartment id for p1")
        parser.add_option(
            "--p2", type="string", default='echo "no p2!"', help="workload for processor 2, default is an echo"
        )
        parser.add_option("--p2threadID", type="int", default=2, help="timing compartment id for p2")
        parser.add_option(
            "--p3", type="string", default='echo "no p3!"', help="workload for processor 3, default is an echo"
        )
        parser.add_option("--p3threadID", type="int", default=3, help="timing compartment id for p3")
        parser.add_option("--gentrace", action="store_true", default=False, help="generate the trace for benchmarks.")
        parser.add_option("--numpids", type="int", default=2, help="determine the number of PIDs")
        parser.add_option("--numcpus", type="int", default=None, help="set the number of cpus if different from PIDs")
        parser.add_option("--l3tracefile", type="string", default="l3trace.txt", help="Output file for l3 cache traces")
        parser.add_option("--l2tracefile", type="string", default="l2trace.txt", help="Output file for l2 cache traces")
        parser.add_option(
            "--use_set_part",
            action="store_true",
            default=False,
            help="Determines if the L3 cache should be set partitioned",
        )
        parser.add_option(
            "--use_way_part",
            action="store_true",
            default=False,
            help="Determines if the L3 cache should be way partitioned",
        )
        parser.add_option(
            "--rr_nc", action="store_true", default=False, help="Should a round robin noncoherent bus be used?"
        )
        parser.add_option(
            "--rr_l2l3",
            action="store_true",
            default=False,
            help="Should a round robin noncoherent bus be used for l2l3?",
        )
        parser.add_option(
            "--rr_mem",
            action="store_true",
            default=False,
            help="Should a round robin noncoherent bus be used for membus?",
        )
        parser.add_option(
            "--split_mshr", action="store_true", default=False, help="Determines if L3 has separate MSHR Queues per TC"
        )
        parser.add_option(
            "--split_rport",
            action="store_true",
            default=False,
            help="Determines if L3 has separate Response Port Queues per TC",
        )
        parser.add_option(
            "--do_cache_trace",
            action="store_true",
            default=False,
            help="Determines if cache traces should be saved and reported",
        )
        parser.add_option("--do_bus_trace", action="store_true", default=False, help="Save bus traces or not")
        parser.add_option("--membustracefile", type="string", default="bustrace.txt", help="Output file for bus traces")
        parser.add_option(
            "--l2l3bustracefile", type="string", default="bustrace.txt", help="Output file for bus traces"
        )
        parser.add_option("--do_mem_trace", action="store_true", default=False, help="do memory trace")
        parser.add_option("--mem_trace_file", type="string", default="memtrace.txt", help="memory trace file")
        parser.add_option("--addr_trace", action="store_true", default=False, help="do detailed trace for address")
        parser.add_option("--trace_addr", type="int", default=0, help="address for detailed trace")
        parser.add_option(
            "--nocwf", action="store_true", default=False, help="Enable to turn off critical word first timing"
        )

        (options, args) = parser.parse_args()

        if "--ruby" in sys.argv:
            Ruby.define_options(parser)

        # Number of CPUs
        options.num_cpus = options.numpids if (options.numcpus == None) else options.numcpus

        # Allow rr_nc to apply rr to both buses
        if options.rr_nc:
            options.rr_l2l3 = True
            options.rr_mem = True

        if args:
            print "Error: script doesn't take any positional arguments"
            sys.exit(1)
        return options
def add_options():
    parser = optparse.OptionParser()
    Options.addCommonOptions(parser)
    Options.addSEOptions(parser)
    parser.add_option("--dramsim2", action="store_true")
    if '--dramsim2' in sys.argv:
        parser.add_option("--devicecfg", type="string", default="",
                help="device configuration file to be used by DRAMSim2")
        parser.add_option("--systemcfg", type="string", default="", 
                help="system configuration file to be used by DRAMSim2")
        parser.add_option("--tpturnlength", type="string", default="12",
                help="Turn length for TP. Unused if another scheme is used.")
        parser.add_option("--outputfile", type="string", default="",
                help="output file for DRAMSim results."),
        parser.add_option("--fixaddr", action="store_true", default=False,
        		help="fixed the address mapping of each application")
        parser.add_option("--diffperiod", action="store_true", default=False,
        		help="use different periods for different security domains")
        parser.add_option("--p0period", type="int", default=64,
        		help="period for security domain 0")
        parser.add_option("--p1period", type="int", default=64,
        		help="period for security domain 1")
        parser.add_option("--dramoffset", type="int", default=0,
        		help="dram offset")
        # bus turn length and offset
        parser.add_option("--l2l3req_tl", type="int", default=1,
                help="l2l3 bus request layer turn length")
        parser.add_option("--l2l3req_offset", type="int", default=0,
                help="l2l3 bus request layer offset")
        parser.add_option("--l2l3resp_tl", type="int", default=1,
                help="l2l3 bus response layer turn length")
        parser.add_option("--l2l3resp_offset", type="int", default=0,
                help="l2l3 bus response layer offset")
        parser.add_option("--membusreq_tl", type="int", default=1,
                help="membus request layer turn length")
        parser.add_option("--membusreq_offset", type="int", default=0,
                help="membus request layer offset")
        parser.add_option("--membusresp_tl", type="int", default=1,
                help="membus response layer turn length")
        parser.add_option("--membusresp_offset", type="int", default=0,
                help="membus response layer offset")

        for i in range(8):
            parser.add_option("--p{0}".format(i), type="string",
                    help="workload number n")
            parser.add_option("--p{0}threadID".format(i), type="int", default=i,
                    help="timing compartment id for p{0}".format(i))
                
        parser.add_option("--gentrace", action="store_true", default=False,
                help="generate the trace for benchmarks.")
        parser.add_option("--numpids", type="int", default=2,
                help="determine the number of PIDs")
        parser.add_option("--numcpus", type="int", default=None,
                help="set the number of cpus")
        parser.add_option("--l3tracefile", type="string", default="l3trace.txt",
                help="Output file for l3 cache traces")
        parser.add_option("--l2tracefile", type="string", default="l2trace.txt",
                help="Output file for l2 cache traces")
        parser.add_option("--use_set_part", action="store_true", default=False,
                help="Determines if the L3 cache should be set partitioned")
        parser.add_option("--use_way_part", action="store_true", default=False,
                help="Determines if the L3 cache should be way partitioned")
        parser.add_option("--rr_nc", action="store_true", default=False,
                help="Should a round robin noncoherent bus be used?" )
        parser.add_option("--rr_l2l3", action="store_true", default=False,
                help="Should a round robin noncoherent bus be used for l2l3?" )
        parser.add_option("--rr_mem", action="store_true", default=False,
                help="Should a round robin noncoherent bus be used for membus?" )
        parser.add_option("--split_mshr", action="store_true", default=False,
                help="Determines if L3 has separate MSHR Queues per TC")
        parser.add_option("--split_rport", action="store_true", default=False,
                help="Determines if L3 has separate Response Port Queues per TC")
        parser.add_option("--do_cache_trace", action="store_true", default=False,
                help="Determines if cache traces should be saved and reported")
        parser.add_option("--do_bus_trace", action="store_true", default=False,
                help="Save bus traces or not" )
        parser.add_option("--membustracefile", type="string", default="bustrace.txt",
                help="Output file for bus traces")
        parser.add_option("--l2l3bustracefile", type="string", default="bustrace.txt",
                help="Output file for bus traces")
        parser.add_option("--do_mem_trace", action="store_true", default=False,
                help= "do memory trace" )
        parser.add_option("--mem_trace_file", type="string", default="memtrace.txt",
                help="memory trace file")
        parser.add_option("--addr_trace", action="store_true", default=False,
                help="do detailed trace for address")
        parser.add_option("--trace_addr", type="int", default=0,
                help="address for detailed trace")
        parser.add_option("--nocwf", action="store_true", default=False,
                help="Enable to turn off critical word first timing")

        parser.add_option("--do_flush", action="store_true", default=False,
                help="Flush the cache occasionally to model context switching.")
        parser.add_option("--flushRatio", type="float", default=1,
                help="flusing ratio of the insecure cache.")
        parser.add_option("--reserve_flush", action="store_true", default=False,
                help="reserve bandwidth when flushing.")
        parser.add_option("--context_sw_freq", type="int", default=1000,
                help="Frequency of context switches in us.")

        parser.add_option("--bank_part", action="store_true", default=False,
                help = "use bank partitioning")

        (options, args) = parser.parse_args()

        if '--ruby' in sys.argv:
            Ruby.define_options(parser)

        #Allow rr_nc to apply rr to both buses
        if options.rr_nc :
            options.rr_l2l3 = True 
            options.rr_mem  = True

        options.num_cpus = ( options.numpids if (options.numcpus == None)
            else options.numcpus )

        if args:
            print "Error: script doesn't take any positional arguments"
            sys.exit(1)
        return options