diff options
author | Nikos Nikoleris <nikos.nikoleris@arm.com> | 2018-01-03 12:10:09 +0100 |
---|---|---|
committer | Nikos Nikoleris <nikos.nikoleris@arm.com> | 2018-01-11 09:40:35 +0000 |
commit | 1437a24864c526edc875fb07af6483649455436d (patch) | |
tree | 31ba40a1111d1b8b4dc16b2747fa2f7df02c30a3 | |
parent | 9737d93eb1d22946073d448c0c9200169f1a0b64 (diff) | |
download | gem5-1437a24864c526edc875fb07af6483649455436d.tar.xz |
mem-ruby: Fix wakeup timeouts for the MOESI_CMP_token protocol
This changeset fixes a bug that was affecting the MOESI_CMP_token
protocol where setting the next timeout required an absolute tick in
the future.
Change-Id: Ibfdb59354e13c7e552cb3389e71bda010f333249
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7163
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
-rw-r--r-- | src/mem/protocol/MOESI_CMP_token-dir.sm | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mem/protocol/MOESI_CMP_token-dir.sm b/src/mem/protocol/MOESI_CMP_token-dir.sm index 1a749b18d..b9b65b585 100644 --- a/src/mem/protocol/MOESI_CMP_token-dir.sm +++ b/src/mem/protocol/MOESI_CMP_token-dir.sm @@ -173,6 +173,7 @@ machine(MachineType:Directory, "Token protocol") int l2_select_low_bit, default="RubySystem::getBlockSizeBits()"; Tick clockEdge(); + Tick clockEdge(Cycles c); Tick cyclesToTicks(Cycles c); void set_tbe(TBE b); void unset_tbe(); @@ -494,7 +495,7 @@ machine(MachineType:Directory, "Token protocol") // IssueCount. // Set a wakeup timer - reissueTimerTable.set(address, cyclesToTicks(reissue_wakeup_latency)); + reissueTimerTable.set(address, clockEdge(reissue_wakeup_latency)); } } @@ -562,7 +563,7 @@ machine(MachineType:Directory, "Token protocol") // IssueCount. // Set a wakeup timer - reissueTimerTable.set(address, cyclesToTicks(reissue_wakeup_latency)); + reissueTimerTable.set(address, clockEdge(reissue_wakeup_latency)); } } @@ -808,7 +809,7 @@ machine(MachineType:Directory, "Token protocol") // if (reissueTimerTable.isSet(address)) { reissueTimerTable.unset(address); - reissueTimerTable.set(address, cyclesToTicks(fixed_timeout_latency)); + reissueTimerTable.set(address, clockEdge(fixed_timeout_latency)); } } @@ -816,7 +817,7 @@ machine(MachineType:Directory, "Token protocol") // // currently only support a fixed timeout latency // - reissueTimerTable.set(address, cyclesToTicks(fixed_timeout_latency)); + reissueTimerTable.set(address, clockEdge(fixed_timeout_latency)); } action(ut_unsetReissueTimer, "ut", desc="Unset reissue timer.") { |