Config: corrects the way Ruby attaches to the DMA ports
With recent changes to the memory system, a port cannot be assigned a peer port twice. While making use of the Ruby memory system in FS mode, DMA ports were assigned peer twice, once for the classic memory system and once for the Ruby memory system. This patch removes this double assignment of peer ports.
This commit is contained in:
@@ -47,7 +47,7 @@ class L2Cache(RubyCache):
|
||||
def define_options(parser):
|
||||
return
|
||||
|
||||
def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
def create_system(options, system, piobus, dma_ports, ruby_system):
|
||||
|
||||
if buildEnv['PROTOCOL'] != 'MESI_CMP_directory':
|
||||
panic("This script requires the MESI_CMP_directory protocol to be built.")
|
||||
@@ -162,7 +162,7 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
for i, dma_device in enumerate(dma_devices):
|
||||
for i, dma_port in enumerate(dma_ports):
|
||||
#
|
||||
# Create the Ruby objects associated with the dma controller
|
||||
#
|
||||
@@ -175,12 +175,8 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
ruby_system = ruby_system)
|
||||
|
||||
exec("system.dma_cntrl%d = dma_cntrl" % i)
|
||||
if dma_device.type == 'MemTest':
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.test" % i)
|
||||
else:
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.dma" % i)
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_port" % i)
|
||||
dma_cntrl_nodes.append(dma_cntrl)
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
all_cntrls = l1_cntrl_nodes + \
|
||||
|
||||
@@ -41,7 +41,7 @@ class Cache(RubyCache):
|
||||
def define_options(parser):
|
||||
return
|
||||
|
||||
def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
def create_system(options, system, piobus, dma_ports, ruby_system):
|
||||
|
||||
if buildEnv['PROTOCOL'] != 'MI_example':
|
||||
panic("This script requires the MI_example protocol to be built.")
|
||||
@@ -135,7 +135,7 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
for i, dma_device in enumerate(dma_devices):
|
||||
for i, dma_port in enumerate(dma_ports):
|
||||
#
|
||||
# Create the Ruby objects associated with the dma controller
|
||||
#
|
||||
@@ -148,13 +148,8 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
ruby_system = ruby_system)
|
||||
|
||||
exec("system.dma_cntrl%d = dma_cntrl" % i)
|
||||
if dma_device.type == 'MemTest':
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.test" % i)
|
||||
else:
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.dma" % i)
|
||||
dma_cntrl.dma_sequencer.slave = dma_device.dma
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_port" % i)
|
||||
dma_cntrl_nodes.append(dma_cntrl)
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
all_cntrls = l1_cntrl_nodes + dir_cntrl_nodes + dma_cntrl_nodes
|
||||
|
||||
@@ -47,7 +47,7 @@ class L2Cache(RubyCache):
|
||||
def define_options(parser):
|
||||
return
|
||||
|
||||
def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
def create_system(options, system, piobus, dma_ports, ruby_system):
|
||||
|
||||
if buildEnv['PROTOCOL'] != 'MOESI_CMP_directory':
|
||||
panic("This script requires the MOESI_CMP_directory protocol to be built.")
|
||||
@@ -159,7 +159,7 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
for i, dma_device in enumerate(dma_devices):
|
||||
for i, dma_port in enumerate(dma_ports):
|
||||
#
|
||||
# Create the Ruby objects associated with the dma controller
|
||||
#
|
||||
@@ -172,12 +172,8 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
ruby_system = ruby_system)
|
||||
|
||||
exec("system.dma_cntrl%d = dma_cntrl" % i)
|
||||
if dma_device.type == 'MemTest':
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.test" % i)
|
||||
else:
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.dma" % i)
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_port" % i)
|
||||
dma_cntrl_nodes.append(dma_cntrl)
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
all_cntrls = l1_cntrl_nodes + \
|
||||
|
||||
@@ -54,7 +54,7 @@ def define_options(parser):
|
||||
parser.add_option("--allow-atomic-migration", action="store_true",
|
||||
help="allow migratory sharing for atomic only accessed blocks")
|
||||
|
||||
def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
def create_system(options, system, piobus, dma_ports, ruby_system):
|
||||
|
||||
if buildEnv['PROTOCOL'] != 'MOESI_CMP_token':
|
||||
panic("This script requires the MOESI_CMP_token protocol to be built.")
|
||||
@@ -183,7 +183,7 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
for i, dma_device in enumerate(dma_devices):
|
||||
for i, dma_port in enumerate(dma_ports):
|
||||
#
|
||||
# Create the Ruby objects associated with the dma controller
|
||||
#
|
||||
@@ -196,12 +196,8 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
ruby_system = ruby_system)
|
||||
|
||||
exec("system.dma_cntrl%d = dma_cntrl" % i)
|
||||
if dma_device.type == 'MemTest':
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.test" % i)
|
||||
else:
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.dma" % i)
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_port" % i)
|
||||
dma_cntrl_nodes.append(dma_cntrl)
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
all_cntrls = l1_cntrl_nodes + \
|
||||
|
||||
@@ -58,7 +58,7 @@ def define_options(parser):
|
||||
parser.add_option("--dir-on", action="store_true",
|
||||
help="Hammer: enable Full-bit Directory")
|
||||
|
||||
def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
def create_system(options, system, piobus, dma_ports, ruby_system):
|
||||
|
||||
if buildEnv['PROTOCOL'] != 'MOESI_hammer':
|
||||
panic("This script requires the MOESI_hammer protocol to be built.")
|
||||
@@ -195,7 +195,7 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
|
||||
cntrl_count += 1
|
||||
|
||||
for i, dma_device in enumerate(dma_devices):
|
||||
for i, dma_port in enumerate(dma_ports):
|
||||
#
|
||||
# Create the Ruby objects associated with the dma controller
|
||||
#
|
||||
@@ -208,10 +208,7 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
ruby_system = ruby_system)
|
||||
|
||||
exec("system.dma_cntrl%d = dma_cntrl" % i)
|
||||
if dma_device.type == 'MemTest':
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.test" % i)
|
||||
else:
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_device.dma" % i)
|
||||
exec("system.dma_cntrl%d.dma_sequencer.slave = dma_port" % i)
|
||||
dma_cntrl_nodes.append(dma_cntrl)
|
||||
|
||||
if options.recycle_latency:
|
||||
|
||||
@@ -41,7 +41,7 @@ class Cache(RubyCache):
|
||||
def define_options(parser):
|
||||
return
|
||||
|
||||
def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
def create_system(options, system, piobus, dma_ports, ruby_system):
|
||||
|
||||
if buildEnv['PROTOCOL'] != 'Network_test':
|
||||
panic("This script requires the Network_test protocol to be built.")
|
||||
@@ -52,7 +52,7 @@ def create_system(options, system, piobus, dma_devices, ruby_system):
|
||||
# The Garnet tester protocol does not support fs nor dma
|
||||
#
|
||||
assert(piobus == None)
|
||||
assert(dma_devices == [])
|
||||
assert(dma_ports == [])
|
||||
|
||||
#
|
||||
# The ruby network creation expects the list of nodes in the system to be
|
||||
|
||||
@@ -76,7 +76,7 @@ def define_options(parser):
|
||||
exec "import %s" % protocol
|
||||
eval("%s.define_options(parser)" % protocol)
|
||||
|
||||
def create_system(options, system, piobus = None, dma_devices = []):
|
||||
def create_system(options, system, piobus = None, dma_ports = []):
|
||||
|
||||
system.ruby = RubySystem(clock = options.clock,
|
||||
stats_filename = options.ruby_stats,
|
||||
@@ -87,8 +87,7 @@ def create_system(options, system, piobus = None, dma_devices = []):
|
||||
exec "import %s" % protocol
|
||||
try:
|
||||
(cpu_sequencers, dir_cntrls, all_cntrls) = \
|
||||
eval("%s.create_system(options, system, piobus, \
|
||||
dma_devices, ruby)" \
|
||||
eval("%s.create_system(options, system, piobus, dma_ports, ruby)"
|
||||
% protocol)
|
||||
except:
|
||||
print "Error: could not create sytem for ruby protocol %s" % protocol
|
||||
|
||||
Reference in New Issue
Block a user