From bf911326e3a3aa90f0a5d91e66e96eb6185ab86b Mon Sep 17 00:00:00 2001 From: Peter Rugg Date: Fri, 28 May 2021 12:36:06 +0100 Subject: [PATCH] Fix some arbitration bugs --- src_Core/RISCY_OOO/coherence/src/CrossBar.bsv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src_Core/RISCY_OOO/coherence/src/CrossBar.bsv b/src_Core/RISCY_OOO/coherence/src/CrossBar.bsv index 3eae2ae..dba7565 100644 --- a/src_Core/RISCY_OOO/coherence/src/CrossBar.bsv +++ b/src_Core/RISCY_OOO/coherence/src/CrossBar.bsv @@ -102,8 +102,8 @@ module mkXBar#( end endfunction // find the first valid source starting at srcRR[dst] - Vector#(srcNum, srcIdxT) srcIdxVec = rotateBy(genWith(fromInteger), unpack(srcRR[dst])); - Maybe#(srcIdxT) whichSrc = searchIndex(isFromSrc, srcIdxVec); // the src to select + Vector#(srcNum, srcIdxT) srcIdxVec = rotateBy(genWith(fromInteger), -unpack(srcRR[dst])); + Maybe#(srcIdxT) whichSrc = fmap(select(srcIdxVec), searchIndex(isFromSrc, srcIdxVec)); // the src to select if(whichSrc matches tagged Valid .src) begin // can do enq & deq deqSrcByDst[dst] = whichSrc;