From 4cfd652b0d5eb3fa3a607e1307faaa5fca314aac Mon Sep 17 00:00:00 2001 From: Jonathan Woodruff Date: Tue, 25 Jan 2022 20:42:16 +0000 Subject: [PATCH] Use mkRegOR in register file. --- src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv b/src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv index 90c5d2d..d1e1f7a 100644 --- a/src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv +++ b/src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv @@ -47,6 +47,7 @@ import ProcTypes::*; import Vector::*; import Ehr::*; import ConfigReg::*; +import SpecialRegs::*; interface RFileWr#(type d); method Action wr( PhyRIndx rindx, d data ); @@ -73,7 +74,9 @@ module mkRFile#(d defaultRegisterValue, Bool lazy)( RFile#(wrNum, rdNum, d) ) pr // phy reg init val must be 0: because x0 is renamed to phy reg 0, // which must be 0 at all time - Vector#(NumPhyReg, Ehr#(ehrPortNum, d)) rfile <- replicateM(mkEhr(defaultRegisterValue)); + // Using a mkRegOR here assumes there will be a single write per register per cycle. + // As each register is allocated to a single instruction which will execute once, this should always be true. + Vector#(NumPhyReg, Vector#(ehrPortNum, Reg#(d))) rfile <- replicateM(mkRegOR(defaultRegisterValue)); Vector#(NumPhyReg, d) rdData = ?; if(lazy) begin