summaryrefslogtreecommitdiff
path: root/src/mem/protocol
diff options
context:
space:
mode:
authorNikos Nikoleris <nikos.nikoleris@arm.com>2018-01-03 12:10:09 +0100
committerNikos Nikoleris <nikos.nikoleris@arm.com>2018-01-11 09:40:35 +0000
commit1437a24864c526edc875fb07af6483649455436d (patch)
tree31ba40a1111d1b8b4dc16b2747fa2f7df02c30a3 /src/mem/protocol
parent9737d93eb1d22946073d448c0c9200169f1a0b64 (diff)
downloadgem5-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>
Diffstat (limited to 'src/mem/protocol')
-rw-r--r--src/mem/protocol/MOESI_CMP_token-dir.sm9
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.") {