Fix some arbitration bugs

This commit is contained in:
Peter Rugg
2021-05-28 12:36:06 +01:00
parent 46b1519cb0
commit bf911326e3

View File

@@ -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;