gem5/util/cpt_upgraders/etherswitch.py
Mohammad Alian e5b7b6780f dist, dev: Fixed the packet ordering in etherswitch
This patch fixes the order that packets gets pushed into the output fifo
of etherswitch. If two packets arrive at the same tick to the etherswitch,
we sort and push them based on their source port id.
In dist-gem5 simulations, if there is no ordering inforced while two
packets arrive at the same tick, it can lead to non-deterministic simulations

Committed by Jason Lowe-Power <power.jg@gmail.com>
2016-06-08 09:12:41 -05:00

21 lines
975 B
Python

def upgrader(cpt):
for sec in cpt.sections():
if sec == "system":
options = cpt.items(sec)
for it in options:
opt_split = it[0].split('.')
new_sec_name = opt_split[1]
old_opt_name = opt_split[len(opt_split) - 1]
if "outputFifo" in new_sec_name:
new_sec_name = new_sec_name.rstrip("outputFifo")
new_sec_name += ".outputFifo"
new_sec_name = "system.system.%s" %(new_sec_name)
if not cpt.has_section(new_sec_name):
cpt.add_section(new_sec_name)
if old_opt_name == "size":
cpt.set(new_sec_name, "_size", it[1])
elif old_opt_name == "packets":
cpt.set(new_sec_name, "fifosize", it[1])
else:
cpt.set(new_sec_name, old_opt_name, it[1])
cpt.remove_option(sec, it[0])