se.py: Changes to ruby portion due to SE/FS merge
With the SE/FS merge, interrupt controller is created irrespective of the mode. This patch creates the interrupt controller when Ruby is used and connects its ports.
This commit is contained in:
parent
98185658c5
commit
bb7be54d73
1 changed files with 17 additions and 10 deletions
|
@ -160,11 +160,6 @@ if options.cpu_type == "detailed" or options.cpu_type == "inorder":
|
||||||
smt_idx += 1
|
smt_idx += 1
|
||||||
numThreads = len(workloads)
|
numThreads = len(workloads)
|
||||||
|
|
||||||
if options.ruby:
|
|
||||||
if not (options.cpu_type == "detailed" or options.cpu_type == "timing"):
|
|
||||||
print >> sys.stderr, "Ruby requires TimingSimpleCPU or O3CPU!!"
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
(CPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)
|
(CPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)
|
||||||
CPUClass.clock = '2GHz'
|
CPUClass.clock = '2GHz'
|
||||||
CPUClass.numThreads = numThreads;
|
CPUClass.numThreads = numThreads;
|
||||||
|
@ -178,10 +173,6 @@ system = System(cpu = [CPUClass(cpu_id=i) for i in xrange(np)],
|
||||||
for i in xrange(np):
|
for i in xrange(np):
|
||||||
system.cpu[i].workload = multiprocesses[i]
|
system.cpu[i].workload = multiprocesses[i]
|
||||||
|
|
||||||
if options.ruby:
|
|
||||||
system.cpu[i].icache_port = system.ruby._cpu_ruby_ports[i].slave
|
|
||||||
system.cpu[i].dcache_port = system.ruby._cpu_ruby_ports[i].slave
|
|
||||||
|
|
||||||
if options.fastmem:
|
if options.fastmem:
|
||||||
system.cpu[0].physmem_port = system.physmem.port
|
system.cpu[0].physmem_port = system.physmem.port
|
||||||
|
|
||||||
|
@ -189,14 +180,30 @@ for i in xrange(np):
|
||||||
system.cpu[i].addCheckerCpu()
|
system.cpu[i].addCheckerCpu()
|
||||||
|
|
||||||
if options.ruby:
|
if options.ruby:
|
||||||
|
if not (options.cpu_type == "detailed" or options.cpu_type == "timing"):
|
||||||
|
print >> sys.stderr, "Ruby requires TimingSimpleCPU or O3CPU!!"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
options.use_map = True
|
options.use_map = True
|
||||||
Ruby.create_system(options, system)
|
Ruby.create_system(options, system)
|
||||||
assert(options.num_cpus == len(system.ruby._cpu_ruby_ports))
|
assert(options.num_cpus == len(system.ruby._cpu_ruby_ports))
|
||||||
|
|
||||||
|
for i in xrange(np):
|
||||||
|
ruby_port = system.ruby._cpu_ruby_ports[i]
|
||||||
|
|
||||||
|
# Create the interrupt controller and connect its ports to Ruby
|
||||||
|
system.cpu[i].createInterruptController()
|
||||||
|
system.cpu[i].interrupts.pio = ruby_port.master
|
||||||
|
system.cpu[i].interrupts.int_master = ruby_port.slave
|
||||||
|
system.cpu[i].interrupts.int_slave = ruby_port.master
|
||||||
|
|
||||||
|
# Connect the cpu's cache ports to Ruby
|
||||||
|
system.cpu[i].icache_port = ruby_port.slave
|
||||||
|
system.cpu[i].dcache_port = ruby_port.slave
|
||||||
else:
|
else:
|
||||||
system.system_port = system.membus.slave
|
system.system_port = system.membus.slave
|
||||||
system.physmem.port = system.membus.master
|
system.physmem.port = system.membus.master
|
||||||
CacheConfig.config_cache(options, system)
|
CacheConfig.config_cache(options, system)
|
||||||
|
|
||||||
root = Root(full_system = False, system = system)
|
root = Root(full_system = False, system = system)
|
||||||
|
|
||||||
Simulation.run(options, root, system, FutureClass)
|
Simulation.run(options, root, system, FutureClass)
|
||||||
|
|
Loading…
Reference in a new issue