From 1437a24864c526edc875fb07af6483649455436d Mon Sep 17 00:00:00 2001 From: Nikos Nikoleris Date: Wed, 3 Jan 2018 12:10:09 +0100 Subject: 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 Reviewed-on: https://gem5-review.googlesource.com/7163 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- src/mem/protocol/MOESI_CMP_token-dir.sm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/mem/protocol') 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.") { -- cgit v1.2.3