diff options
author | Brad Beckmann ext:(%2C%20Nilay%20Vaish%20%3Cnilay%40cs.wisc.edu%3E) <Brad.Beckmann@amd.com> | 2011-06-30 19:49:26 -0500 |
---|---|---|
committer | Brad Beckmann ext:(%2C%20Nilay%20Vaish%20%3Cnilay%40cs.wisc.edu%3E) <Brad.Beckmann@amd.com> | 2011-06-30 19:49:26 -0500 |
commit | c86f849d5a1da1fc77f2fca43b82cb6760f68bc9 (patch) | |
tree | f192cbc73d86ee4e15e752f6ed174e4ce3425c9e /configs/example | |
parent | f4cfd65d2982f0f97304ef05083b40f3346a496f (diff) | |
download | gem5-c86f849d5a1da1fc77f2fca43b82cb6760f68bc9.tar.xz |
Ruby: Add support for functional accesses
This patch rpovides functional access support in Ruby. Currently only
the M5Port of RubyPort supports functional accesses. The support for
functional through the PioPort will be added as a separate patch.
Diffstat (limited to 'configs/example')
-rw-r--r-- | configs/example/ruby_direct_test.py | 2 | ||||
-rw-r--r-- | configs/example/ruby_fs.py | 5 | ||||
-rw-r--r-- | configs/example/ruby_mem_test.py | 24 | ||||
-rw-r--r-- | configs/example/ruby_network_test.py | 2 | ||||
-rw-r--r-- | configs/example/ruby_random_test.py | 8 | ||||
-rw-r--r-- | configs/example/se.py | 2 |
6 files changed, 28 insertions, 15 deletions
diff --git a/configs/example/ruby_direct_test.py b/configs/example/ruby_direct_test.py index 12585b8d5..55b1c85e6 100644 --- a/configs/example/ruby_direct_test.py +++ b/configs/example/ruby_direct_test.py @@ -97,7 +97,7 @@ system.tester = RubyDirectedTester(requests_to_complete = \ options.requests, generator = generator) -system.ruby = Ruby.create_system(options, system) +Ruby.create_system(options, system) assert(options.num_cpus == len(system.ruby._cpu_ruby_ports)) diff --git a/configs/example/ruby_fs.py b/configs/example/ruby_fs.py index 8c03e14cb..ba4671d6e 100644 --- a/configs/example/ruby_fs.py +++ b/configs/example/ruby_fs.py @@ -117,10 +117,7 @@ elif buildEnv['TARGET_ISA'] == "x86": else: fatal("incapable of building non-alpha or non-x86 full system!") -system.ruby = Ruby.create_system(options, - system, - system.piobus, - system._dma_devices) +Ruby.create_system(options, system, system.piobus, system._dma_devices) system.cpu = [CPUClass(cpu_id=i) for i in xrange(options.num_cpus)] diff --git a/configs/example/ruby_mem_test.py b/configs/example/ruby_mem_test.py index 154164919..684aeffcc 100644 --- a/configs/example/ruby_mem_test.py +++ b/configs/example/ruby_mem_test.py @@ -55,6 +55,10 @@ parser.add_option("--progress", type="int", default=1000, help="Progress message interval " "[default: %default]") parser.add_option("--num-dmas", type="int", default=0, help="# of dma testers") +parser.add_option("--functional", type="int", default=0, + help="percentage of accesses that should be functional") +parser.add_option("--suppress-func-warnings", action="store_true", + help="suppress warnings when functional accesses fail") # # Add the ruby specific and protocol specific options @@ -90,14 +94,15 @@ if options.num_cpus > block_size: sys.exit(1) # -# Currently ruby does not support atomic, functional, or uncacheable accesses +# Currently ruby does not support atomic or uncacheable accesses # cpus = [ MemTest(atomic = False, \ max_loads = options.maxloads, \ issue_dmas = False, \ - percent_functional = 0, \ + percent_functional = options.functional, \ percent_uncacheable = 0, \ - progress_interval = options.progress) \ + progress_interval = options.progress, \ + suppress_func_warnings = options.suppress_func_warnings) \ for i in xrange(options.num_cpus) ] system = System(cpu = cpus, @@ -110,15 +115,14 @@ if options.num_dmas > 0: issue_dmas = True, \ percent_functional = 0, \ percent_uncacheable = 0, \ - progress_interval = options.progress) \ + progress_interval = options.progress, \ + warn_on_failure = options.warn_on_failure) \ for i in xrange(options.num_dmas) ] system.dma_devices = dmas else: dmas = [] -system.ruby = Ruby.create_system(options, \ - system, \ - dma_devices = dmas) +Ruby.create_system(options, system, dma_devices = dmas) # # The tester is most effective when randomization is turned on and @@ -141,6 +145,12 @@ for (i, cpu) in enumerate(cpus): # system.ruby._cpu_ruby_ports[i].deadlock_threshold = 5000000 + # + # Ruby doesn't need the backing image of memory when running with + # the tester. + # + system.ruby._cpu_ruby_ports[i].access_phys_mem = False + for (i, dma) in enumerate(dmas): # # Tie the dma memtester ports to the correct functional port diff --git a/configs/example/ruby_network_test.py b/configs/example/ruby_network_test.py index fb2a642b8..d15206163 100644 --- a/configs/example/ruby_network_test.py +++ b/configs/example/ruby_network_test.py @@ -105,7 +105,7 @@ cpus = [ NetworkTest(fixed_pkts=options.fixed_pkts, \ system = System(cpu = cpus, physmem = PhysicalMemory()) -system.ruby = Ruby.create_system(options, system) +Ruby.create_system(options, system) i = 0 for ruby_port in system.ruby._cpu_ruby_ports: diff --git a/configs/example/ruby_random_test.py b/configs/example/ruby_random_test.py index b60afc192..7655e32fd 100644 --- a/configs/example/ruby_random_test.py +++ b/configs/example/ruby_random_test.py @@ -99,7 +99,7 @@ tester = RubyTester(check_flush = check_flush, # system = System(tester = tester, physmem = PhysicalMemory()) -system.ruby = Ruby.create_system(options, system) +Ruby.create_system(options, system) assert(options.num_cpus == len(system.ruby._cpu_ruby_ports)) @@ -121,6 +121,12 @@ for ruby_port in system.ruby._cpu_ruby_ports: # ruby_port.using_ruby_tester = True + # + # Ruby doesn't need the backing image of memory when running with + # the tester. + # + ruby_port.access_phys_mem = False + # ----------------------- # run simulation # ----------------------- diff --git a/configs/example/se.py b/configs/example/se.py index 9c35f80a0..be7d87bc6 100644 --- a/configs/example/se.py +++ b/configs/example/se.py @@ -177,7 +177,7 @@ system = System(cpu = [CPUClass(cpu_id=i) for i in xrange(np)], if options.ruby: options.use_map = True - system.ruby = Ruby.create_system(options, system) + Ruby.create_system(options, system) assert(options.num_cpus == len(system.ruby._cpu_ruby_ports)) else: system.physmem.port = system.membus.port |