From 45135a0beead477b2efc321753fa579264e8b6ef Mon Sep 17 00:00:00 2001 From: gameboo Date: Fri, 28 May 2021 18:32:25 +0100 Subject: [PATCH] Don't assume a XILINX tool flow --- src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv | 3 +++ src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv | 2 ++ src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv | 3 +++ src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv | 3 +++ src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv | 8 ++++++++ 5 files changed, 19 insertions(+) diff --git a/src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv b/src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv index c104a73..1fdc68a 100644 --- a/src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv +++ b/src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv @@ -28,6 +28,9 @@ interface ResetGuard; endinterface `ifdef BSIM +`define NO_XILINX +`endif +`ifdef NO_XILINX module mkResetGuard(ResetGuard); Reg#(Bool) ready <- mkReg(False); diff --git a/src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv b/src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv index e780722..d91de68 100644 --- a/src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv +++ b/src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv @@ -24,7 +24,9 @@ import Clocks::*; import FIFOF::*; import Assert::*; +`ifdef USE_CONNECTAL_BRAM_SYNC_FIFO import ConnectalBramFifo::*; +`endif import BRAMFIFO::*; import XilinxSyncFifo::*; import ResetGuard::*; diff --git a/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv index e48b711..d6e8d6f 100644 --- a/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv +++ b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv @@ -124,6 +124,9 @@ module mkXilinxIntDiv(XilinxIntDiv#(tagT)) provisos ( Bits#(tagT, tagSz), Add#(tagSz, a__, 8) ); `ifdef BSIM +`define NO_XILINX +`endif +`ifdef NO_XILINX IntDivUnsignedImport divIfc <- mkIntDivUnsignedSim; `else IntDivUnsignedImport divIfc <- mkIntDivUnsignedImport; diff --git a/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv index 1a91dc1..5986cb3 100644 --- a/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv +++ b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv @@ -110,6 +110,9 @@ module mkXilinxIntMul(XilinxIntMul#(tagT)) provisos( // different multilpliers: WaitAutoReset is not needed, since mul is a // pipeline with fixed latency `ifdef BSIM +`define NO_XILINX +`endif +`ifdef NO_XILINX IntMulImport mulSigned <- mkIntMulSim(Signed); IntMulImport mulUnsigned <- mkIntMulSim(Unsigned); IntMulImport mulSignedUnsigned <- mkIntMulSim(SignedUnsigned); diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv index d84e1ae..b2315af 100644 --- a/src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv @@ -79,10 +79,18 @@ `define LOG_L2_TLB_4KB_WAYS 2 // L2 4KB TLB log ways (4 ways) // FMA bookkeeping FIFO: add 1 to allow simultaneous enq/deq +`ifdef USE_XILINX_FPU `define BOOKKEEPING_FP_FMA_SIZE TAdd#(`XILINX_FP_FMA_LATENCY, 1) +`else +`define BOOKKEEPING_FP_FMA_SIZE 4 +`endif // INT MUL bookkeeping FIFO: add 1 to allow simultaneous enq/deq, another 1 // because of internal flow control in MUL unit +`ifdef USE_XILINX_FPU `define BOOKKEEPING_INT_MUL_SIZE TAdd#(`XILINX_INT_MUL_LATENCY, 2) +`else +`define BOOKKEEPING_INT_MUL_SIZE 4 +`endif // non-blocking DTLB `define DTLB_REQ_NUM 4