diff options
author | Mohammad Alian <m.alian1369@gmail.com> | 2016-06-08 09:12:41 -0500 |
---|---|---|
committer | Mohammad Alian <m.alian1369@gmail.com> | 2016-06-08 09:12:41 -0500 |
commit | e5b7b6780f9748b6f13ef91e3e22d53ebdf47968 (patch) | |
tree | eeeae13da4325af9fa7729a15fd0e79de8053f92 /util | |
parent | 8d177d128f14831f9490467863efb9c92d1480bc (diff) | |
download | gem5-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.py | 21 |
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]) |