summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorMohammad Alian <m.alian1369@gmail.com>2016-06-08 09:12:41 -0500
committerMohammad Alian <m.alian1369@gmail.com>2016-06-08 09:12:41 -0500
commite5b7b6780f9748b6f13ef91e3e22d53ebdf47968 (patch)
treeeeeae13da4325af9fa7729a15fd0e79de8053f92 /util
parent8d177d128f14831f9490467863efb9c92d1480bc (diff)
downloadgem5-e5b7b6780f9748b6f13ef91e3e22d53ebdf47968.tar.xz
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>
Diffstat (limited to 'util')
-rw-r--r--util/cpt_upgraders/etherswitch.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/util/cpt_upgraders/etherswitch.py b/util/cpt_upgraders/etherswitch.py
new file mode 100644
index 000000000..e4094f97d
--- /dev/null
+++ b/util/cpt_upgraders/etherswitch.py
@@ -0,0 +1,21 @@
+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])