2021-03-17 16:24:26 -05:00
|
|
|
`define n 32
|
|
|
|
`define max_size 30
|
|
|
|
|
|
|
|
//
|
|
|
|
// Generated by Bluespec Compiler, version 2009.11.beta2 (build 18693, 2009-11-24)
|
|
|
|
//
|
|
|
|
// On Tue Jun 8 18:43:05 EDT 2010
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Ports:
|
|
|
|
// Name I/O size props
|
|
|
|
// wciS0_SResp O 2 reg
|
|
|
|
// wciS0_SData O 32 reg
|
|
|
|
// wciS0_SThreadBusy O 1
|
|
|
|
// wciS0_SFlag O 2
|
|
|
|
// wmiM_MCmd O 3
|
|
|
|
// wmiM_MReqLast O 1 reg
|
|
|
|
// wmiM_MReqInfo O 1 reg
|
|
|
|
// wmiM_MAddrSpace O 1 reg
|
|
|
|
// wmiM_MAddr O 14 reg
|
|
|
|
// wmiM_MBurstLength O 12 reg
|
|
|
|
// wmiM_MDataValid O 1
|
|
|
|
// wmiM_MDataLast O 1 reg
|
|
|
|
// wmiM_MData O 32 reg
|
|
|
|
// wmiM_MDataByteEn O 4 reg
|
|
|
|
// wmiM_MFlag O 32
|
|
|
|
// wmiM_MReset_n O 1
|
|
|
|
// wsiM1_MCmd O 3
|
|
|
|
// wsiM1_MReqLast O 1
|
|
|
|
// wsiM1_MBurstPrecise O 1
|
|
|
|
// wsiM1_MBurstLength O 12
|
|
|
|
// wsiM1_MData O 32 reg
|
|
|
|
// wsiM1_MByteEn O 4 reg
|
|
|
|
// wsiM1_MReqInfo O 8
|
|
|
|
// wsiM1_MReset_n O 1
|
|
|
|
// wsiS1_SThreadBusy O 1
|
|
|
|
// wsiS1_SReset_n O 1
|
|
|
|
// wciS0_Clk I 1 clock
|
|
|
|
// wciS0_MReset_n I 1 reset
|
|
|
|
// wciS0_MCmd I 3
|
|
|
|
// wciS0_MAddrSpace I 1
|
|
|
|
// wciS0_MByteEn I 4
|
|
|
|
// wciS0_MAddr I 20
|
|
|
|
// wciS0_MData I 32
|
|
|
|
// wciS0_MFlag I 2 unused
|
|
|
|
// wmiM_SResp I 2
|
|
|
|
// wmiM_SData I 32
|
|
|
|
// wmiM_SFlag I 32 reg
|
|
|
|
// wsiS1_MCmd I 3
|
|
|
|
// wsiS1_MBurstLength I 12
|
|
|
|
// wsiS1_MData I 32
|
|
|
|
// wsiS1_MByteEn I 4
|
|
|
|
// wsiS1_MReqInfo I 8
|
|
|
|
// wmiM_SThreadBusy I 1 reg
|
|
|
|
// wmiM_SDataThreadBusy I 1 reg
|
|
|
|
// wmiM_SRespLast I 1 unused
|
|
|
|
// wmiM_SReset_n I 1 reg
|
|
|
|
// wsiM1_SThreadBusy I 1 reg
|
|
|
|
// wsiM1_SReset_n I 1 reg
|
|
|
|
// wsiS1_MReqLast I 1
|
|
|
|
// wsiS1_MBurstPrecise I 1
|
|
|
|
// wsiS1_MReset_n I 1 reg
|
|
|
|
//
|
|
|
|
// No combinational paths from inputs to outputs
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
|
|
|
module mkSMAdapter4B(wciS0_Clk,
|
|
|
|
wciS0_MReset_n,
|
|
|
|
|
|
|
|
wciS0_MCmd,
|
|
|
|
|
|
|
|
|
|
|
|
wciS0_MAddrSpace,
|
|
|
|
|
|
|
|
wciS0_MByteEn,
|
|
|
|
|
|
|
|
wciS0_MAddr,
|
|
|
|
|
|
|
|
wciS0_MData,
|
|
|
|
|
|
|
|
wciS0_SResp,
|
|
|
|
|
|
|
|
wciS0_SData,
|
|
|
|
|
|
|
|
wciS0_SThreadBusy,
|
|
|
|
|
|
|
|
wciS0_SFlag,
|
|
|
|
|
|
|
|
wciS0_MFlag,
|
|
|
|
|
|
|
|
wmiM_MCmd,
|
|
|
|
|
|
|
|
wmiM_MReqLast,
|
|
|
|
|
|
|
|
wmiM_MReqInfo,
|
|
|
|
|
|
|
|
wmiM_MAddrSpace,
|
|
|
|
|
|
|
|
wmiM_MAddr,
|
|
|
|
|
|
|
|
wmiM_MBurstLength,
|
|
|
|
|
|
|
|
wmiM_MDataValid,
|
|
|
|
|
|
|
|
wmiM_MDataLast,
|
|
|
|
|
|
|
|
wmiM_MData,
|
|
|
|
|
|
|
|
wmiM_MDataByteEn,
|
|
|
|
|
|
|
|
wmiM_SResp,
|
|
|
|
|
|
|
|
wmiM_SData,
|
|
|
|
|
|
|
|
wmiM_SThreadBusy,
|
|
|
|
|
|
|
|
wmiM_SDataThreadBusy,
|
|
|
|
|
|
|
|
wmiM_SRespLast,
|
|
|
|
|
|
|
|
wmiM_SFlag,
|
|
|
|
|
|
|
|
wmiM_MFlag,
|
|
|
|
|
|
|
|
wmiM_MReset_n,
|
|
|
|
|
|
|
|
wmiM_SReset_n,
|
|
|
|
|
|
|
|
wsiM1_MCmd,
|
|
|
|
|
|
|
|
wsiM1_MReqLast,
|
|
|
|
|
|
|
|
wsiM1_MBurstPrecise,
|
|
|
|
|
|
|
|
wsiM1_MBurstLength,
|
|
|
|
|
|
|
|
wsiM1_MData,
|
|
|
|
|
|
|
|
wsiM1_MByteEn,
|
|
|
|
|
|
|
|
wsiM1_MReqInfo,
|
|
|
|
|
|
|
|
wsiM1_SThreadBusy,
|
|
|
|
|
|
|
|
wsiM1_MReset_n,
|
|
|
|
|
|
|
|
wsiM1_SReset_n,
|
|
|
|
|
|
|
|
wsiS1_MCmd,
|
|
|
|
|
|
|
|
wsiS1_MReqLast,
|
|
|
|
|
|
|
|
wsiS1_MBurstPrecise,
|
|
|
|
|
|
|
|
wsiS1_MBurstLength,
|
|
|
|
|
|
|
|
wsiS1_MData,
|
|
|
|
|
|
|
|
wsiS1_MByteEn,
|
|
|
|
|
|
|
|
wsiS1_MReqInfo,
|
|
|
|
|
|
|
|
wsiS1_SThreadBusy,
|
|
|
|
|
|
|
|
wsiS1_SReset_n,
|
|
|
|
|
|
|
|
wsiS1_MReset_n,
|
|
|
|
prevent_sweep_node);
|
|
|
|
parameter [31 : 0] smaCtrlInit = 32'b0;
|
|
|
|
input wciS0_Clk;
|
|
|
|
input wciS0_MReset_n;
|
|
|
|
output prevent_sweep_node;
|
|
|
|
|
|
|
|
// action method wciS0_mCmd
|
|
|
|
input [2 : 0] wciS0_MCmd;
|
|
|
|
|
|
|
|
// action method wciS0_mAddrSpace
|
|
|
|
input wciS0_MAddrSpace;
|
|
|
|
|
|
|
|
// action method wciS0_mByteEn
|
|
|
|
input [3 : 0] wciS0_MByteEn;
|
|
|
|
|
|
|
|
// action method wciS0_mAddr
|
|
|
|
input [19 : 0] wciS0_MAddr;
|
|
|
|
|
|
|
|
// action method wciS0_mData
|
|
|
|
input [31 : 0] wciS0_MData;
|
|
|
|
|
|
|
|
// value method wciS0_sResp
|
|
|
|
output [1 : 0] wciS0_SResp;
|
|
|
|
|
|
|
|
// value method wciS0_sData
|
|
|
|
output [31 : 0] wciS0_SData;
|
|
|
|
|
|
|
|
// value method wciS0_sThreadBusy
|
|
|
|
output wciS0_SThreadBusy;
|
|
|
|
|
|
|
|
// value method wciS0_sFlag
|
|
|
|
output [1 : 0] wciS0_SFlag;
|
|
|
|
|
|
|
|
// action method wciS0_mFlag
|
|
|
|
input [1 : 0] wciS0_MFlag;
|
|
|
|
|
|
|
|
// value method wmiM_mCmd
|
|
|
|
output [2 : 0] wmiM_MCmd;
|
|
|
|
|
|
|
|
// value method wmiM_mReqLast
|
|
|
|
output wmiM_MReqLast;
|
|
|
|
|
|
|
|
// value method wmiM_mReqInfo
|
|
|
|
output wmiM_MReqInfo;
|
|
|
|
|
|
|
|
// value method wmiM_mAddrSpace
|
|
|
|
output wmiM_MAddrSpace;
|
|
|
|
|
|
|
|
// value method wmiM_mAddr
|
|
|
|
output [13 : 0] wmiM_MAddr;
|
|
|
|
|
|
|
|
// value method wmiM_mBurstLength
|
|
|
|
output [11 : 0] wmiM_MBurstLength;
|
|
|
|
|
|
|
|
// value method wmiM_mDataValid
|
|
|
|
output wmiM_MDataValid;
|
|
|
|
|
|
|
|
// value method wmiM_mDataLast
|
|
|
|
output wmiM_MDataLast;
|
|
|
|
|
|
|
|
// value method wmiM_mData
|
|
|
|
output [31 : 0] wmiM_MData;
|
|
|
|
|
|
|
|
// value method wmiM_mDataInfo
|
|
|
|
|
|
|
|
// value method wmiM_mDataByteEn
|
|
|
|
output [3 : 0] wmiM_MDataByteEn;
|
|
|
|
|
|
|
|
// action method wmiM_sResp
|
|
|
|
input [1 : 0] wmiM_SResp;
|
|
|
|
|
|
|
|
// action method wmiM_sData
|
|
|
|
input [31 : 0] wmiM_SData;
|
|
|
|
|
|
|
|
// action method wmiM_sThreadBusy
|
|
|
|
input wmiM_SThreadBusy;
|
|
|
|
|
|
|
|
// action method wmiM_sDataThreadBusy
|
|
|
|
input wmiM_SDataThreadBusy;
|
|
|
|
|
|
|
|
// action method wmiM_sRespLast
|
|
|
|
input wmiM_SRespLast;
|
|
|
|
|
|
|
|
// action method wmiM_sFlag
|
|
|
|
input [31 : 0] wmiM_SFlag;
|
|
|
|
|
|
|
|
// value method wmiM_mFlag
|
|
|
|
output [31 : 0] wmiM_MFlag;
|
|
|
|
|
|
|
|
// value method wmiM_mReset_n
|
|
|
|
output wmiM_MReset_n;
|
|
|
|
|
|
|
|
// action method wmiM_sReset_n
|
|
|
|
input wmiM_SReset_n;
|
|
|
|
|
|
|
|
// value method wsiM1_mCmd
|
|
|
|
output [2 : 0] wsiM1_MCmd;
|
|
|
|
|
|
|
|
// value method wsiM1_mReqLast
|
|
|
|
output wsiM1_MReqLast;
|
|
|
|
|
|
|
|
// value method wsiM1_mBurstPrecise
|
|
|
|
output wsiM1_MBurstPrecise;
|
|
|
|
|
|
|
|
// value method wsiM1_mBurstLength
|
|
|
|
output [11 : 0] wsiM1_MBurstLength;
|
|
|
|
|
|
|
|
// value method wsiM1_mData
|
|
|
|
output [31 : 0] wsiM1_MData;
|
|
|
|
|
|
|
|
// value method wsiM1_mByteEn
|
|
|
|
output [3 : 0] wsiM1_MByteEn;
|
|
|
|
|
|
|
|
// value method wsiM1_mReqInfo
|
|
|
|
output [7 : 0] wsiM1_MReqInfo;
|
|
|
|
|
|
|
|
// value method wsiM1_mDataInfo
|
|
|
|
|
|
|
|
// action method wsiM1_sThreadBusy
|
|
|
|
input wsiM1_SThreadBusy;
|
|
|
|
|
|
|
|
// value method wsiM1_mReset_n
|
|
|
|
output wsiM1_MReset_n;
|
|
|
|
|
|
|
|
// action method wsiM1_sReset_n
|
|
|
|
input wsiM1_SReset_n;
|
|
|
|
|
|
|
|
// action method wsiS1_mCmd
|
|
|
|
input [2 : 0] wsiS1_MCmd;
|
|
|
|
|
|
|
|
// action method wsiS1_mReqLast
|
|
|
|
input wsiS1_MReqLast;
|
|
|
|
|
|
|
|
// action method wsiS1_mBurstPrecise
|
|
|
|
input wsiS1_MBurstPrecise;
|
|
|
|
|
|
|
|
// action method wsiS1_mBurstLength
|
|
|
|
input [11 : 0] wsiS1_MBurstLength;
|
|
|
|
|
|
|
|
// action method wsiS1_mData
|
|
|
|
input [31 : 0] wsiS1_MData;
|
|
|
|
|
|
|
|
// action method wsiS1_mByteEn
|
|
|
|
input [3 : 0] wsiS1_MByteEn;
|
|
|
|
|
|
|
|
// action method wsiS1_mReqInfo
|
|
|
|
input [7 : 0] wsiS1_MReqInfo;
|
|
|
|
|
|
|
|
// action method wsiS1_mDataInfo
|
|
|
|
|
|
|
|
// value method wsiS1_sThreadBusy
|
|
|
|
output wsiS1_SThreadBusy;
|
|
|
|
|
|
|
|
// value method wsiS1_sReset_n
|
|
|
|
output wsiS1_SReset_n;
|
|
|
|
|
|
|
|
// action method wsiS1_mReset_n
|
|
|
|
input wsiS1_MReset_n;
|
|
|
|
|
|
|
|
// signals for module outputs
|
|
|
|
wire [31 : 0] wciS0_SData, wmiM_MData, wmiM_MFlag, wsiM1_MData;
|
|
|
|
wire [13 : 0] wmiM_MAddr;
|
|
|
|
wire [11 : 0] wmiM_MBurstLength, wsiM1_MBurstLength;
|
|
|
|
wire [7 : 0] wsiM1_MReqInfo;
|
|
|
|
wire [3 : 0] wmiM_MDataByteEn, wsiM1_MByteEn;
|
|
|
|
wire [2 : 0] wmiM_MCmd, wsiM1_MCmd;
|
|
|
|
wire [1 : 0] wciS0_SFlag, wciS0_SResp;
|
|
|
|
wire wciS0_SThreadBusy,
|
|
|
|
wmiM_MAddrSpace,
|
|
|
|
wmiM_MDataLast,
|
|
|
|
wmiM_MDataValid,
|
|
|
|
wmiM_MReqInfo,
|
|
|
|
wmiM_MReqLast,
|
|
|
|
wmiM_MReset_n,
|
|
|
|
wsiM1_MBurstPrecise,
|
|
|
|
wsiM1_MReqLast,
|
|
|
|
wsiM1_MReset_n,
|
|
|
|
wsiS1_SReset_n,
|
|
|
|
wsiS1_SThreadBusy;
|
|
|
|
|
|
|
|
// inlined wires
|
|
|
|
wire [95 : 0] wsiM_extStatusW__wget, wsiS_extStatusW__wget;
|
|
|
|
wire [60 : 0] wsiM_reqFifo_x_wire__wget, wsiS_wsiReq__wget;
|
|
|
|
wire [59 : 0] wci_wciReq__wget;
|
|
|
|
wire [37 : 0] wmi_dhF_x_wire__wget;
|
|
|
|
wire [33 : 0] wci_respF_x_wire__wget, wmi_wmiResponse__wget;
|
|
|
|
wire [31 : 0] wci_Es_mData_w__wget,
|
|
|
|
wmi_Em_sData_w__wget,
|
|
|
|
wmi_mFlagF_x_wire__wget,
|
|
|
|
wmi_reqF_x_wire__wget,
|
|
|
|
wsi_Es_mData_w__wget;
|
|
|
|
wire [19 : 0] wci_Es_mAddr_w__wget;
|
|
|
|
wire [11 : 0] wsi_Es_mBurstLength_w__wget;
|
|
|
|
wire [7 : 0] wsi_Es_mReqInfo_w__wget;
|
|
|
|
wire [3 : 0] fabRespCredit_acc_v1__wget,
|
|
|
|
fabRespCredit_acc_v2__wget,
|
|
|
|
wci_Es_mByteEn_w__wget,
|
|
|
|
wsi_Es_mByteEn_w__wget;
|
|
|
|
wire [2 : 0] wci_Es_mCmd_w__wget, wci_wEdge__wget, wsi_Es_mCmd_w__wget;
|
|
|
|
wire [1 : 0] wmi_Em_sResp_w__wget;
|
|
|
|
wire fabRespCredit_acc_v1__whas,
|
|
|
|
fabRespCredit_acc_v2__whas,
|
|
|
|
mesgPreRequest_1__wget,
|
|
|
|
mesgPreRequest_1__whas,
|
|
|
|
wci_Es_mAddrSpace_w__wget,
|
|
|
|
wci_Es_mAddrSpace_w__whas,
|
|
|
|
wci_Es_mAddr_w__whas,
|
|
|
|
wci_Es_mByteEn_w__whas,
|
|
|
|
wci_Es_mCmd_w__whas,
|
|
|
|
wci_Es_mData_w__whas,
|
|
|
|
wci_ctlAckReg_1__wget,
|
|
|
|
wci_ctlAckReg_1__whas,
|
|
|
|
wci_reqF_r_clr__whas,
|
|
|
|
wci_reqF_r_deq__whas,
|
|
|
|
wci_reqF_r_enq__whas,
|
|
|
|
wci_respF_dequeueing__whas,
|
|
|
|
wci_respF_enqueueing__whas,
|
|
|
|
wci_respF_x_wire__whas,
|
|
|
|
wci_sFlagReg_1__wget,
|
|
|
|
wci_sFlagReg_1__whas,
|
|
|
|
wci_sThreadBusy_pw__whas,
|
|
|
|
wci_wEdge__whas,
|
|
|
|
wci_wciReq__whas,
|
|
|
|
wci_wci_cfrd_pw__whas,
|
|
|
|
wci_wci_cfwr_pw__whas,
|
|
|
|
wci_wci_ctrl_pw__whas,
|
|
|
|
wmi_Em_sData_w__whas,
|
|
|
|
wmi_Em_sResp_w__whas,
|
|
|
|
wmi_dhF_dequeueing__whas,
|
|
|
|
wmi_dhF_enqueueing__whas,
|
|
|
|
wmi_dhF_x_wire__whas,
|
|
|
|
wmi_mFlagF_dequeueing__whas,
|
|
|
|
wmi_mFlagF_enqueueing__whas,
|
|
|
|
wmi_mFlagF_x_wire__whas,
|
|
|
|
wmi_operateD_1__wget,
|
|
|
|
wmi_operateD_1__whas,
|
|
|
|
wmi_peerIsReady_1__wget,
|
|
|
|
wmi_peerIsReady_1__whas,
|
|
|
|
wmi_reqF_dequeueing__whas,
|
|
|
|
wmi_reqF_enqueueing__whas,
|
|
|
|
wmi_reqF_x_wire__whas,
|
|
|
|
wmi_sDataThreadBusy_d_1__wget,
|
|
|
|
wmi_sDataThreadBusy_d_1__whas,
|
|
|
|
wmi_sThreadBusy_d_1__wget,
|
|
|
|
wmi_sThreadBusy_d_1__whas,
|
|
|
|
wmi_wmiResponse__whas,
|
|
|
|
wsiM_operateD_1__wget,
|
|
|
|
wsiM_operateD_1__whas,
|
|
|
|
wsiM_peerIsReady_1__wget,
|
|
|
|
wsiM_peerIsReady_1__whas,
|
|
|
|
wsiM_reqFifo_dequeueing__whas,
|
|
|
|
wsiM_reqFifo_enqueueing__whas,
|
|
|
|
wsiM_reqFifo_x_wire__whas,
|
|
|
|
wsiM_sThreadBusy_pw__whas,
|
|
|
|
wsiS_operateD_1__wget,
|
|
|
|
wsiS_operateD_1__whas,
|
|
|
|
wsiS_peerIsReady_1__wget,
|
|
|
|
wsiS_peerIsReady_1__whas,
|
|
|
|
wsiS_reqFifo_r_clr__whas,
|
|
|
|
wsiS_reqFifo_r_deq__whas,
|
|
|
|
wsiS_reqFifo_r_enq__whas,
|
|
|
|
wsiS_wsiReq__whas,
|
|
|
|
wsi_Es_mBurstLength_w__whas,
|
|
|
|
wsi_Es_mBurstPrecise_w__whas,
|
|
|
|
wsi_Es_mByteEn_w__whas,
|
|
|
|
wsi_Es_mCmd_w__whas,
|
|
|
|
wsi_Es_mDataInfo_w__whas,
|
|
|
|
wsi_Es_mData_w__whas,
|
|
|
|
wsi_Es_mReqInfo_w__whas,
|
|
|
|
wsi_Es_mReqLast_w__whas;
|
|
|
|
|
|
|
|
// register abortCount
|
|
|
|
reg [31 : 0] abortCount;
|
|
|
|
wire [31 : 0] abortCount__D_IN;
|
|
|
|
wire abortCount__EN;
|
|
|
|
|
|
|
|
// register doAbort
|
|
|
|
reg doAbort;
|
|
|
|
wire doAbort__D_IN, doAbort__EN;
|
|
|
|
|
|
|
|
// register endOfMessage
|
|
|
|
reg endOfMessage;
|
|
|
|
wire endOfMessage__D_IN, endOfMessage__EN;
|
|
|
|
|
|
|
|
// register errCount
|
|
|
|
reg [31 : 0] errCount;
|
|
|
|
wire [31 : 0] errCount__D_IN;
|
|
|
|
wire errCount__EN;
|
|
|
|
|
|
|
|
// register fabRespCredit_value
|
|
|
|
reg [3 : 0] fabRespCredit_value;
|
|
|
|
wire [3 : 0] fabRespCredit_value__D_IN;
|
|
|
|
wire fabRespCredit_value__EN;
|
|
|
|
|
|
|
|
// register fabWordsCurReq
|
|
|
|
reg [13 : 0] fabWordsCurReq;
|
|
|
|
wire [13 : 0] fabWordsCurReq__D_IN;
|
|
|
|
wire fabWordsCurReq__EN;
|
|
|
|
|
|
|
|
// register fabWordsRemain
|
|
|
|
reg [13 : 0] fabWordsRemain;
|
|
|
|
wire [13 : 0] fabWordsRemain__D_IN;
|
|
|
|
wire fabWordsRemain__EN;
|
|
|
|
|
|
|
|
// register firstMsgReq
|
|
|
|
reg firstMsgReq;
|
|
|
|
wire firstMsgReq__D_IN, firstMsgReq__EN;
|
|
|
|
|
|
|
|
// register impreciseBurst
|
|
|
|
reg impreciseBurst;
|
|
|
|
reg impreciseBurst__D_IN;
|
|
|
|
wire impreciseBurst__EN;
|
|
|
|
|
|
|
|
// register lastMesg
|
|
|
|
reg [31 : 0] lastMesg;
|
|
|
|
wire [31 : 0] lastMesg__D_IN;
|
|
|
|
wire lastMesg__EN;
|
|
|
|
|
|
|
|
// register mesgCount
|
|
|
|
reg [31 : 0] mesgCount;
|
|
|
|
reg [31 : 0] mesgCount__D_IN;
|
|
|
|
wire mesgCount__EN;
|
|
|
|
|
|
|
|
// register mesgLength
|
|
|
|
reg [14 : 0] mesgLength;
|
|
|
|
reg [14 : 0] mesgLength__D_IN;
|
|
|
|
wire mesgLength__EN;
|
|
|
|
|
|
|
|
// register mesgLengthSoFar
|
|
|
|
reg [13 : 0] mesgLengthSoFar;
|
|
|
|
wire [13 : 0] mesgLengthSoFar__D_IN;
|
|
|
|
wire mesgLengthSoFar__EN;
|
|
|
|
|
|
|
|
// register mesgPreRequest
|
|
|
|
reg mesgPreRequest;
|
|
|
|
wire mesgPreRequest__D_IN, mesgPreRequest__EN;
|
|
|
|
|
|
|
|
// register mesgReqAddr
|
|
|
|
reg [13 : 0] mesgReqAddr;
|
|
|
|
wire [13 : 0] mesgReqAddr__D_IN;
|
|
|
|
wire mesgReqAddr__EN;
|
|
|
|
|
|
|
|
// register mesgReqOK
|
|
|
|
reg mesgReqOK;
|
|
|
|
wire mesgReqOK__D_IN, mesgReqOK__EN;
|
|
|
|
|
|
|
|
// register mesgReqValid
|
|
|
|
reg mesgReqValid;
|
|
|
|
wire mesgReqValid__D_IN, mesgReqValid__EN;
|
|
|
|
|
|
|
|
// register opcode
|
|
|
|
reg [8 : 0] opcode;
|
|
|
|
reg [8 : 0] opcode__D_IN;
|
|
|
|
wire opcode__EN;
|
|
|
|
|
|
|
|
// register preciseBurst
|
|
|
|
reg preciseBurst;
|
|
|
|
reg preciseBurst__D_IN;
|
|
|
|
wire preciseBurst__EN;
|
|
|
|
|
|
|
|
// register readyToPush
|
|
|
|
reg readyToPush;
|
|
|
|
reg readyToPush__D_IN;
|
|
|
|
wire readyToPush__EN;
|
|
|
|
|
|
|
|
// register readyToRequest
|
|
|
|
reg readyToRequest;
|
|
|
|
wire readyToRequest__D_IN, readyToRequest__EN;
|
|
|
|
|
|
|
|
// register smaCtrl
|
|
|
|
reg [31 : 0] smaCtrl;
|
|
|
|
wire [31 : 0] smaCtrl__D_IN;
|
|
|
|
wire smaCtrl__EN;
|
|
|
|
|
|
|
|
// register thisMesg
|
|
|
|
reg [31 : 0] thisMesg;
|
|
|
|
reg [31 : 0] thisMesg__D_IN;
|
|
|
|
wire thisMesg__EN;
|
|
|
|
|
|
|
|
// register unrollCnt
|
|
|
|
reg [15 : 0] unrollCnt;
|
|
|
|
wire [15 : 0] unrollCnt__D_IN;
|
|
|
|
wire unrollCnt__EN;
|
|
|
|
|
|
|
|
// register valExpect
|
|
|
|
reg [31 : 0] valExpect;
|
|
|
|
wire [31 : 0] valExpect__D_IN;
|
|
|
|
wire valExpect__EN;
|
|
|
|
|
|
|
|
// register wci_cEdge
|
|
|
|
reg [2 : 0] wci_cEdge;
|
|
|
|
wire [2 : 0] wci_cEdge__D_IN;
|
|
|
|
wire wci_cEdge__EN;
|
|
|
|
|
|
|
|
// register wci_cState
|
|
|
|
reg [2 : 0] wci_cState;
|
|
|
|
wire [2 : 0] wci_cState__D_IN;
|
|
|
|
wire wci_cState__EN;
|
|
|
|
|
|
|
|
// register wci_ctlAckReg
|
|
|
|
reg wci_ctlAckReg;
|
|
|
|
wire wci_ctlAckReg__D_IN, wci_ctlAckReg__EN;
|
|
|
|
|
|
|
|
// register wci_ctlOpActive
|
|
|
|
reg wci_ctlOpActive;
|
|
|
|
wire wci_ctlOpActive__D_IN, wci_ctlOpActive__EN;
|
|
|
|
|
|
|
|
// register wci_illegalEdge
|
|
|
|
reg wci_illegalEdge;
|
|
|
|
wire wci_illegalEdge__D_IN, wci_illegalEdge__EN;
|
|
|
|
|
|
|
|
// register wci_nState
|
|
|
|
reg [2 : 0] wci_nState;
|
|
|
|
reg [2 : 0] wci_nState__D_IN;
|
|
|
|
wire wci_nState__EN;
|
|
|
|
|
|
|
|
// register wci_reqF_countReg
|
|
|
|
reg [1 : 0] wci_reqF_countReg;
|
|
|
|
wire [1 : 0] wci_reqF_countReg__D_IN;
|
|
|
|
wire wci_reqF_countReg__EN;
|
|
|
|
|
|
|
|
// register wci_respF_c_r
|
|
|
|
reg [1 : 0] wci_respF_c_r;
|
|
|
|
wire [1 : 0] wci_respF_c_r__D_IN;
|
|
|
|
wire wci_respF_c_r__EN;
|
|
|
|
|
|
|
|
// register wci_respF_q_0
|
|
|
|
reg [33 : 0] wci_respF_q_0;
|
|
|
|
reg [33 : 0] wci_respF_q_0__D_IN;
|
|
|
|
wire wci_respF_q_0__EN;
|
|
|
|
|
|
|
|
// register wci_respF_q_1
|
|
|
|
reg [33 : 0] wci_respF_q_1;
|
|
|
|
reg [33 : 0] wci_respF_q_1__D_IN;
|
|
|
|
wire wci_respF_q_1__EN;
|
|
|
|
|
|
|
|
// register wci_sFlagReg
|
|
|
|
reg wci_sFlagReg;
|
|
|
|
wire wci_sFlagReg__D_IN, wci_sFlagReg__EN;
|
|
|
|
|
|
|
|
// register wci_sThreadBusy_d
|
|
|
|
reg wci_sThreadBusy_d;
|
|
|
|
wire wci_sThreadBusy_d__D_IN, wci_sThreadBusy_d__EN;
|
|
|
|
|
|
|
|
// register wmi_busyWithMessage
|
|
|
|
reg wmi_busyWithMessage;
|
|
|
|
wire wmi_busyWithMessage__D_IN, wmi_busyWithMessage__EN;
|
|
|
|
|
|
|
|
// register wmi_dhF_c_r
|
|
|
|
reg [1 : 0] wmi_dhF_c_r;
|
|
|
|
wire [1 : 0] wmi_dhF_c_r__D_IN;
|
|
|
|
wire wmi_dhF_c_r__EN;
|
|
|
|
|
|
|
|
// register wmi_dhF_q_0
|
|
|
|
reg [37 : 0] wmi_dhF_q_0;
|
|
|
|
reg [37 : 0] wmi_dhF_q_0__D_IN;
|
|
|
|
wire wmi_dhF_q_0__EN;
|
|
|
|
|
|
|
|
// register wmi_dhF_q_1
|
|
|
|
reg [37 : 0] wmi_dhF_q_1;
|
|
|
|
reg [37 : 0] wmi_dhF_q_1__D_IN;
|
|
|
|
wire wmi_dhF_q_1__EN;
|
|
|
|
|
|
|
|
// register wmi_mFlagF_c_r
|
|
|
|
reg [1 : 0] wmi_mFlagF_c_r;
|
|
|
|
wire [1 : 0] wmi_mFlagF_c_r__D_IN;
|
|
|
|
wire wmi_mFlagF_c_r__EN;
|
|
|
|
|
|
|
|
// register wmi_mFlagF_q_0
|
|
|
|
reg [31 : 0] wmi_mFlagF_q_0;
|
|
|
|
reg [31 : 0] wmi_mFlagF_q_0__D_IN;
|
|
|
|
wire wmi_mFlagF_q_0__EN;
|
|
|
|
|
|
|
|
// register wmi_mFlagF_q_1
|
|
|
|
reg [31 : 0] wmi_mFlagF_q_1;
|
|
|
|
reg [31 : 0] wmi_mFlagF_q_1__D_IN;
|
|
|
|
wire wmi_mFlagF_q_1__EN;
|
|
|
|
|
|
|
|
// register wmi_operateD
|
|
|
|
reg wmi_operateD;
|
|
|
|
wire wmi_operateD__D_IN, wmi_operateD__EN;
|
|
|
|
|
|
|
|
// register wmi_peerIsReady
|
|
|
|
reg wmi_peerIsReady;
|
|
|
|
wire wmi_peerIsReady__D_IN, wmi_peerIsReady__EN;
|
|
|
|
|
|
|
|
// register wmi_reqF_c_r
|
|
|
|
reg [1 : 0] wmi_reqF_c_r;
|
|
|
|
wire [1 : 0] wmi_reqF_c_r__D_IN;
|
|
|
|
wire wmi_reqF_c_r__EN;
|
|
|
|
|
|
|
|
// register wmi_reqF_q_0
|
|
|
|
reg [31 : 0] wmi_reqF_q_0;
|
|
|
|
reg [31 : 0] wmi_reqF_q_0__D_IN;
|
|
|
|
wire wmi_reqF_q_0__EN;
|
|
|
|
|
|
|
|
// register wmi_reqF_q_1
|
|
|
|
reg [31 : 0] wmi_reqF_q_1;
|
|
|
|
reg [31 : 0] wmi_reqF_q_1__D_IN;
|
|
|
|
wire wmi_reqF_q_1__EN;
|
|
|
|
|
|
|
|
// register wmi_sDataThreadBusy_d
|
|
|
|
reg wmi_sDataThreadBusy_d;
|
|
|
|
wire wmi_sDataThreadBusy_d__D_IN, wmi_sDataThreadBusy_d__EN;
|
|
|
|
|
|
|
|
// register wmi_sFlagReg
|
|
|
|
reg [31 : 0] wmi_sFlagReg;
|
|
|
|
wire [31 : 0] wmi_sFlagReg__D_IN;
|
|
|
|
wire wmi_sFlagReg__EN;
|
|
|
|
|
|
|
|
// register wmi_sThreadBusy_d
|
|
|
|
reg wmi_sThreadBusy_d;
|
|
|
|
wire wmi_sThreadBusy_d__D_IN, wmi_sThreadBusy_d__EN;
|
|
|
|
|
|
|
|
// register wsiM_burstKind
|
|
|
|
reg [1 : 0] wsiM_burstKind;
|
|
|
|
wire [1 : 0] wsiM_burstKind__D_IN;
|
|
|
|
wire wsiM_burstKind__EN;
|
|
|
|
|
|
|
|
// register wsiM_errorSticky
|
|
|
|
reg wsiM_errorSticky;
|
|
|
|
wire wsiM_errorSticky__D_IN, wsiM_errorSticky__EN;
|
|
|
|
|
|
|
|
// register wsiM_iMesgCount
|
|
|
|
reg [31 : 0] wsiM_iMesgCount;
|
|
|
|
wire [31 : 0] wsiM_iMesgCount__D_IN;
|
|
|
|
wire wsiM_iMesgCount__EN;
|
|
|
|
|
|
|
|
// register wsiM_operateD
|
|
|
|
reg wsiM_operateD;
|
|
|
|
wire wsiM_operateD__D_IN, wsiM_operateD__EN;
|
|
|
|
|
|
|
|
// register wsiM_pMesgCount
|
|
|
|
reg [31 : 0] wsiM_pMesgCount;
|
|
|
|
wire [31 : 0] wsiM_pMesgCount__D_IN;
|
|
|
|
wire wsiM_pMesgCount__EN;
|
|
|
|
|
|
|
|
// register wsiM_peerIsReady
|
|
|
|
reg wsiM_peerIsReady;
|
|
|
|
wire wsiM_peerIsReady__D_IN, wsiM_peerIsReady__EN;
|
|
|
|
|
|
|
|
// register wsiM_reqFifo_c_r
|
|
|
|
reg [1 : 0] wsiM_reqFifo_c_r;
|
|
|
|
wire [1 : 0] wsiM_reqFifo_c_r__D_IN;
|
|
|
|
wire wsiM_reqFifo_c_r__EN;
|
|
|
|
|
|
|
|
// register wsiM_reqFifo_q_0
|
|
|
|
reg [60 : 0] wsiM_reqFifo_q_0;
|
|
|
|
reg [60 : 0] wsiM_reqFifo_q_0__D_IN;
|
|
|
|
wire wsiM_reqFifo_q_0__EN;
|
|
|
|
|
|
|
|
// register wsiM_reqFifo_q_1
|
|
|
|
reg [60 : 0] wsiM_reqFifo_q_1;
|
|
|
|
reg [60 : 0] wsiM_reqFifo_q_1__D_IN;
|
|
|
|
wire wsiM_reqFifo_q_1__EN;
|
|
|
|
|
|
|
|
// register wsiM_sThreadBusy_d
|
|
|
|
reg wsiM_sThreadBusy_d;
|
|
|
|
wire wsiM_sThreadBusy_d__D_IN, wsiM_sThreadBusy_d__EN;
|
|
|
|
|
|
|
|
// register wsiM_statusR
|
|
|
|
reg [7 : 0] wsiM_statusR;
|
|
|
|
wire [7 : 0] wsiM_statusR__D_IN;
|
|
|
|
wire wsiM_statusR__EN;
|
|
|
|
|
|
|
|
// register wsiM_tBusyCount
|
|
|
|
reg [31 : 0] wsiM_tBusyCount;
|
|
|
|
wire [31 : 0] wsiM_tBusyCount__D_IN;
|
|
|
|
wire wsiM_tBusyCount__EN;
|
|
|
|
|
|
|
|
// register wsiM_trafficSticky
|
|
|
|
reg wsiM_trafficSticky;
|
|
|
|
wire wsiM_trafficSticky__D_IN, wsiM_trafficSticky__EN;
|
|
|
|
|
|
|
|
// register wsiS_burstKind
|
|
|
|
reg [1 : 0] wsiS_burstKind;
|
|
|
|
wire [1 : 0] wsiS_burstKind__D_IN;
|
|
|
|
wire wsiS_burstKind__EN;
|
|
|
|
|
|
|
|
// register wsiS_errorSticky
|
|
|
|
reg wsiS_errorSticky;
|
|
|
|
wire wsiS_errorSticky__D_IN, wsiS_errorSticky__EN;
|
|
|
|
|
|
|
|
// register wsiS_iMesgCount
|
|
|
|
reg [31 : 0] wsiS_iMesgCount;
|
|
|
|
wire [31 : 0] wsiS_iMesgCount__D_IN;
|
|
|
|
wire wsiS_iMesgCount__EN;
|
|
|
|
|
|
|
|
// register wsiS_operateD
|
|
|
|
reg wsiS_operateD;
|
|
|
|
wire wsiS_operateD__D_IN, wsiS_operateD__EN;
|
|
|
|
|
|
|
|
// register wsiS_pMesgCount
|
|
|
|
reg [31 : 0] wsiS_pMesgCount;
|
|
|
|
wire [31 : 0] wsiS_pMesgCount__D_IN;
|
|
|
|
wire wsiS_pMesgCount__EN;
|
|
|
|
|
|
|
|
// register wsiS_peerIsReady
|
|
|
|
reg wsiS_peerIsReady;
|
|
|
|
wire wsiS_peerIsReady__D_IN, wsiS_peerIsReady__EN;
|
|
|
|
|
|
|
|
// register wsiS_reqFifo_countReg
|
|
|
|
reg [1 : 0] wsiS_reqFifo_countReg;
|
|
|
|
wire [1 : 0] wsiS_reqFifo_countReg__D_IN;
|
|
|
|
wire wsiS_reqFifo_countReg__EN;
|
|
|
|
|
|
|
|
// register wsiS_statusR
|
|
|
|
reg [7 : 0] wsiS_statusR;
|
|
|
|
wire [7 : 0] wsiS_statusR__D_IN;
|
|
|
|
wire wsiS_statusR__EN;
|
|
|
|
|
|
|
|
// register wsiS_tBusyCount
|
|
|
|
reg [31 : 0] wsiS_tBusyCount;
|
|
|
|
wire [31 : 0] wsiS_tBusyCount__D_IN;
|
|
|
|
wire wsiS_tBusyCount__EN;
|
|
|
|
|
|
|
|
// register wsiS_trafficSticky
|
|
|
|
reg wsiS_trafficSticky;
|
|
|
|
wire wsiS_trafficSticky__D_IN, wsiS_trafficSticky__EN;
|
|
|
|
|
|
|
|
// register wsiWordsRemain
|
|
|
|
reg [11 : 0] wsiWordsRemain;
|
|
|
|
wire [11 : 0] wsiWordsRemain__D_IN;
|
|
|
|
wire wsiWordsRemain__EN;
|
|
|
|
|
|
|
|
// register zeroLengthMesg
|
|
|
|
reg zeroLengthMesg;
|
|
|
|
wire zeroLengthMesg__D_IN, zeroLengthMesg__EN;
|
|
|
|
|
|
|
|
// ports of submodule wci_isReset
|
|
|
|
wire wci_isReset__VAL;
|
|
|
|
|
|
|
|
// ports of submodule wci_reqF
|
|
|
|
wire [59 : 0] wci_reqF__D_IN, wci_reqF__D_OUT;
|
|
|
|
wire wci_reqF__CLR, wci_reqF__DEQ, wci_reqF__EMPTY_N, wci_reqF__ENQ;
|
|
|
|
|
|
|
|
// ports of submodule wmi_isReset
|
|
|
|
wire wmi_isReset__VAL;
|
|
|
|
|
|
|
|
// ports of submodule wmi_respF
|
|
|
|
wire [31 : 0] wmi_respF__D_IN;
|
|
|
|
wire [31:0] wmi_respF__D_OUT;
|
|
|
|
wire wmi_respF__CLR,
|
|
|
|
wmi_respF__DEQ,
|
|
|
|
wmi_respF__EMPTY_N,
|
|
|
|
wmi_respF__ENQ,
|
|
|
|
wmi_respF__FULL_N;
|
|
|
|
|
|
|
|
// ports of submodule wsiM_isReset
|
|
|
|
wire wsiM_isReset__VAL;
|
|
|
|
|
|
|
|
// ports of submodule wsiS_isReset
|
|
|
|
wire wsiS_isReset__VAL;
|
|
|
|
|
|
|
|
// ports of submodule wsiS_reqFifo
|
|
|
|
wire [60 : 0] wsiS_reqFifo__D_IN, wsiS_reqFifo__D_OUT;
|
|
|
|
wire wsiS_reqFifo__CLR,
|
|
|
|
wsiS_reqFifo__DEQ,
|
|
|
|
wsiS_reqFifo__EMPTY_N,
|
|
|
|
wsiS_reqFifo__ENQ,
|
|
|
|
wsiS_reqFifo__FULL_N;
|
|
|
|
|
|
|
|
// rule scheduling signals
|
|
|
|
wire CAN_FIRE_RL_fabRespCredit_accumulate,
|
|
|
|
CAN_FIRE_RL_mesgPreRequest__dreg_update,
|
|
|
|
CAN_FIRE_RL_operating_actions,
|
|
|
|
CAN_FIRE_RL_wci_Es_doAlways_Req,
|
|
|
|
CAN_FIRE_RL_wci_cfrd,
|
|
|
|
CAN_FIRE_RL_wci_cfwr,
|
|
|
|
CAN_FIRE_RL_wci_ctlAckReg__dreg_update,
|
|
|
|
CAN_FIRE_RL_wci_ctl_op_complete,
|
|
|
|
CAN_FIRE_RL_wci_ctl_op_start,
|
|
|
|
CAN_FIRE_RL_wci_ctrl_EiI,
|
|
|
|
CAN_FIRE_RL_wci_ctrl_IsO,
|
|
|
|
CAN_FIRE_RL_wci_ctrl_OrE,
|
|
|
|
CAN_FIRE_RL_wci_reqF__updateLevelCounter,
|
|
|
|
CAN_FIRE_RL_wci_reqF_enq,
|
|
|
|
CAN_FIRE_RL_wci_request_decode,
|
|
|
|
CAN_FIRE_RL_wci_respF_both,
|
|
|
|
CAN_FIRE_RL_wci_respF_decCtr,
|
|
|
|
CAN_FIRE_RL_wci_respF_deq,
|
|
|
|
CAN_FIRE_RL_wci_respF_incCtr,
|
|
|
|
CAN_FIRE_RL_wci_sFlagReg__dreg_update,
|
|
|
|
CAN_FIRE_RL_wci_sThreadBusy_reg,
|
|
|
|
CAN_FIRE_RL_wmi_Em_doAlways,
|
|
|
|
CAN_FIRE_RL_wmi_dhF_both,
|
|
|
|
CAN_FIRE_RL_wmi_dhF_decCtr,
|
|
|
|
CAN_FIRE_RL_wmi_dhF_deq,
|
|
|
|
CAN_FIRE_RL_wmi_dhF_incCtr,
|
|
|
|
CAN_FIRE_RL_wmi_mFlagF_both,
|
|
|
|
CAN_FIRE_RL_wmi_mFlagF_decCtr,
|
|
|
|
CAN_FIRE_RL_wmi_mFlagF_incCtr,
|
|
|
|
CAN_FIRE_RL_wmi_operateD__dreg_update,
|
|
|
|
CAN_FIRE_RL_wmi_peerIsReady__dreg_update,
|
|
|
|
CAN_FIRE_RL_wmi_reqF_both,
|
|
|
|
CAN_FIRE_RL_wmi_reqF_decCtr,
|
|
|
|
CAN_FIRE_RL_wmi_reqF_deq,
|
|
|
|
CAN_FIRE_RL_wmi_reqF_incCtr,
|
|
|
|
CAN_FIRE_RL_wmi_respAdvance,
|
|
|
|
CAN_FIRE_RL_wmi_sDataThreadBusy_d__dreg_update,
|
|
|
|
CAN_FIRE_RL_wmi_sThreadBusy_d__dreg_update,
|
|
|
|
CAN_FIRE_RL_wmrd_mesgBegin,
|
|
|
|
CAN_FIRE_RL_wmrd_mesgBodyPreRequest,
|
|
|
|
CAN_FIRE_RL_wmrd_mesgBodyRequest,
|
|
|
|
CAN_FIRE_RL_wmrd_mesgBodyResponse,
|
|
|
|
CAN_FIRE_RL_wmwt_doAbort,
|
|
|
|
CAN_FIRE_RL_wmwt_mesgBegin,
|
|
|
|
CAN_FIRE_RL_wmwt_messageFinalize,
|
|
|
|
CAN_FIRE_RL_wmwt_messagePushImprecise,
|
|
|
|
CAN_FIRE_RL_wmwt_messagePushPrecise,
|
|
|
|
CAN_FIRE_RL_wmwt_requestPrecise,
|
|
|
|
CAN_FIRE_RL_wsiM_ext_status_assign,
|
|
|
|
CAN_FIRE_RL_wsiM_inc_tBusyCount,
|
|
|
|
CAN_FIRE_RL_wsiM_operateD__dreg_update,
|
|
|
|
CAN_FIRE_RL_wsiM_peerIsReady__dreg_update,
|
|
|
|
CAN_FIRE_RL_wsiM_reqFifo_both,
|
|
|
|
CAN_FIRE_RL_wsiM_reqFifo_decCtr,
|
|
|
|
CAN_FIRE_RL_wsiM_reqFifo_deq,
|
|
|
|
CAN_FIRE_RL_wsiM_reqFifo_incCtr,
|
|
|
|
CAN_FIRE_RL_wsiM_sThreadBusy_reg,
|
|
|
|
CAN_FIRE_RL_wsiM_update_statusR,
|
|
|
|
CAN_FIRE_RL_wsiS_ext_status_assign,
|
|
|
|
CAN_FIRE_RL_wsiS_inc_tBusyCount,
|
|
|
|
CAN_FIRE_RL_wsiS_operateD__dreg_update,
|
|
|
|
CAN_FIRE_RL_wsiS_peerIsReady__dreg_update,
|
|
|
|
CAN_FIRE_RL_wsiS_reqFifo__updateLevelCounter,
|
|
|
|
CAN_FIRE_RL_wsiS_reqFifo_enq,
|
|
|
|
CAN_FIRE_RL_wsiS_update_statusR,
|
|
|
|
CAN_FIRE_RL_wsi_Es_doAlways,
|
|
|
|
CAN_FIRE_RL_wsipass_doMessagePush,
|
|
|
|
CAN_FIRE_wciS0_mAddr,
|
|
|
|
CAN_FIRE_wciS0_mAddrSpace,
|
|
|
|
CAN_FIRE_wciS0_mByteEn,
|
|
|
|
CAN_FIRE_wciS0_mCmd,
|
|
|
|
CAN_FIRE_wciS0_mData,
|
|
|
|
CAN_FIRE_wciS0_mFlag,
|
|
|
|
CAN_FIRE_wmiM_sData,
|
|
|
|
CAN_FIRE_wmiM_sDataThreadBusy,
|
|
|
|
CAN_FIRE_wmiM_sFlag,
|
|
|
|
CAN_FIRE_wmiM_sReset_n,
|
|
|
|
CAN_FIRE_wmiM_sResp,
|
|
|
|
CAN_FIRE_wmiM_sRespLast,
|
|
|
|
CAN_FIRE_wmiM_sThreadBusy,
|
|
|
|
CAN_FIRE_wsiM1_sReset_n,
|
|
|
|
CAN_FIRE_wsiM1_sThreadBusy,
|
|
|
|
CAN_FIRE_wsiS1_mBurstLength,
|
|
|
|
CAN_FIRE_wsiS1_mBurstPrecise,
|
|
|
|
CAN_FIRE_wsiS1_mByteEn,
|
|
|
|
CAN_FIRE_wsiS1_mCmd,
|
|
|
|
CAN_FIRE_wsiS1_mData,
|
|
|
|
CAN_FIRE_wsiS1_mDataInfo,
|
|
|
|
CAN_FIRE_wsiS1_mReqInfo,
|
|
|
|
CAN_FIRE_wsiS1_mReqLast,
|
|
|
|
CAN_FIRE_wsiS1_mReset_n,
|
|
|
|
WILL_FIRE_RL_fabRespCredit_accumulate,
|
|
|
|
WILL_FIRE_RL_mesgPreRequest__dreg_update,
|
|
|
|
WILL_FIRE_RL_operating_actions,
|
|
|
|
WILL_FIRE_RL_wci_Es_doAlways_Req,
|
|
|
|
WILL_FIRE_RL_wci_cfrd,
|
|
|
|
WILL_FIRE_RL_wci_cfwr,
|
|
|
|
WILL_FIRE_RL_wci_ctlAckReg__dreg_update,
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete,
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_start,
|
|
|
|
WILL_FIRE_RL_wci_ctrl_EiI,
|
|
|
|
WILL_FIRE_RL_wci_ctrl_IsO,
|
|
|
|
WILL_FIRE_RL_wci_ctrl_OrE,
|
|
|
|
WILL_FIRE_RL_wci_reqF__updateLevelCounter,
|
|
|
|
WILL_FIRE_RL_wci_reqF_enq,
|
|
|
|
WILL_FIRE_RL_wci_request_decode,
|
|
|
|
WILL_FIRE_RL_wci_respF_both,
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr,
|
|
|
|
WILL_FIRE_RL_wci_respF_deq,
|
|
|
|
WILL_FIRE_RL_wci_respF_incCtr,
|
|
|
|
WILL_FIRE_RL_wci_sFlagReg__dreg_update,
|
|
|
|
WILL_FIRE_RL_wci_sThreadBusy_reg,
|
|
|
|
WILL_FIRE_RL_wmi_Em_doAlways,
|
|
|
|
WILL_FIRE_RL_wmi_dhF_both,
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr,
|
|
|
|
WILL_FIRE_RL_wmi_dhF_deq,
|
|
|
|
WILL_FIRE_RL_wmi_dhF_incCtr,
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_both,
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_decCtr,
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_incCtr,
|
|
|
|
WILL_FIRE_RL_wmi_operateD__dreg_update,
|
|
|
|
WILL_FIRE_RL_wmi_peerIsReady__dreg_update,
|
|
|
|
WILL_FIRE_RL_wmi_reqF_both,
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr,
|
|
|
|
WILL_FIRE_RL_wmi_reqF_deq,
|
|
|
|
WILL_FIRE_RL_wmi_reqF_incCtr,
|
|
|
|
WILL_FIRE_RL_wmi_respAdvance,
|
|
|
|
WILL_FIRE_RL_wmi_sDataThreadBusy_d__dreg_update,
|
|
|
|
WILL_FIRE_RL_wmi_sThreadBusy_d__dreg_update,
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin,
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyPreRequest,
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest,
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse,
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort,
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin,
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize,
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise,
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushPrecise,
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise,
|
|
|
|
WILL_FIRE_RL_wsiM_ext_status_assign,
|
|
|
|
WILL_FIRE_RL_wsiM_inc_tBusyCount,
|
|
|
|
WILL_FIRE_RL_wsiM_operateD__dreg_update,
|
|
|
|
WILL_FIRE_RL_wsiM_peerIsReady__dreg_update,
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_both,
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr,
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_deq,
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_incCtr,
|
|
|
|
WILL_FIRE_RL_wsiM_sThreadBusy_reg,
|
|
|
|
WILL_FIRE_RL_wsiM_update_statusR,
|
|
|
|
WILL_FIRE_RL_wsiS_ext_status_assign,
|
|
|
|
WILL_FIRE_RL_wsiS_inc_tBusyCount,
|
|
|
|
WILL_FIRE_RL_wsiS_operateD__dreg_update,
|
|
|
|
WILL_FIRE_RL_wsiS_peerIsReady__dreg_update,
|
|
|
|
WILL_FIRE_RL_wsiS_reqFifo__updateLevelCounter,
|
|
|
|
WILL_FIRE_RL_wsiS_reqFifo_enq,
|
|
|
|
WILL_FIRE_RL_wsiS_update_statusR,
|
|
|
|
WILL_FIRE_RL_wsi_Es_doAlways,
|
|
|
|
WILL_FIRE_RL_wsipass_doMessagePush,
|
|
|
|
WILL_FIRE_wciS0_mAddr,
|
|
|
|
WILL_FIRE_wciS0_mAddrSpace,
|
|
|
|
WILL_FIRE_wciS0_mByteEn,
|
|
|
|
WILL_FIRE_wciS0_mCmd,
|
|
|
|
WILL_FIRE_wciS0_mData,
|
|
|
|
WILL_FIRE_wciS0_mFlag,
|
|
|
|
WILL_FIRE_wmiM_sData,
|
|
|
|
WILL_FIRE_wmiM_sDataThreadBusy,
|
|
|
|
WILL_FIRE_wmiM_sFlag,
|
|
|
|
WILL_FIRE_wmiM_sReset_n,
|
|
|
|
WILL_FIRE_wmiM_sResp,
|
|
|
|
WILL_FIRE_wmiM_sRespLast,
|
|
|
|
WILL_FIRE_wmiM_sThreadBusy,
|
|
|
|
WILL_FIRE_wsiM1_sReset_n,
|
|
|
|
WILL_FIRE_wsiM1_sThreadBusy,
|
|
|
|
WILL_FIRE_wsiS1_mBurstLength,
|
|
|
|
WILL_FIRE_wsiS1_mBurstPrecise,
|
|
|
|
WILL_FIRE_wsiS1_mByteEn,
|
|
|
|
WILL_FIRE_wsiS1_mCmd,
|
|
|
|
WILL_FIRE_wsiS1_mData,
|
|
|
|
WILL_FIRE_wsiS1_mDataInfo,
|
|
|
|
WILL_FIRE_wsiS1_mReqInfo,
|
|
|
|
WILL_FIRE_wsiS1_mReqLast,
|
|
|
|
WILL_FIRE_wsiS1_mReset_n;
|
|
|
|
|
|
|
|
// inputs to muxes for submodule ports
|
|
|
|
reg [33 : 0] MUX_wci_respF_q_0__write_1__VAL_1;
|
|
|
|
reg [31 : 0] MUX_wmi_reqF_q_0__write_1__VAL_1;
|
|
|
|
wire [60 : 0] MUX_wsiM_reqFifo_q_0__write_1__VAL_1,
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__VAL_2,
|
|
|
|
MUX_wsiM_reqFifo_q_1__write_1__VAL_1,
|
|
|
|
MUX_wsiM_reqFifo_x_wire__wset_1__VAL_1;
|
|
|
|
wire [37 : 0] MUX_wmi_dhF_q_0__write_1__VAL_1,
|
|
|
|
MUX_wmi_dhF_q_0__write_1__VAL_2,
|
|
|
|
MUX_wmi_dhF_q_1__write_1__VAL_1,
|
|
|
|
MUX_wmi_dhF_x_wire__wset_1__VAL_1,
|
|
|
|
MUX_wmi_dhF_x_wire__wset_1__VAL_2;
|
|
|
|
wire [33 : 0] MUX_wci_respF_q_0__write_1__VAL_2,
|
|
|
|
MUX_wci_respF_q_1__write_1__VAL_2,
|
|
|
|
MUX_wci_respF_x_wire__wset_1__VAL_1,
|
|
|
|
MUX_wci_respF_x_wire__wset_1__VAL_2;
|
|
|
|
wire [31 : 0] MUX_mesgCount__write_1__VAL_1,
|
|
|
|
MUX_thisMesg__write_1__VAL_1,
|
|
|
|
MUX_thisMesg__write_1__VAL_2,
|
|
|
|
MUX_wmi_mFlagF_q_0__write_1__VAL_1,
|
|
|
|
MUX_wmi_mFlagF_q_1__write_1__VAL_1,
|
|
|
|
MUX_wmi_mFlagF_x_wire__wset_1__VAL_1,
|
|
|
|
MUX_wmi_mFlagF_x_wire__wset_1__VAL_3,
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_2,
|
|
|
|
MUX_wmi_reqF_q_1__write_1__VAL_2,
|
|
|
|
MUX_wmi_reqF_x_wire__wset_1__VAL_1,
|
|
|
|
MUX_wmi_reqF_x_wire__wset_1__VAL_2,
|
|
|
|
MUX_wmi_reqF_x_wire__wset_1__VAL_3;
|
|
|
|
wire [15 : 0] MUX_unrollCnt__write_1__VAL_1, MUX_unrollCnt__write_1__VAL_2;
|
|
|
|
wire [14 : 0] MUX_mesgLength__write_1__VAL_2, MUX_mesgLength__write_1__VAL_4;
|
|
|
|
wire [13 : 0] MUX_fabWordsRemain__write_1__VAL_1,
|
|
|
|
MUX_fabWordsRemain__write_1__VAL_2,
|
|
|
|
MUX_mesgReqAddr__write_1__VAL_2;
|
|
|
|
wire [11 : 0] MUX_wsiWordsRemain__write_1__VAL_2;
|
|
|
|
wire [8 : 0] MUX_opcode__write_1__VAL_2;
|
|
|
|
wire [3 : 0] MUX_fabRespCredit_value__write_1__VAL_2;
|
|
|
|
wire [1 : 0] MUX_wci_respF_c_r__write_1__VAL_1,
|
|
|
|
MUX_wci_respF_c_r__write_1__VAL_2,
|
|
|
|
MUX_wmi_dhF_c_r__write_1__VAL_1,
|
|
|
|
MUX_wmi_dhF_c_r__write_1__VAL_2,
|
|
|
|
MUX_wmi_mFlagF_c_r__write_1__VAL_1,
|
|
|
|
MUX_wmi_mFlagF_c_r__write_1__VAL_2,
|
|
|
|
MUX_wmi_reqF_c_r__write_1__VAL_1,
|
|
|
|
MUX_wmi_reqF_c_r__write_1__VAL_2,
|
|
|
|
MUX_wsiM_reqFifo_c_r__write_1__VAL_1,
|
|
|
|
MUX_wsiM_reqFifo_c_r__write_1__VAL_2;
|
|
|
|
wire MUX_endOfMessage__write_1__SEL_1,
|
|
|
|
MUX_impreciseBurst__write_1__SEL_2,
|
|
|
|
MUX_lastMesg__write_1__SEL_2,
|
|
|
|
MUX_mesgCount__write_1__SEL_1,
|
|
|
|
MUX_mesgLength__write_1__SEL_2,
|
|
|
|
MUX_wci_illegalEdge__write_1__SEL_1,
|
|
|
|
MUX_wci_illegalEdge__write_1__SEL_2,
|
|
|
|
MUX_wci_illegalEdge__write_1__VAL_2,
|
|
|
|
MUX_wci_respF_q_0__write_1__SEL_1,
|
|
|
|
MUX_wci_respF_q_1__write_1__SEL_1,
|
|
|
|
MUX_wmi_dhF_q_0__write_1__SEL_2,
|
|
|
|
MUX_wmi_dhF_q_1__write_1__SEL_2,
|
|
|
|
MUX_wmi_mFlagF_q_0__write_1__SEL_2,
|
|
|
|
MUX_wmi_mFlagF_q_1__write_1__SEL_2,
|
|
|
|
MUX_wmi_mFlagF_x_wire__wset_1__SEL_2,
|
|
|
|
MUX_wmi_reqF_q_0__write_1__SEL_1,
|
|
|
|
MUX_wmi_reqF_q_1__write_1__SEL_1,
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__SEL_2,
|
|
|
|
MUX_wsiM_reqFifo_q_1__write_1__SEL_2,
|
|
|
|
MUX_wsiM_reqFifo_x_wire__wset_1__SEL_1;
|
|
|
|
|
|
|
|
// remaining internal signals
|
|
|
|
reg [63 : 0] v__h15314,
|
|
|
|
v__h16237,
|
|
|
|
v__h16483,
|
|
|
|
v__h18176,
|
|
|
|
v__h18253,
|
|
|
|
v__h19470,
|
|
|
|
v__h2653,
|
|
|
|
v__h2800,
|
|
|
|
v__h3699;
|
|
|
|
reg [31 : 0] value__h6065, x_data__h15447;
|
|
|
|
wire [31 : 0] rdat__h15540;
|
|
|
|
wire [23 : 0] mesgMetaF_length__h16810, mesgMetaF_length__h17723;
|
|
|
|
wire [15 : 0] wsiBurstLength__h18454, x__h15543, x_length__h17087;
|
|
|
|
wire [13 : 0] IF_mesgLength_22_BIT_14_23_THEN_mesgLength_22__ETC___d753,
|
|
|
|
addr__h16647,
|
|
|
|
b__h19084,
|
|
|
|
mlp1B__h16631,
|
|
|
|
mlp1__h16630;
|
|
|
|
wire [11 : 0] bl__h17580, x_burstLength__h18559;
|
|
|
|
wire [7 : 0] mesgMetaF_opcode__h16809;
|
|
|
|
wire [3 : 0] b__h13937, x_byteEn__h18561;
|
|
|
|
wire NOT_wmi_reqF_c_r_46_EQ_2_47_48_AND_wmi_operate_ETC___d290,
|
|
|
|
NOT_wsiS_reqFifo_countReg_53_ULE_1_54___d355,
|
|
|
|
wsiS_reqFifo_i_notEmpty__52_AND_wmi_operateD_5_ETC___d165,
|
|
|
|
x__h16715,
|
|
|
|
x__h18884;
|
|
|
|
|
|
|
|
// action method wciS0_mCmd
|
|
|
|
assign CAN_FIRE_wciS0_mCmd = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wciS0_mCmd = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wciS0_mAddrSpace
|
|
|
|
assign CAN_FIRE_wciS0_mAddrSpace = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wciS0_mAddrSpace = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wciS0_mByteEn
|
|
|
|
assign CAN_FIRE_wciS0_mByteEn = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wciS0_mByteEn = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wciS0_mAddr
|
|
|
|
assign CAN_FIRE_wciS0_mAddr = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wciS0_mAddr = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wciS0_mData
|
|
|
|
assign CAN_FIRE_wciS0_mData = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wciS0_mData = 1'b1 ;
|
|
|
|
|
|
|
|
// value method wciS0_sResp
|
|
|
|
assign wciS0_SResp = wci_respF_q_0[33:32] ;
|
|
|
|
|
|
|
|
// value method wciS0_sData
|
|
|
|
assign wciS0_SData = wci_respF_q_0[31:0] ;
|
|
|
|
|
|
|
|
// value method wciS0_sThreadBusy
|
|
|
|
assign wciS0_SThreadBusy = wci_reqF_countReg > 2'b01 || wci_isReset__VAL ;
|
|
|
|
|
|
|
|
// value method wciS0_sFlag
|
|
|
|
assign wciS0_SFlag = { 1'b1, wci_sFlagReg } ;
|
|
|
|
|
|
|
|
// action method wciS0_mFlag
|
|
|
|
assign CAN_FIRE_wciS0_mFlag = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wciS0_mFlag = 1'b1 ;
|
|
|
|
|
|
|
|
// value method wmiM_mCmd
|
|
|
|
assign wmiM_MCmd = wmi_sThreadBusy_d ? 3'b000 : wmi_reqF_q_0[31:29] ;
|
|
|
|
|
|
|
|
// value method wmiM_mReqLast
|
|
|
|
assign wmiM_MReqLast = wmi_reqF_q_0[28] ;
|
|
|
|
|
|
|
|
// value method wmiM_mReqInfo
|
|
|
|
assign wmiM_MReqInfo = wmi_reqF_q_0[27] ;
|
|
|
|
|
|
|
|
// value method wmiM_mAddrSpace
|
|
|
|
assign wmiM_MAddrSpace = wmi_reqF_q_0[26] ;
|
|
|
|
|
|
|
|
// value method wmiM_mAddr
|
|
|
|
assign wmiM_MAddr = wmi_reqF_q_0[25:12] ;
|
|
|
|
|
|
|
|
// value method wmiM_mBurstLength
|
|
|
|
assign wmiM_MBurstLength = wmi_reqF_q_0[11:0] ;
|
|
|
|
|
|
|
|
// value method wmiM_mDataValid
|
|
|
|
assign wmiM_MDataValid = !wmi_sDataThreadBusy_d && wmi_dhF_q_0[37] ;
|
|
|
|
|
|
|
|
// value method wmiM_mDataLast
|
|
|
|
assign wmiM_MDataLast = wmi_dhF_q_0[36] ;
|
|
|
|
|
|
|
|
// value method wmiM_mData
|
|
|
|
assign wmiM_MData = wmi_dhF_q_0[35:4] ;
|
|
|
|
|
|
|
|
// value method wmiM_mDataByteEn
|
|
|
|
assign wmiM_MDataByteEn = wmi_dhF_q_0[3:0] ;
|
|
|
|
|
|
|
|
// action method wmiM_sResp
|
|
|
|
assign CAN_FIRE_wmiM_sResp = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wmiM_sResp = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wmiM_sData
|
|
|
|
assign CAN_FIRE_wmiM_sData = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wmiM_sData = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wmiM_sThreadBusy
|
|
|
|
assign CAN_FIRE_wmiM_sThreadBusy = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wmiM_sThreadBusy = wmiM_SThreadBusy ;
|
|
|
|
|
|
|
|
// action method wmiM_sDataThreadBusy
|
|
|
|
assign CAN_FIRE_wmiM_sDataThreadBusy = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wmiM_sDataThreadBusy = wmiM_SDataThreadBusy ;
|
|
|
|
|
|
|
|
// action method wmiM_sRespLast
|
|
|
|
assign CAN_FIRE_wmiM_sRespLast = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wmiM_sRespLast = wmiM_SRespLast ;
|
|
|
|
|
|
|
|
// action method wmiM_sFlag
|
|
|
|
assign CAN_FIRE_wmiM_sFlag = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wmiM_sFlag = 1'b1 ;
|
|
|
|
|
|
|
|
// value method wmiM_mFlag
|
|
|
|
assign wmiM_MFlag = wmi_sThreadBusy_d ? 32'b00000000000000000000000000000000 : wmi_mFlagF_q_0 ;
|
|
|
|
|
|
|
|
// value method wmiM_mReset_n
|
|
|
|
assign wmiM_MReset_n = !wmi_isReset__VAL && wmi_operateD ;
|
|
|
|
|
|
|
|
// action method wmiM_sReset_n
|
|
|
|
assign CAN_FIRE_wmiM_sReset_n = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wmiM_sReset_n = wmiM_SReset_n ;
|
|
|
|
|
|
|
|
// value method wsiM1_mCmd
|
|
|
|
assign wsiM1_MCmd = wsiM_sThreadBusy_d ? 3'b000 : wsiM_reqFifo_q_0[60:58] ;
|
|
|
|
|
|
|
|
// value method wsiM1_mReqLast
|
|
|
|
assign wsiM1_MReqLast = !wsiM_sThreadBusy_d && wsiM_reqFifo_q_0[57] ;
|
|
|
|
|
|
|
|
// value method wsiM1_mBurstPrecise
|
|
|
|
assign wsiM1_MBurstPrecise = !wsiM_sThreadBusy_d && wsiM_reqFifo_q_0[56] ;
|
|
|
|
|
|
|
|
// value method wsiM1_mBurstLength
|
|
|
|
assign wsiM1_MBurstLength =
|
|
|
|
wsiM_sThreadBusy_d ? 12'b000000000000 : wsiM_reqFifo_q_0[55:44] ;
|
|
|
|
|
|
|
|
// value method wsiM1_mData
|
|
|
|
assign wsiM1_MData = wsiM_reqFifo_q_0[43:12] ;
|
|
|
|
|
|
|
|
// value method wsiM1_mByteEn
|
|
|
|
assign wsiM1_MByteEn = wsiM_reqFifo_q_0[11:8] ;
|
|
|
|
|
|
|
|
// value method wsiM1_mReqInfo
|
|
|
|
assign wsiM1_MReqInfo = wsiM_sThreadBusy_d ? 8'b00000000 : wsiM_reqFifo_q_0[7:0] ;
|
|
|
|
|
|
|
|
// action method wsiM1_sThreadBusy
|
|
|
|
assign CAN_FIRE_wsiM1_sThreadBusy = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiM1_sThreadBusy = wsiM1_SThreadBusy ;
|
|
|
|
|
|
|
|
// value method wsiM1_mReset_n
|
|
|
|
assign wsiM1_MReset_n = !wsiM_isReset__VAL && wsiM_operateD ;
|
|
|
|
|
|
|
|
// action method wsiM1_sReset_n
|
|
|
|
assign CAN_FIRE_wsiM1_sReset_n = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiM1_sReset_n = wsiM1_SReset_n ;
|
|
|
|
|
|
|
|
// action method wsiS1_mCmd
|
|
|
|
assign CAN_FIRE_wsiS1_mCmd = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mCmd = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wsiS1_mReqLast
|
|
|
|
assign CAN_FIRE_wsiS1_mReqLast = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mReqLast = wsiS1_MReqLast ;
|
|
|
|
|
|
|
|
// action method wsiS1_mBurstPrecise
|
|
|
|
assign CAN_FIRE_wsiS1_mBurstPrecise = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mBurstPrecise = wsiS1_MBurstPrecise ;
|
|
|
|
|
|
|
|
// action method wsiS1_mBurstLength
|
|
|
|
assign CAN_FIRE_wsiS1_mBurstLength = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mBurstLength = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wsiS1_mData
|
|
|
|
assign CAN_FIRE_wsiS1_mData = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mData = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wsiS1_mByteEn
|
|
|
|
assign CAN_FIRE_wsiS1_mByteEn = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mByteEn = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wsiS1_mReqInfo
|
|
|
|
assign CAN_FIRE_wsiS1_mReqInfo = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mReqInfo = 1'b1 ;
|
|
|
|
|
|
|
|
// action method wsiS1_mDataInfo
|
|
|
|
assign CAN_FIRE_wsiS1_mDataInfo = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mDataInfo = 1'b1 ;
|
|
|
|
|
|
|
|
// value method wsiS1_sThreadBusy
|
|
|
|
assign wsiS1_SThreadBusy =
|
|
|
|
NOT_wsiS_reqFifo_countReg_53_ULE_1_54___d355 ||
|
|
|
|
wsiS_isReset__VAL ||
|
|
|
|
!wsiS_operateD ||
|
|
|
|
!wsiS_peerIsReady ;
|
|
|
|
|
|
|
|
// value method wsiS1_sReset_n
|
|
|
|
assign wsiS1_SReset_n = !wsiS_isReset__VAL && wsiS_operateD ;
|
|
|
|
|
|
|
|
// action method wsiS1_mReset_n
|
|
|
|
assign CAN_FIRE_wsiS1_mReset_n = 1'b1 ;
|
|
|
|
assign WILL_FIRE_wsiS1_mReset_n = wsiS1_MReset_n ;
|
|
|
|
|
|
|
|
// submodule wci_isReset
|
|
|
|
ResetToBool wci_isReset(.RST(wciS0_MReset_n), .VAL(wci_isReset__VAL));
|
|
|
|
|
|
|
|
|
|
|
|
wire full_not_used;
|
|
|
|
// submodule wci_reqF
|
|
|
|
SizedFIFO_a size_fifoA(
|
|
|
|
|
|
|
|
.CLK(wciS0_Clk),
|
|
|
|
.D_IN(wci_reqF__D_IN),
|
|
|
|
.ENQ(wci_reqF__ENQ),
|
|
|
|
.DEQ(wci_reqF__DEQ),
|
|
|
|
.CLR(wci_reqF__CLR),
|
|
|
|
.D_OUT(wci_reqF__D_OUT),
|
|
|
|
.FULL_N(full_not_used),
|
|
|
|
.EMPTY_N(wci_reqF__EMPTY_N)
|
|
|
|
);
|
|
|
|
|
|
|
|
wire dummy1;
|
|
|
|
assign dummy1 = &wci_reqF__D_OUT;
|
|
|
|
assign prevent_sweep_node = dummy1 & dummy2 & dummy3;
|
|
|
|
|
|
|
|
// submodule wmi_isReset
|
|
|
|
ResetToBool wmi_isReset(.RST(wciS0_MReset_n), .VAL(wmi_isReset__VAL));
|
|
|
|
|
|
|
|
// submodule wmi_respF
|
|
|
|
//34 width
|
|
|
|
SizedFIFO_b size_fifoB (
|
|
|
|
.CLK(wciS0_Clk),
|
|
|
|
.D_IN(wmi_respF__D_IN),
|
|
|
|
.ENQ(wmi_respF__ENQ),
|
|
|
|
.DEQ(wmi_respF__DEQ),
|
|
|
|
.CLR(wmi_respF__CLR),
|
|
|
|
.D_OUT(wmi_respF__D_OUT),
|
|
|
|
.FULL_N(wmi_respF__FULL_N),
|
|
|
|
.EMPTY_N(wmi_respF__EMPTY_N)
|
|
|
|
);
|
|
|
|
wire dummy2;
|
|
|
|
assign dummy2 = &wmi_respF__D_OUT;
|
|
|
|
|
|
|
|
// submodule wsiM_isReset
|
|
|
|
ResetToBool wsiM_isReset(.RST(wciS0_MReset_n), .VAL(wsiM_isReset__VAL));
|
|
|
|
|
|
|
|
// submodule wsiS_isReset
|
|
|
|
ResetToBool wsiS_isReset(.RST(wciS0_MReset_n), .VAL(wsiS_isReset__VAL));
|
|
|
|
|
|
|
|
// submodule wsiS_reqFifo
|
|
|
|
// SizedFIFO #(.p1width(32'd61),
|
|
|
|
// .p2depth(32'd3),
|
|
|
|
// .p3cntr_width(32'b00000000000000000000000000000001),
|
|
|
|
// .guarded(32'b00000000000000000000000000000001)) wsiS_reqFifo(.RST_N(wciS0_MReset_n),
|
|
|
|
|
|
|
|
|
|
|
|
SizedFIFO_c size_fifoc(
|
|
|
|
|
|
|
|
.CLK(wciS0_Clk),
|
|
|
|
.D_IN(wsiS_reqFifo__D_IN),
|
|
|
|
.ENQ(wsiS_reqFifo__ENQ),
|
|
|
|
.DEQ(wsiS_reqFifo__DEQ),
|
|
|
|
.CLR(wsiS_reqFifo__CLR),
|
|
|
|
.D_OUT(wsiS_reqFifo__D_OUT),
|
|
|
|
.FULL_N(wsiS_reqFifo__FULL_N),
|
|
|
|
.EMPTY_N(wsiS_reqFifo__EMPTY_N)
|
|
|
|
);
|
|
|
|
|
|
|
|
wire dummy3;
|
|
|
|
assign dummy3 = &wsiS_reqFifo__D_OUT;
|
|
|
|
|
|
|
|
|
|
|
|
// rule RL_wci_request_decode
|
|
|
|
assign CAN_FIRE_RL_wci_request_decode = wci_reqF__EMPTY_N ;
|
|
|
|
assign WILL_FIRE_RL_wci_request_decode = wci_reqF__EMPTY_N ;
|
|
|
|
|
|
|
|
// rule RL_wsiS_ext_status_assign
|
|
|
|
assign CAN_FIRE_RL_wsiS_ext_status_assign = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiS_ext_status_assign = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_ext_status_assign
|
|
|
|
assign CAN_FIRE_RL_wsiM_ext_status_assign = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_ext_status_assign = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wci_cfrd
|
|
|
|
assign CAN_FIRE_RL_wci_cfrd =
|
|
|
|
wci_respF_c_r != 2'b10 && wci_reqF__EMPTY_N &&
|
|
|
|
wci_wci_cfrd_pw__whas ;
|
|
|
|
assign WILL_FIRE_RL_wci_cfrd =
|
|
|
|
CAN_FIRE_RL_wci_cfrd && !WILL_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
!WILL_FIRE_RL_wci_ctl_op_complete ;
|
|
|
|
|
|
|
|
// rule RL_wmrd_mesgBodyRequest
|
|
|
|
assign CAN_FIRE_RL_wmrd_mesgBodyRequest =
|
|
|
|
NOT_wmi_reqF_c_r_46_EQ_2_47_48_AND_wmi_operate_ETC___d290 &&
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h1 || smaCtrl[3:0] == 4'h4 ||
|
|
|
|
smaCtrl[3:0] == 4'h9) &&
|
|
|
|
mesgPreRequest ;
|
|
|
|
assign WILL_FIRE_RL_wmrd_mesgBodyRequest =
|
|
|
|
CAN_FIRE_RL_wmrd_mesgBodyRequest ;
|
|
|
|
|
|
|
|
// rule RL_wmrd_mesgBodyPreRequest
|
|
|
|
assign CAN_FIRE_RL_wmrd_mesgBodyPreRequest =
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h1 || smaCtrl[3:0] == 4'h4 ||
|
|
|
|
smaCtrl[3:0] == 4'h9) &&
|
|
|
|
fabWordsRemain != 14'b00000000000000 &&
|
|
|
|
(fabRespCredit_value ^ 4'h8) > 4'b1000 &&
|
|
|
|
mesgReqOK ;
|
|
|
|
assign WILL_FIRE_RL_wmrd_mesgBodyPreRequest =
|
|
|
|
CAN_FIRE_RL_wmrd_mesgBodyPreRequest &&
|
|
|
|
!WILL_FIRE_RL_wmrd_mesgBodyRequest ;
|
|
|
|
|
|
|
|
// rule RL_wmrd_mesgBegin
|
|
|
|
assign CAN_FIRE_RL_wmrd_mesgBegin =
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h1 || smaCtrl[3:0] == 4'h4 ||
|
|
|
|
smaCtrl[3:0] == 4'h9) &&
|
|
|
|
!wmi_sThreadBusy_d &&
|
|
|
|
!wmi_sDataThreadBusy_d &&
|
|
|
|
unrollCnt == 16'b0000000000000000 ;
|
|
|
|
assign WILL_FIRE_RL_wmrd_mesgBegin = CAN_FIRE_RL_wmrd_mesgBegin ;
|
|
|
|
|
|
|
|
// rule RL_wci_ctl_op_start
|
|
|
|
assign CAN_FIRE_RL_wci_ctl_op_start =
|
|
|
|
wci_reqF__EMPTY_N && wci_wci_ctrl_pw__whas ;
|
|
|
|
assign WILL_FIRE_RL_wci_ctl_op_start =
|
|
|
|
CAN_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
!WILL_FIRE_RL_wci_ctl_op_complete ;
|
|
|
|
|
|
|
|
// rule RL_wci_ctrl_EiI
|
|
|
|
assign CAN_FIRE_RL_wci_ctrl_EiI =
|
|
|
|
wci_wci_ctrl_pw__whas && WILL_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
wci_cState == 3'b000 &&
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b000 ;
|
|
|
|
assign WILL_FIRE_RL_wci_ctrl_EiI = CAN_FIRE_RL_wci_ctrl_EiI ;
|
|
|
|
|
|
|
|
// rule RL_wci_ctrl_OrE
|
|
|
|
assign CAN_FIRE_RL_wci_ctrl_OrE =
|
|
|
|
wci_wci_ctrl_pw__whas && WILL_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b011 ;
|
|
|
|
assign WILL_FIRE_RL_wci_ctrl_OrE = CAN_FIRE_RL_wci_ctrl_OrE ;
|
|
|
|
|
|
|
|
// rule RL_wci_respF_deq
|
|
|
|
assign CAN_FIRE_RL_wci_respF_deq = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wci_respF_deq = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wci_sThreadBusy_reg
|
|
|
|
assign CAN_FIRE_RL_wci_sThreadBusy_reg = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wci_sThreadBusy_reg = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wci_sFlagReg__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wci_sFlagReg__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wci_sFlagReg__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsi_Es_doAlways
|
|
|
|
assign CAN_FIRE_RL_wsi_Es_doAlways = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsi_Es_doAlways = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsiS_update_statusR
|
|
|
|
assign CAN_FIRE_RL_wsiS_update_statusR = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiS_update_statusR = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsiS_inc_tBusyCount
|
|
|
|
assign CAN_FIRE_RL_wsiS_inc_tBusyCount =
|
|
|
|
wsiS_operateD && wsiS_peerIsReady &&
|
|
|
|
NOT_wsiS_reqFifo_countReg_53_ULE_1_54___d355 ;
|
|
|
|
assign WILL_FIRE_RL_wsiS_inc_tBusyCount = CAN_FIRE_RL_wsiS_inc_tBusyCount ;
|
|
|
|
|
|
|
|
// rule RL_wsiS_reqFifo_enq
|
|
|
|
assign CAN_FIRE_RL_wsiS_reqFifo_enq =
|
|
|
|
wsiS_operateD && wsiS_peerIsReady &&
|
|
|
|
wsiS_wsiReq__wget[60:58] == 3'b001 ;
|
|
|
|
assign WILL_FIRE_RL_wsiS_reqFifo_enq = CAN_FIRE_RL_wsiS_reqFifo_enq ;
|
|
|
|
|
|
|
|
// rule RL_wsiS_peerIsReady__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wsiS_peerIsReady__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiS_peerIsReady__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_update_statusR
|
|
|
|
assign CAN_FIRE_RL_wsiM_update_statusR = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_update_statusR = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_inc_tBusyCount
|
|
|
|
assign CAN_FIRE_RL_wsiM_inc_tBusyCount =
|
|
|
|
wsiM_operateD && wsiM_peerIsReady && wsiM_sThreadBusy_d ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_inc_tBusyCount = CAN_FIRE_RL_wsiM_inc_tBusyCount ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_reqFifo_deq
|
|
|
|
assign CAN_FIRE_RL_wsiM_reqFifo_deq =
|
|
|
|
wsiM_reqFifo_c_r != 2'b00 && !wsiM_sThreadBusy_d ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_reqFifo_deq = CAN_FIRE_RL_wsiM_reqFifo_deq ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_sThreadBusy_reg
|
|
|
|
assign CAN_FIRE_RL_wsiM_sThreadBusy_reg = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_sThreadBusy_reg = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_peerIsReady__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wsiM_peerIsReady__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_peerIsReady__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_operating_actions
|
|
|
|
assign CAN_FIRE_RL_operating_actions = wci_cState == 3'b010 ;
|
|
|
|
assign WILL_FIRE_RL_operating_actions = wci_cState == 3'b010 ;
|
|
|
|
|
|
|
|
// rule RL_wsiS_operateD__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wsiS_operateD__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiS_operateD__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_operateD__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wsiM_operateD__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_operateD__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wmrd_mesgBodyResponse
|
|
|
|
assign CAN_FIRE_RL_wmrd_mesgBodyResponse =
|
|
|
|
wmi_respF__EMPTY_N && (smaCtrl[4] || wsiM_reqFifo_c_r != 2'b10) &&
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h1 || smaCtrl[3:0] == 4'h4 ||
|
|
|
|
smaCtrl[3:0] == 4'h9) &&
|
|
|
|
unrollCnt != 16'b0000000000000000 ;
|
|
|
|
assign WILL_FIRE_RL_wmrd_mesgBodyResponse =
|
|
|
|
CAN_FIRE_RL_wmrd_mesgBodyResponse ;
|
|
|
|
|
|
|
|
// rule RL_wmwt_messagePushImprecise
|
|
|
|
assign CAN_FIRE_RL_wmwt_messagePushImprecise =
|
|
|
|
wmi_reqF_c_r != 2'b10 && wmi_dhF_c_r != 2'b10 &&
|
|
|
|
wsiS_reqFifo_i_notEmpty__52_AND_wmi_operateD_5_ETC___d165 &&
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h2 || smaCtrl[3:0] == 4'h3) &&
|
|
|
|
readyToPush &&
|
|
|
|
impreciseBurst ;
|
|
|
|
assign WILL_FIRE_RL_wmwt_messagePushImprecise =
|
|
|
|
CAN_FIRE_RL_wmwt_messagePushImprecise &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messageFinalize ;
|
|
|
|
|
|
|
|
// rule RL_wmwt_messagePushPrecise
|
|
|
|
assign CAN_FIRE_RL_wmwt_messagePushPrecise =
|
|
|
|
wmi_dhF_c_r != 2'b10 && wsiS_reqFifo__EMPTY_N && wmi_operateD &&
|
|
|
|
wmi_peerIsReady &&
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h2 || smaCtrl[3:0] == 4'h3) &&
|
|
|
|
wsiWordsRemain != 12'b000000000000 &&
|
|
|
|
mesgReqValid &&
|
|
|
|
preciseBurst ;
|
|
|
|
assign WILL_FIRE_RL_wmwt_messagePushPrecise =
|
|
|
|
CAN_FIRE_RL_wmwt_messagePushPrecise &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messagePushImprecise &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messageFinalize ;
|
|
|
|
|
|
|
|
// rule RL_wmwt_requestPrecise
|
|
|
|
assign CAN_FIRE_RL_wmwt_requestPrecise =
|
|
|
|
wmi_reqF_c_r != 2'b10 && wmi_mFlagF_c_r != 2'b10 && wmi_operateD &&
|
|
|
|
wmi_peerIsReady &&
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h2 || smaCtrl[3:0] == 4'h3) &&
|
|
|
|
readyToRequest &&
|
|
|
|
preciseBurst ;
|
|
|
|
assign WILL_FIRE_RL_wmwt_requestPrecise =
|
|
|
|
CAN_FIRE_RL_wmwt_requestPrecise &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messagePushImprecise ;
|
|
|
|
|
|
|
|
// rule RL_wmwt_messageFinalize
|
|
|
|
assign CAN_FIRE_RL_wmwt_messageFinalize =
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h2 || smaCtrl[3:0] == 4'h3) &&
|
|
|
|
mesgLength[14] &&
|
|
|
|
!doAbort &&
|
|
|
|
(preciseBurst && wsiWordsRemain == 12'b000000000000 ||
|
|
|
|
impreciseBurst && endOfMessage) ;
|
|
|
|
assign WILL_FIRE_RL_wmwt_messageFinalize =
|
|
|
|
CAN_FIRE_RL_wmwt_messageFinalize ;
|
|
|
|
|
|
|
|
// rule RL_wmwt_mesgBegin
|
|
|
|
assign CAN_FIRE_RL_wmwt_mesgBegin =
|
|
|
|
wsiS_reqFifo__EMPTY_N && wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h2 || smaCtrl[3:0] == 4'h3) &&
|
|
|
|
!wmi_sThreadBusy_d &&
|
|
|
|
!wmi_sDataThreadBusy_d &&
|
|
|
|
!opcode[8] ;
|
|
|
|
assign WILL_FIRE_RL_wmwt_mesgBegin =
|
|
|
|
CAN_FIRE_RL_wmwt_mesgBegin &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messagePushPrecise &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messagePushImprecise &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messageFinalize ;
|
|
|
|
|
|
|
|
// rule RL_wmwt_doAbort
|
|
|
|
assign CAN_FIRE_RL_wmwt_doAbort =
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h2 || smaCtrl[3:0] == 4'h3) &&
|
|
|
|
doAbort ;
|
|
|
|
assign WILL_FIRE_RL_wmwt_doAbort = CAN_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// rule RL_wmi_Em_doAlways
|
|
|
|
assign CAN_FIRE_RL_wmi_Em_doAlways = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wmi_Em_doAlways = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wci_Es_doAlways_Req
|
|
|
|
assign CAN_FIRE_RL_wci_Es_doAlways_Req = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wci_Es_doAlways_Req = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wci_reqF_enq
|
|
|
|
assign CAN_FIRE_RL_wci_reqF_enq = wci_wciReq__wget[59:57] != 3'b000 ;
|
|
|
|
assign WILL_FIRE_RL_wci_reqF_enq = CAN_FIRE_RL_wci_reqF_enq ;
|
|
|
|
|
|
|
|
// rule RL_wsipass_doMessagePush
|
|
|
|
assign CAN_FIRE_RL_wsipass_doMessagePush =
|
|
|
|
wsiS_reqFifo__EMPTY_N &&
|
|
|
|
(smaCtrl[4] || wsiM_reqFifo_c_r != 2'b10) &&
|
|
|
|
wci_cState == 3'b010 &&
|
|
|
|
(smaCtrl[3:0] == 4'h0 || smaCtrl[3:0] == 4'h3) ;
|
|
|
|
assign WILL_FIRE_RL_wsipass_doMessagePush =
|
|
|
|
CAN_FIRE_RL_wsipass_doMessagePush &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messagePushPrecise &&
|
|
|
|
!WILL_FIRE_RL_wmwt_messagePushImprecise ;
|
|
|
|
|
|
|
|
// rule RL_wci_cfwr
|
|
|
|
assign CAN_FIRE_RL_wci_cfwr =
|
|
|
|
wci_respF_c_r != 2'b10 && wci_reqF__EMPTY_N &&
|
|
|
|
wci_wci_cfwr_pw__whas ;
|
|
|
|
assign WILL_FIRE_RL_wci_cfwr =
|
|
|
|
CAN_FIRE_RL_wci_cfwr && !WILL_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
!WILL_FIRE_RL_wci_ctl_op_complete ;
|
|
|
|
|
|
|
|
// rule RL_wci_reqF__updateLevelCounter
|
|
|
|
assign CAN_FIRE_RL_wci_reqF__updateLevelCounter =
|
|
|
|
(wci_wciReq__wget[59:57] != 3'b000) != wci_reqF_r_deq__whas ;
|
|
|
|
assign WILL_FIRE_RL_wci_reqF__updateLevelCounter =
|
|
|
|
CAN_FIRE_RL_wci_reqF__updateLevelCounter ;
|
|
|
|
|
|
|
|
// rule RL_wsiS_reqFifo__updateLevelCounter
|
|
|
|
assign CAN_FIRE_RL_wsiS_reqFifo__updateLevelCounter =
|
|
|
|
CAN_FIRE_RL_wsiS_reqFifo_enq != wsiS_reqFifo_r_deq__whas ;
|
|
|
|
assign WILL_FIRE_RL_wsiS_reqFifo__updateLevelCounter =
|
|
|
|
CAN_FIRE_RL_wsiS_reqFifo__updateLevelCounter ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_reqFifo_both
|
|
|
|
assign CAN_FIRE_RL_wsiM_reqFifo_both =
|
|
|
|
((wsiM_reqFifo_c_r == 2'b01) ?
|
|
|
|
wsiM_reqFifo_x_wire__whas :
|
|
|
|
wsiM_reqFifo_c_r != 2'b10 || wsiM_reqFifo_x_wire__whas) &&
|
|
|
|
CAN_FIRE_RL_wsiM_reqFifo_deq &&
|
|
|
|
wsiM_reqFifo_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_reqFifo_both = CAN_FIRE_RL_wsiM_reqFifo_both ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_reqFifo_decCtr
|
|
|
|
assign CAN_FIRE_RL_wsiM_reqFifo_decCtr =
|
|
|
|
CAN_FIRE_RL_wsiM_reqFifo_deq && !wsiM_reqFifo_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_reqFifo_decCtr = CAN_FIRE_RL_wsiM_reqFifo_decCtr ;
|
|
|
|
|
|
|
|
// rule RL_wsiM_reqFifo_incCtr
|
|
|
|
assign CAN_FIRE_RL_wsiM_reqFifo_incCtr =
|
|
|
|
((wsiM_reqFifo_c_r == 2'b00) ?
|
|
|
|
wsiM_reqFifo_x_wire__whas :
|
|
|
|
wsiM_reqFifo_c_r != 2'b01 || wsiM_reqFifo_x_wire__whas) &&
|
|
|
|
wsiM_reqFifo_enqueueing__whas &&
|
|
|
|
!CAN_FIRE_RL_wsiM_reqFifo_deq ;
|
|
|
|
assign WILL_FIRE_RL_wsiM_reqFifo_incCtr = CAN_FIRE_RL_wsiM_reqFifo_incCtr ;
|
|
|
|
|
|
|
|
// rule RL_mesgPreRequest__dreg_update
|
|
|
|
assign CAN_FIRE_RL_mesgPreRequest__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_mesgPreRequest__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_fabRespCredit_accumulate
|
|
|
|
assign CAN_FIRE_RL_fabRespCredit_accumulate = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_fabRespCredit_accumulate = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wci_ctrl_IsO
|
|
|
|
assign CAN_FIRE_RL_wci_ctrl_IsO =
|
|
|
|
wci_wci_ctrl_pw__whas && WILL_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
wci_cState == 3'b001 &&
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b001 ;
|
|
|
|
assign WILL_FIRE_RL_wci_ctrl_IsO = CAN_FIRE_RL_wci_ctrl_IsO ;
|
|
|
|
|
|
|
|
// rule RL_wci_ctl_op_complete
|
|
|
|
assign CAN_FIRE_RL_wci_ctl_op_complete =
|
|
|
|
wci_respF_c_r != 2'b10 && wci_ctlOpActive && wci_ctlAckReg ;
|
|
|
|
assign WILL_FIRE_RL_wci_ctl_op_complete = CAN_FIRE_RL_wci_ctl_op_complete ;
|
|
|
|
|
|
|
|
// rule RL_wci_ctlAckReg__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wci_ctlAckReg__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wci_ctlAckReg__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wci_respF_both
|
|
|
|
assign CAN_FIRE_RL_wci_respF_both =
|
|
|
|
((wci_respF_c_r == 2'b01) ?
|
|
|
|
wci_respF_x_wire__whas :
|
|
|
|
wci_respF_c_r != 2'b10 || wci_respF_x_wire__whas) &&
|
|
|
|
wci_respF_c_r != 2'b00 &&
|
|
|
|
wci_respF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wci_respF_both = CAN_FIRE_RL_wci_respF_both ;
|
|
|
|
|
|
|
|
// rule RL_wci_respF_decCtr
|
|
|
|
assign CAN_FIRE_RL_wci_respF_decCtr =
|
|
|
|
wci_respF_c_r != 2'b00 && !wci_respF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wci_respF_decCtr = CAN_FIRE_RL_wci_respF_decCtr ;
|
|
|
|
|
|
|
|
// rule RL_wci_respF_incCtr
|
|
|
|
assign CAN_FIRE_RL_wci_respF_incCtr =
|
|
|
|
((wci_respF_c_r == 2'b00) ?
|
|
|
|
wci_respF_x_wire__whas :
|
|
|
|
wci_respF_c_r != 2'b01 || wci_respF_x_wire__whas) &&
|
|
|
|
wci_respF_enqueueing__whas &&
|
|
|
|
!(wci_respF_c_r != 2'b00) ;
|
|
|
|
assign WILL_FIRE_RL_wci_respF_incCtr = CAN_FIRE_RL_wci_respF_incCtr ;
|
|
|
|
|
|
|
|
// rule RL_wmi_dhF_deq
|
|
|
|
assign CAN_FIRE_RL_wmi_dhF_deq = !wmi_sDataThreadBusy_d ;
|
|
|
|
assign WILL_FIRE_RL_wmi_dhF_deq = CAN_FIRE_RL_wmi_dhF_deq ;
|
|
|
|
|
|
|
|
// rule RL_wmi_respAdvance
|
|
|
|
assign CAN_FIRE_RL_wmi_respAdvance =
|
|
|
|
wmi_respF__FULL_N && wmi_operateD && wmi_peerIsReady &&
|
|
|
|
wmi_wmiResponse__wget[33:32] != 2'b00 ;
|
|
|
|
assign WILL_FIRE_RL_wmi_respAdvance = CAN_FIRE_RL_wmi_respAdvance ;
|
|
|
|
|
|
|
|
// rule RL_wmi_reqF_deq
|
|
|
|
assign CAN_FIRE_RL_wmi_reqF_deq = !wmi_sThreadBusy_d ;
|
|
|
|
assign WILL_FIRE_RL_wmi_reqF_deq = CAN_FIRE_RL_wmi_reqF_deq ;
|
|
|
|
|
|
|
|
// rule RL_wmi_peerIsReady__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wmi_peerIsReady__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wmi_peerIsReady__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wmi_operateD__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wmi_operateD__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wmi_operateD__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wmi_sDataThreadBusy_d__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wmi_sDataThreadBusy_d__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wmi_sDataThreadBusy_d__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wmi_sThreadBusy_d__dreg_update
|
|
|
|
assign CAN_FIRE_RL_wmi_sThreadBusy_d__dreg_update = 1'b1 ;
|
|
|
|
assign WILL_FIRE_RL_wmi_sThreadBusy_d__dreg_update = 1'b1 ;
|
|
|
|
|
|
|
|
// rule RL_wmi_dhF_decCtr
|
|
|
|
assign CAN_FIRE_RL_wmi_dhF_decCtr =
|
|
|
|
wmi_dhF_dequeueing__whas && !wmi_dhF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_dhF_decCtr = CAN_FIRE_RL_wmi_dhF_decCtr ;
|
|
|
|
|
|
|
|
// rule RL_wmi_dhF_both
|
|
|
|
assign CAN_FIRE_RL_wmi_dhF_both =
|
|
|
|
((wmi_dhF_c_r == 2'b01) ?
|
|
|
|
wmi_dhF_enqueueing__whas :
|
|
|
|
wmi_dhF_c_r != 2'b10 || wmi_dhF_enqueueing__whas) &&
|
|
|
|
wmi_dhF_dequeueing__whas &&
|
|
|
|
wmi_dhF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_dhF_both = CAN_FIRE_RL_wmi_dhF_both ;
|
|
|
|
|
|
|
|
// rule RL_wmi_dhF_incCtr
|
|
|
|
assign CAN_FIRE_RL_wmi_dhF_incCtr =
|
|
|
|
((wmi_dhF_c_r == 2'b00) ?
|
|
|
|
wmi_dhF_enqueueing__whas :
|
|
|
|
wmi_dhF_c_r != 2'b01 || wmi_dhF_enqueueing__whas) &&
|
|
|
|
wmi_dhF_enqueueing__whas &&
|
|
|
|
!wmi_dhF_dequeueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_dhF_incCtr = CAN_FIRE_RL_wmi_dhF_incCtr ;
|
|
|
|
|
|
|
|
// rule RL_wmi_mFlagF_both
|
|
|
|
assign CAN_FIRE_RL_wmi_mFlagF_both =
|
|
|
|
((wmi_mFlagF_c_r == 2'b01) ?
|
|
|
|
wmi_mFlagF_enqueueing__whas :
|
|
|
|
wmi_mFlagF_c_r != 2'b10 || wmi_mFlagF_enqueueing__whas) &&
|
|
|
|
wmi_mFlagF_dequeueing__whas &&
|
|
|
|
wmi_mFlagF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_mFlagF_both = CAN_FIRE_RL_wmi_mFlagF_both ;
|
|
|
|
|
|
|
|
// rule RL_wmi_mFlagF_decCtr
|
|
|
|
assign CAN_FIRE_RL_wmi_mFlagF_decCtr =
|
|
|
|
wmi_mFlagF_dequeueing__whas && !wmi_mFlagF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_mFlagF_decCtr = CAN_FIRE_RL_wmi_mFlagF_decCtr ;
|
|
|
|
|
|
|
|
// rule RL_wmi_mFlagF_incCtr
|
|
|
|
assign CAN_FIRE_RL_wmi_mFlagF_incCtr =
|
|
|
|
((wmi_mFlagF_c_r == 2'b00) ?
|
|
|
|
wmi_mFlagF_enqueueing__whas :
|
|
|
|
wmi_mFlagF_c_r != 2'b01 || wmi_mFlagF_enqueueing__whas) &&
|
|
|
|
wmi_mFlagF_enqueueing__whas &&
|
|
|
|
!wmi_mFlagF_dequeueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_mFlagF_incCtr = CAN_FIRE_RL_wmi_mFlagF_incCtr ;
|
|
|
|
|
|
|
|
// rule RL_wmi_reqF_both
|
|
|
|
assign CAN_FIRE_RL_wmi_reqF_both =
|
|
|
|
((wmi_reqF_c_r == 2'b01) ?
|
|
|
|
wmi_reqF_x_wire__whas :
|
|
|
|
wmi_reqF_c_r != 2'b10 || wmi_reqF_x_wire__whas) &&
|
|
|
|
wmi_reqF_dequeueing__whas &&
|
|
|
|
wmi_reqF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_reqF_both = CAN_FIRE_RL_wmi_reqF_both ;
|
|
|
|
|
|
|
|
// rule RL_wmi_reqF_incCtr
|
|
|
|
assign CAN_FIRE_RL_wmi_reqF_incCtr =
|
|
|
|
((wmi_reqF_c_r == 2'b00) ?
|
|
|
|
wmi_reqF_x_wire__whas :
|
|
|
|
wmi_reqF_c_r != 2'b01 || wmi_reqF_x_wire__whas) &&
|
|
|
|
wmi_reqF_enqueueing__whas &&
|
|
|
|
!wmi_reqF_dequeueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_reqF_incCtr = CAN_FIRE_RL_wmi_reqF_incCtr ;
|
|
|
|
|
|
|
|
// rule RL_wmi_reqF_decCtr
|
|
|
|
assign CAN_FIRE_RL_wmi_reqF_decCtr =
|
|
|
|
wmi_reqF_dequeueing__whas && !wmi_reqF_enqueueing__whas ;
|
|
|
|
assign WILL_FIRE_RL_wmi_reqF_decCtr = CAN_FIRE_RL_wmi_reqF_decCtr ;
|
|
|
|
|
|
|
|
// inputs to muxes for submodule ports
|
|
|
|
assign MUX_wci_illegalEdge__write_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete && wci_illegalEdge ;
|
|
|
|
assign MUX_wci_illegalEdge__write_1__VAL_2 =
|
|
|
|
wci_reqF__D_OUT[36:34] != 3'b100 && wci_reqF__D_OUT[36:34] != 3'b101 &&
|
|
|
|
wci_reqF__D_OUT[36:34] != 3'b110 ;
|
|
|
|
assign MUX_wci_respF_c_r__write_1__VAL_1 = wci_respF_c_r - 2'b01 ;
|
|
|
|
assign MUX_wci_respF_c_r__write_1__VAL_2 = wci_respF_c_r + 2'b01 ;
|
|
|
|
assign MUX_wci_respF_x_wire__wset_1__VAL_1 =
|
|
|
|
wci_illegalEdge ? 34'h3C0DE4202 : 34'h1C0DE4201 ;
|
|
|
|
assign MUX_wci_illegalEdge__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
(wci_reqF__D_OUT[36:34] == 3'b000 && wci_cState != 3'b000 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b001 && wci_cState != 3'b001 &&
|
|
|
|
wci_cState != 3'b011 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b010 && wci_cState != 3'b010 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b011 && wci_cState != 3'b011 &&
|
|
|
|
wci_cState != 3'b010 &&
|
|
|
|
wci_cState != 3'b001 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b100 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b101 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b110 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b111) ;
|
|
|
|
assign MUX_wci_respF_q_0__write_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wci_respF_incCtr && wci_respF_c_r == 2'b00 ;
|
|
|
|
assign MUX_wci_respF_q_1__write_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wci_respF_incCtr && wci_respF_c_r == 2'b01 ;
|
|
|
|
assign MUX_wsiM_reqFifo_c_r__write_1__VAL_1 = wsiM_reqFifo_c_r - 2'b01 ;
|
|
|
|
assign MUX_wsiM_reqFifo_c_r__write_1__VAL_2 = wsiM_reqFifo_c_r + 2'b01 ;
|
|
|
|
assign MUX_wci_respF_x_wire__wset_1__VAL_2 = { 2'b01, x_data__h15447 } ;
|
|
|
|
always@(WILL_FIRE_RL_wci_ctl_op_complete or
|
|
|
|
MUX_wci_respF_x_wire__wset_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wci_cfrd or
|
|
|
|
MUX_wci_respF_x_wire__wset_1__VAL_2 or WILL_FIRE_RL_wci_cfwr)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete:
|
|
|
|
MUX_wci_respF_q_0__write_1__VAL_1 =
|
|
|
|
MUX_wci_respF_x_wire__wset_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wci_cfrd:
|
|
|
|
MUX_wci_respF_q_0__write_1__VAL_1 =
|
|
|
|
MUX_wci_respF_x_wire__wset_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wci_cfwr: MUX_wci_respF_q_0__write_1__VAL_1 = 34'h1C0DE4201;
|
|
|
|
default: MUX_wci_respF_q_0__write_1__VAL_1 =
|
|
|
|
34'h2AAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign MUX_wci_respF_q_0__write_1__VAL_2 =
|
|
|
|
(wci_respF_c_r == 2'b01) ?
|
|
|
|
MUX_wci_respF_q_0__write_1__VAL_1 :
|
|
|
|
wci_respF_q_1 ;
|
|
|
|
assign MUX_wci_respF_q_1__write_1__VAL_2 =
|
|
|
|
(wci_respF_c_r == 2'b10) ?
|
|
|
|
MUX_wci_respF_q_0__write_1__VAL_1 :
|
|
|
|
34'h0AAAAAAAA ;
|
|
|
|
assign MUX_wsiM_reqFifo_q_0__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_incCtr && wsiM_reqFifo_c_r == 2'b00 ;
|
|
|
|
assign MUX_wsiM_reqFifo_q_1__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_incCtr && wsiM_reqFifo_c_r == 2'b01 ;
|
|
|
|
assign MUX_endOfMessage__write_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise && x__h16715 ;
|
|
|
|
assign MUX_impreciseBurst__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && !wsiS_reqFifo__D_OUT[56] ;
|
|
|
|
assign MUX_lastMesg__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise || WILL_FIRE_RL_wmrd_mesgBegin ;
|
|
|
|
assign MUX_mesgCount__write_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse && unrollCnt == 16'b0000000000000001 ;
|
|
|
|
assign MUX_mesgLength__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && wsiS_reqFifo__D_OUT[56] ;
|
|
|
|
assign MUX_wmi_mFlagF_x_wire__wset_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest && x__h18884 ;
|
|
|
|
assign MUX_wsiM_reqFifo_x_wire__wset_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse && !smaCtrl[4] ;
|
|
|
|
assign MUX_fabRespCredit_value__write_1__VAL_2 =
|
|
|
|
fabRespCredit_value +
|
|
|
|
(CAN_FIRE_RL_wmrd_mesgBodyRequest ? b__h13937 : 4'b0000) +
|
|
|
|
(CAN_FIRE_RL_wmrd_mesgBodyResponse ? 4'b0001 : 4'b0000) ;
|
|
|
|
assign MUX_fabWordsRemain__write_1__VAL_1 =
|
|
|
|
(wmi_sFlagReg[23:0] == 24'b000000000000000000000000) ? 14'b00000000000001 : wmi_sFlagReg[15:2] ;
|
|
|
|
assign MUX_fabWordsRemain__write_1__VAL_2 = fabWordsRemain - fabWordsCurReq ;
|
|
|
|
assign MUX_mesgCount__write_1__VAL_1 = mesgCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign MUX_mesgLength__write_1__VAL_2 =
|
|
|
|
(wsiS_reqFifo__D_OUT[11:8] == 4'b0000) ?
|
|
|
|
15'b100000000000000 :
|
|
|
|
{ 1'b1, wsiS_reqFifo__D_OUT[55:44], 2'b00 } ;
|
|
|
|
assign MUX_mesgLength__write_1__VAL_4 = { 1'b1, mlp1B__h16631 } ;
|
|
|
|
assign MUX_mesgReqAddr__write_1__VAL_2 =
|
|
|
|
mesgReqAddr + { fabWordsCurReq[11:0], 2'b00 } ;
|
|
|
|
assign MUX_opcode__write_1__VAL_2 = { 1'b1, wsiS_reqFifo__D_OUT[7:0] } ;
|
|
|
|
assign MUX_thisMesg__write_1__VAL_1 =
|
|
|
|
{ mesgCount[7:0], mesgMetaF_opcode__h16809, x_length__h17087 } ;
|
|
|
|
assign MUX_thisMesg__write_1__VAL_2 =
|
|
|
|
{ mesgCount[7:0], wmi_sFlagReg[31:24], wmi_sFlagReg[15:0] } ;
|
|
|
|
assign MUX_unrollCnt__write_1__VAL_2 = unrollCnt - 16'b0000000000000001 ;
|
|
|
|
assign MUX_unrollCnt__write_1__VAL_1 =
|
|
|
|
(wmi_sFlagReg[23:0] == 24'b000000000000000000000000) ? 16'b0000000000000001 : wmi_sFlagReg[17:2] ;
|
|
|
|
assign MUX_wmi_dhF_c_r__write_1__VAL_1 = wmi_dhF_c_r - 2'b01 ;
|
|
|
|
assign MUX_wmi_dhF_c_r__write_1__VAL_2 = wmi_dhF_c_r + 2'b01 ;
|
|
|
|
assign MUX_wmi_dhF_x_wire__wset_1__VAL_1 =
|
|
|
|
{ 1'b1,
|
|
|
|
wsiWordsRemain == 12'b000000000001,
|
|
|
|
wsiS_reqFifo__D_OUT[43:12],
|
|
|
|
4'b1111 } ;
|
|
|
|
assign MUX_wmi_dhF_x_wire__wset_1__VAL_2 =
|
|
|
|
{ 1'b1, x__h16715, wsiS_reqFifo__D_OUT[43:12], 4'b1111 } ;
|
|
|
|
assign MUX_wmi_dhF_q_0__write_1__VAL_2 =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushPrecise ?
|
|
|
|
MUX_wmi_dhF_x_wire__wset_1__VAL_1 :
|
|
|
|
MUX_wmi_dhF_x_wire__wset_1__VAL_2 ;
|
|
|
|
assign MUX_wmi_dhF_q_0__write_1__VAL_1 =
|
|
|
|
(wmi_dhF_c_r == 2'b01) ?
|
|
|
|
MUX_wmi_dhF_q_0__write_1__VAL_2 :
|
|
|
|
wmi_dhF_q_1 ;
|
|
|
|
assign MUX_wmi_dhF_q_1__write_1__VAL_1 =
|
|
|
|
(wmi_dhF_c_r == 2'b10) ?
|
|
|
|
MUX_wmi_dhF_q_0__write_1__VAL_2 :
|
|
|
|
38'h0AAAAAAAAA ;
|
|
|
|
assign MUX_wmi_mFlagF_c_r__write_1__VAL_1 = wmi_mFlagF_c_r - 2'b01 ;
|
|
|
|
assign MUX_wmi_mFlagF_c_r__write_1__VAL_2 = wmi_mFlagF_c_r + 2'b01 ;
|
|
|
|
assign MUX_wmi_mFlagF_x_wire__wset_1__VAL_1 =
|
|
|
|
{ mesgMetaF_opcode__h16809, mesgMetaF_length__h16810 } ;
|
|
|
|
assign MUX_wmi_mFlagF_x_wire__wset_1__VAL_3 =
|
|
|
|
{ mesgMetaF_opcode__h16809, mesgMetaF_length__h17723 } ;
|
|
|
|
assign MUX_wmi_mFlagF_q_0__write_1__VAL_1 =
|
|
|
|
(wmi_mFlagF_c_r == 2'b01) ? value__h6065 : wmi_mFlagF_q_1 ;
|
|
|
|
assign MUX_wmi_mFlagF_q_1__write_1__VAL_1 =
|
|
|
|
(wmi_mFlagF_c_r == 2'b10) ? value__h6065 : 32'b00000000000000000000000000000000 ;
|
|
|
|
assign MUX_wmi_reqF_c_r__write_1__VAL_1 = wmi_reqF_c_r - 2'b01 ;
|
|
|
|
assign MUX_wmi_reqF_c_r__write_1__VAL_2 = wmi_reqF_c_r + 2'b01 ;
|
|
|
|
assign MUX_wmi_reqF_x_wire__wset_1__VAL_1 = { 20'b00111000000000000000, bl__h17580 } ;
|
|
|
|
assign MUX_wmi_reqF_x_wire__wset_1__VAL_2 =
|
|
|
|
{ 4'b0101, x__h18884, 1'b0, mesgReqAddr, fabWordsCurReq[11:0] } ;
|
|
|
|
assign MUX_wmi_reqF_x_wire__wset_1__VAL_3 =
|
|
|
|
{ 4'b0011, x__h16715, 1'b0, addr__h16647, 12'b000000000001 } ;
|
|
|
|
always@(WILL_FIRE_RL_wmwt_requestPrecise or
|
|
|
|
MUX_wmi_reqF_x_wire__wset_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest or
|
|
|
|
MUX_wmi_reqF_x_wire__wset_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise or
|
|
|
|
MUX_wmi_reqF_x_wire__wset_1__VAL_3)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise:
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_1 = MUX_wmi_reqF_x_wire__wset_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest:
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_1 = MUX_wmi_reqF_x_wire__wset_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise:
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_1 = MUX_wmi_reqF_x_wire__wset_1__VAL_3;
|
|
|
|
default: MUX_wmi_reqF_q_0__write_1__VAL_1 =
|
|
|
|
32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign MUX_wmi_reqF_q_0__write_1__VAL_2 =
|
|
|
|
(wmi_reqF_c_r == 2'b01) ?
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_1 :
|
|
|
|
wmi_reqF_q_1 ;
|
|
|
|
assign MUX_wmi_reqF_q_1__write_1__VAL_2 =
|
|
|
|
(wmi_reqF_c_r == 2'b10) ?
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_1 :
|
|
|
|
32'b00001010101010101010101010101010 ;
|
|
|
|
assign MUX_wsiM_reqFifo_x_wire__wset_1__VAL_1 =
|
|
|
|
{ 3'b001,
|
|
|
|
unrollCnt == 16'b0000000000000001,
|
|
|
|
!smaCtrl[5],
|
|
|
|
x_burstLength__h18559,
|
|
|
|
wmi_respF__D_OUT[31:0],
|
|
|
|
x_byteEn__h18561,
|
|
|
|
thisMesg[23:16] } ;
|
|
|
|
assign MUX_wsiM_reqFifo_q_0__write_1__VAL_2 =
|
|
|
|
MUX_wsiM_reqFifo_x_wire__wset_1__SEL_1 ?
|
|
|
|
MUX_wsiM_reqFifo_x_wire__wset_1__VAL_1 :
|
|
|
|
wsiS_reqFifo__D_OUT ;
|
|
|
|
assign MUX_wsiM_reqFifo_q_0__write_1__VAL_1 =
|
|
|
|
(wsiM_reqFifo_c_r == 2'b01) ?
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__VAL_2 :
|
|
|
|
wsiM_reqFifo_q_1 ;
|
|
|
|
assign MUX_wsiM_reqFifo_q_1__write_1__VAL_1 =
|
|
|
|
(wsiM_reqFifo_c_r == 2'b10) ?
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__VAL_2 :
|
|
|
|
61'h00000AAAAAAAAA00 ;
|
|
|
|
assign MUX_wsiWordsRemain__write_1__VAL_2 = wsiWordsRemain - 12'b000000000001 ;
|
|
|
|
assign MUX_wmi_reqF_q_0__write_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_incCtr && wmi_reqF_c_r == 2'b00 ;
|
|
|
|
assign MUX_wmi_reqF_q_1__write_1__SEL_1 =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_incCtr && wmi_reqF_c_r == 2'b01 ;
|
|
|
|
assign MUX_wmi_mFlagF_q_0__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_incCtr && wmi_mFlagF_c_r == 2'b00 ;
|
|
|
|
assign MUX_wmi_mFlagF_q_1__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_incCtr && wmi_mFlagF_c_r == 2'b01 ;
|
|
|
|
assign MUX_wmi_dhF_q_0__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmi_dhF_incCtr && wmi_dhF_c_r == 2'b00 ;
|
|
|
|
assign MUX_wmi_dhF_q_1__write_1__SEL_2 =
|
|
|
|
WILL_FIRE_RL_wmi_dhF_incCtr && wmi_dhF_c_r == 2'b01 ;
|
|
|
|
|
|
|
|
// inlined wires
|
|
|
|
assign wci_wciReq__wget =
|
|
|
|
{ wciS0_MCmd,
|
|
|
|
wciS0_MAddrSpace,
|
|
|
|
wciS0_MByteEn,
|
|
|
|
wciS0_MAddr,
|
|
|
|
wciS0_MData } ;
|
|
|
|
assign wci_wciReq__whas = 1'b1 ;
|
|
|
|
assign wci_reqF_r_enq__whas = CAN_FIRE_RL_wci_reqF_enq ;
|
|
|
|
assign wci_reqF_r_clr__whas = 1'b0 ;
|
|
|
|
assign wci_respF_dequeueing__whas = wci_respF_c_r != 2'b00 ;
|
|
|
|
assign wci_wEdge__wget = wci_reqF__D_OUT[36:34] ;
|
|
|
|
assign wci_sThreadBusy_pw__whas = 1'b0 ;
|
|
|
|
assign wci_sFlagReg_1__wget = 1'b0 ;
|
|
|
|
assign wci_sFlagReg_1__whas = 1'b0 ;
|
|
|
|
assign wci_wci_cfwr_pw__whas =
|
|
|
|
wci_reqF__EMPTY_N && wci_reqF__D_OUT[56] &&
|
|
|
|
wci_reqF__D_OUT[59:57] == 3'b001 ;
|
|
|
|
assign wci_wci_cfrd_pw__whas =
|
|
|
|
wci_reqF__EMPTY_N && wci_reqF__D_OUT[56] &&
|
|
|
|
wci_reqF__D_OUT[59:57] == 3'b010 ;
|
|
|
|
assign wci_wci_ctrl_pw__whas =
|
|
|
|
wci_reqF__EMPTY_N && !wci_reqF__D_OUT[56] &&
|
|
|
|
wci_reqF__D_OUT[59:57] == 3'b010 ;
|
|
|
|
assign wci_reqF_r_deq__whas =
|
|
|
|
WILL_FIRE_RL_wci_cfrd || WILL_FIRE_RL_wci_cfwr ||
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_start ;
|
|
|
|
assign wci_respF_enqueueing__whas =
|
|
|
|
WILL_FIRE_RL_wci_cfrd || WILL_FIRE_RL_wci_cfwr ||
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete ;
|
|
|
|
assign wci_respF_x_wire__whas =
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete || WILL_FIRE_RL_wci_cfrd ||
|
|
|
|
WILL_FIRE_RL_wci_cfwr ;
|
|
|
|
assign wci_ctlAckReg_1__wget = 1'b1 ;
|
|
|
|
assign wci_wEdge__whas = WILL_FIRE_RL_wci_ctl_op_start ;
|
|
|
|
assign wci_ctlAckReg_1__whas =
|
|
|
|
WILL_FIRE_RL_wci_ctrl_OrE || WILL_FIRE_RL_wci_ctrl_IsO ||
|
|
|
|
WILL_FIRE_RL_wci_ctrl_EiI ;
|
|
|
|
assign wsiM_reqFifo_dequeueing__whas = CAN_FIRE_RL_wsiM_reqFifo_deq ;
|
|
|
|
assign wsiM_sThreadBusy_pw__whas = wsiM1_SThreadBusy ;
|
|
|
|
assign wsiM_operateD_1__wget = 1'b1 ;
|
|
|
|
assign wsiM_operateD_1__whas = wci_cState == 3'b010 ;
|
|
|
|
assign wsiM_peerIsReady_1__wget = 1'b1 ;
|
|
|
|
assign wsiM_peerIsReady_1__whas = wsiM1_SReset_n ;
|
|
|
|
assign wsiM_extStatusW__wget =
|
|
|
|
{ wsiM_pMesgCount, wsiM_iMesgCount, wsiM_tBusyCount } ;
|
|
|
|
assign wsiS_wsiReq__wget =
|
|
|
|
{ wsiS1_MCmd,
|
|
|
|
wsiS1_MReqLast,
|
|
|
|
wsiS1_MBurstPrecise,
|
|
|
|
wsiS1_MBurstLength,
|
|
|
|
wsiS1_MData,
|
|
|
|
wsiS1_MByteEn,
|
|
|
|
wsiS1_MReqInfo } ;
|
|
|
|
assign wsiS_wsiReq__whas = 1'b1 ;
|
|
|
|
assign wsiS_reqFifo_r_enq__whas = CAN_FIRE_RL_wsiS_reqFifo_enq ;
|
|
|
|
assign wsiS_reqFifo_r_clr__whas = 1'b0 ;
|
|
|
|
assign wsiS_operateD_1__wget = 1'b1 ;
|
|
|
|
assign wsiS_operateD_1__whas = wci_cState == 3'b010 ;
|
|
|
|
assign wsiS_peerIsReady_1__wget = 1'b1 ;
|
|
|
|
assign wsiS_extStatusW__wget =
|
|
|
|
{ wsiS_pMesgCount, wsiS_iMesgCount, wsiS_tBusyCount } ;
|
|
|
|
assign wsiS_peerIsReady_1__whas = wsiS1_MReset_n ;
|
|
|
|
assign wsi_Es_mCmd_w__wget = wsiS1_MCmd ;
|
|
|
|
assign wsi_Es_mReqLast_w__whas = wsiS1_MReqLast ;
|
|
|
|
assign wsi_Es_mCmd_w__whas = 1'b1 ;
|
|
|
|
assign wsi_Es_mBurstPrecise_w__whas = wsiS1_MBurstPrecise ;
|
|
|
|
assign wsi_Es_mBurstLength_w__whas = 1'b1 ;
|
|
|
|
assign wsi_Es_mBurstLength_w__wget = wsiS1_MBurstLength ;
|
|
|
|
assign wsi_Es_mData_w__wget = wsiS1_MData ;
|
|
|
|
assign wsi_Es_mData_w__whas = 1'b1 ;
|
|
|
|
assign wsi_Es_mByteEn_w__wget = wsiS1_MByteEn ;
|
|
|
|
assign wsi_Es_mByteEn_w__whas = 1'b1 ;
|
|
|
|
assign wsi_Es_mReqInfo_w__whas = 1'b1 ;
|
|
|
|
assign wsi_Es_mReqInfo_w__wget = wsiS1_MReqInfo ;
|
|
|
|
assign wsi_Es_mDataInfo_w__whas = 1'b1 ;
|
|
|
|
assign wci_respF_x_wire__wget = MUX_wci_respF_q_0__write_1__VAL_1 ;
|
|
|
|
assign wsiM_reqFifo_enqueueing__whas =
|
|
|
|
(WILL_FIRE_RL_wsipass_doMessagePush ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse) &&
|
|
|
|
!smaCtrl[4] ;
|
|
|
|
assign wsiM_reqFifo_x_wire__whas =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse && !smaCtrl[4] ||
|
|
|
|
WILL_FIRE_RL_wsipass_doMessagePush && !smaCtrl[4] ;
|
|
|
|
assign wsiS_reqFifo_r_deq__whas =
|
|
|
|
WILL_FIRE_RL_wsipass_doMessagePush ||
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushPrecise ||
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise ;
|
|
|
|
assign wsiM_reqFifo_x_wire__wget = MUX_wsiM_reqFifo_q_0__write_1__VAL_2 ;
|
|
|
|
assign wmi_reqF_enqueueing__whas =
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise ||
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest ;
|
|
|
|
assign wmi_reqF_x_wire__wget = MUX_wmi_reqF_q_0__write_1__VAL_1 ;
|
|
|
|
assign wmi_reqF_x_wire__whas =
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest ||
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise ;
|
|
|
|
assign wmi_reqF_dequeueing__whas =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_deq && wmi_reqF_c_r != 2'b00 ;
|
|
|
|
assign wmi_mFlagF_x_wire__wget = value__h6065 ;
|
|
|
|
assign wmi_mFlagF_enqueueing__whas =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise && x__h16715 ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest && x__h18884 ||
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise ;
|
|
|
|
assign wmi_mFlagF_x_wire__whas = wmi_mFlagF_enqueueing__whas ;
|
|
|
|
assign wmi_mFlagF_dequeueing__whas =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_deq && wmi_reqF_q_0[27] &&
|
|
|
|
wmi_mFlagF_c_r != 2'b00 ;
|
|
|
|
assign wmi_dhF_enqueueing__whas =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushPrecise ||
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise ;
|
|
|
|
assign wmi_dhF_x_wire__wget = MUX_wmi_dhF_q_0__write_1__VAL_2 ;
|
|
|
|
assign wmi_dhF_x_wire__whas = wmi_dhF_enqueueing__whas ;
|
|
|
|
assign wmi_dhF_dequeueing__whas =
|
|
|
|
WILL_FIRE_RL_wmi_dhF_deq && wmi_dhF_c_r != 2'b00 ;
|
|
|
|
assign wmi_wmiResponse__wget = { wmiM_SResp, wmiM_SData } ;
|
|
|
|
assign wmi_wmiResponse__whas = 1'b1 ;
|
|
|
|
assign wmi_sThreadBusy_d_1__wget = 1'b1 ;
|
|
|
|
assign wmi_sThreadBusy_d_1__whas = wmiM_SThreadBusy ;
|
|
|
|
assign wmi_sDataThreadBusy_d_1__wget = 1'b1 ;
|
|
|
|
assign wmi_operateD_1__wget = 1'b1 ;
|
|
|
|
assign wmi_sDataThreadBusy_d_1__whas = wmiM_SDataThreadBusy ;
|
|
|
|
assign wmi_operateD_1__whas = wci_cState == 3'b010 ;
|
|
|
|
assign wmi_peerIsReady_1__whas = wmiM_SReset_n ;
|
|
|
|
assign wmi_peerIsReady_1__wget = 1'b1 ;
|
|
|
|
assign fabRespCredit_acc_v1__wget = b__h13937 ;
|
|
|
|
assign fabRespCredit_acc_v2__wget = 4'b0001 ;
|
|
|
|
assign fabRespCredit_acc_v1__whas = CAN_FIRE_RL_wmrd_mesgBodyRequest ;
|
|
|
|
assign fabRespCredit_acc_v2__whas = CAN_FIRE_RL_wmrd_mesgBodyResponse ;
|
|
|
|
assign mesgPreRequest_1__wget = 1'b1 ;
|
|
|
|
assign mesgPreRequest_1__whas = WILL_FIRE_RL_wmrd_mesgBodyPreRequest ;
|
|
|
|
assign wci_Es_mCmd_w__wget = wciS0_MCmd ;
|
|
|
|
assign wci_Es_mAddrSpace_w__wget = wciS0_MAddrSpace ;
|
|
|
|
assign wci_Es_mCmd_w__whas = 1'b1 ;
|
|
|
|
assign wci_Es_mAddrSpace_w__whas = 1'b1 ;
|
|
|
|
assign wci_Es_mAddr_w__wget = wciS0_MAddr ;
|
|
|
|
assign wci_Es_mAddr_w__whas = 1'b1 ;
|
|
|
|
assign wci_Es_mData_w__wget = wciS0_MData ;
|
|
|
|
assign wci_Es_mData_w__whas = 1'b1 ;
|
|
|
|
assign wci_Es_mByteEn_w__whas = 1'b1 ;
|
|
|
|
assign wci_Es_mByteEn_w__wget = wciS0_MByteEn ;
|
|
|
|
assign wmi_Em_sResp_w__wget = wmiM_SResp ;
|
|
|
|
assign wmi_Em_sResp_w__whas = 1'b1 ;
|
|
|
|
assign wmi_Em_sData_w__wget = wmiM_SData ;
|
|
|
|
assign wmi_Em_sData_w__whas = 1'b1 ;
|
|
|
|
|
|
|
|
// register abortCount
|
|
|
|
assign abortCount__D_IN = abortCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign abortCount__EN = CAN_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// register doAbort
|
|
|
|
assign doAbort__D_IN = 1'b0 ;
|
|
|
|
assign doAbort__EN = CAN_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// register endOfMessage
|
|
|
|
assign endOfMessage__D_IN = MUX_endOfMessage__write_1__SEL_1 ;
|
|
|
|
assign endOfMessage__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise && x__h16715 ||
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize ;
|
|
|
|
|
|
|
|
// register errCount
|
|
|
|
assign errCount__D_IN = errCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign errCount__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise &&
|
|
|
|
wsiS_reqFifo__D_OUT[43:12] != valExpect &&
|
|
|
|
(!x__h16715 || wsiS_reqFifo__D_OUT[11:8] != 4'b0000) ;
|
|
|
|
|
|
|
|
// register fabRespCredit_value
|
|
|
|
assign fabRespCredit_value__D_IN =
|
|
|
|
WILL_FIRE_RL_wci_ctrl_IsO ?
|
|
|
|
4'b0010 :
|
|
|
|
MUX_fabRespCredit_value__write_1__VAL_2 ;
|
|
|
|
assign fabRespCredit_value__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register fabWordsCurReq
|
|
|
|
assign fabWordsCurReq__D_IN =
|
|
|
|
(fabWordsRemain <= b__h19084) ? fabWordsRemain : b__h19084 ;
|
|
|
|
assign fabWordsCurReq__EN = WILL_FIRE_RL_wmrd_mesgBodyPreRequest ;
|
|
|
|
|
|
|
|
// register fabWordsRemain
|
|
|
|
assign fabWordsRemain__D_IN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ?
|
|
|
|
MUX_fabWordsRemain__write_1__VAL_1 :
|
|
|
|
MUX_fabWordsRemain__write_1__VAL_2 ;
|
|
|
|
assign fabWordsRemain__EN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest ;
|
|
|
|
|
|
|
|
// register firstMsgReq
|
|
|
|
assign firstMsgReq__EN = 1'b0 ;
|
|
|
|
assign firstMsgReq__D_IN = 1'b0 ;
|
|
|
|
|
|
|
|
// register impreciseBurst
|
|
|
|
always@(WILL_FIRE_RL_wmwt_doAbort or
|
|
|
|
MUX_impreciseBurst__write_1__SEL_2 or
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize)
|
|
|
|
case (1'b1)
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort: impreciseBurst__D_IN = 1'b0;
|
|
|
|
MUX_impreciseBurst__write_1__SEL_2: impreciseBurst__D_IN = 1'b1;
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize: impreciseBurst__D_IN = 1'b0;
|
|
|
|
default: impreciseBurst__D_IN = 1'b0 /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
assign impreciseBurst__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && !wsiS_reqFifo__D_OUT[56] ||
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize ||
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// register lastMesg
|
|
|
|
assign lastMesg__D_IN =
|
|
|
|
(MUX_endOfMessage__write_1__SEL_1 ||
|
|
|
|
MUX_lastMesg__write_1__SEL_2) ?
|
|
|
|
thisMesg :
|
|
|
|
32'hFEFEFFFE ;
|
|
|
|
assign lastMesg__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise && x__h16715 ||
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ||
|
|
|
|
WILL_FIRE_RL_wci_ctrl_IsO ;
|
|
|
|
|
|
|
|
// register mesgCount
|
|
|
|
always@(MUX_mesgCount__write_1__SEL_1 or
|
|
|
|
MUX_mesgCount__write_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize or WILL_FIRE_RL_wci_ctrl_IsO)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
MUX_mesgCount__write_1__SEL_1:
|
|
|
|
mesgCount__D_IN = MUX_mesgCount__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize:
|
|
|
|
mesgCount__D_IN = MUX_mesgCount__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wci_ctrl_IsO: mesgCount__D_IN = 32'b00000000000000000000000000000000;
|
|
|
|
default: mesgCount__D_IN = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign mesgCount__EN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse && unrollCnt == 16'b0000000000000001 ||
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize ||
|
|
|
|
WILL_FIRE_RL_wci_ctrl_IsO ;
|
|
|
|
|
|
|
|
// register mesgLength
|
|
|
|
always@(WILL_FIRE_RL_wmwt_doAbort or
|
|
|
|
MUX_mesgLength__write_1__SEL_2 or
|
|
|
|
MUX_mesgLength__write_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize or
|
|
|
|
MUX_endOfMessage__write_1__SEL_1 or MUX_mesgLength__write_1__VAL_4)
|
|
|
|
case (1'b1)
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort: mesgLength__D_IN = 15'b010101010101010;
|
|
|
|
MUX_mesgLength__write_1__SEL_2:
|
|
|
|
mesgLength__D_IN = MUX_mesgLength__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize: mesgLength__D_IN = 15'b010101010101010;
|
|
|
|
MUX_endOfMessage__write_1__SEL_1:
|
|
|
|
mesgLength__D_IN = MUX_mesgLength__write_1__VAL_4;
|
|
|
|
default: mesgLength__D_IN = 15'b010101010101010 /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
assign mesgLength__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise && x__h16715 ||
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && wsiS_reqFifo__D_OUT[56] ||
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize ||
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// register mesgLengthSoFar
|
|
|
|
assign mesgLengthSoFar__D_IN =
|
|
|
|
MUX_impreciseBurst__write_1__SEL_2 ? 14'b00000000000000 : mlp1__h16630 ;
|
|
|
|
assign mesgLengthSoFar__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && !wsiS_reqFifo__D_OUT[56] ||
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise ;
|
|
|
|
|
|
|
|
// register mesgPreRequest
|
|
|
|
assign mesgPreRequest__D_IN = WILL_FIRE_RL_wmrd_mesgBodyPreRequest ;
|
|
|
|
assign mesgPreRequest__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register mesgReqAddr
|
|
|
|
assign mesgReqAddr__D_IN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ?
|
|
|
|
14'b00000000000000 :
|
|
|
|
MUX_mesgReqAddr__write_1__VAL_2 ;
|
|
|
|
assign mesgReqAddr__EN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyRequest ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ;
|
|
|
|
|
|
|
|
// register mesgReqOK
|
|
|
|
assign mesgReqOK__D_IN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ;
|
|
|
|
assign mesgReqOK__EN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyPreRequest ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse ;
|
|
|
|
|
|
|
|
// register mesgReqValid
|
|
|
|
assign mesgReqValid__D_IN = !WILL_FIRE_RL_wmwt_messageFinalize ;
|
|
|
|
assign mesgReqValid__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize ||
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise ;
|
|
|
|
|
|
|
|
// register opcode
|
|
|
|
always@(WILL_FIRE_RL_wmwt_doAbort or
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin or
|
|
|
|
MUX_opcode__write_1__VAL_2 or WILL_FIRE_RL_wmwt_messageFinalize)
|
|
|
|
case (1'b1)
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort: opcode__D_IN = 9'b010101010;
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin: opcode__D_IN = MUX_opcode__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize: opcode__D_IN = 9'b010101010;
|
|
|
|
default: opcode__D_IN = 9'b010101010 /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
assign opcode__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin ||
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize ||
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// register preciseBurst
|
|
|
|
always@(WILL_FIRE_RL_wmwt_doAbort or
|
|
|
|
MUX_mesgLength__write_1__SEL_2 or WILL_FIRE_RL_wmwt_messageFinalize)
|
|
|
|
case (1'b1)
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort: preciseBurst__D_IN = 1'b0;
|
|
|
|
MUX_mesgLength__write_1__SEL_2: preciseBurst__D_IN = 1'b1;
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize: preciseBurst__D_IN = 1'b0;
|
|
|
|
default: preciseBurst__D_IN = 1'b0 /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
assign preciseBurst__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && wsiS_reqFifo__D_OUT[56] ||
|
|
|
|
WILL_FIRE_RL_wmwt_messageFinalize ||
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// register readyToPush
|
|
|
|
always@(WILL_FIRE_RL_wmwt_doAbort or
|
|
|
|
MUX_impreciseBurst__write_1__SEL_2 or
|
|
|
|
MUX_endOfMessage__write_1__SEL_1)
|
|
|
|
case (1'b1)
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort: readyToPush__D_IN = 1'b0;
|
|
|
|
MUX_impreciseBurst__write_1__SEL_2: readyToPush__D_IN = 1'b1;
|
|
|
|
MUX_endOfMessage__write_1__SEL_1: readyToPush__D_IN = 1'b0;
|
|
|
|
default: readyToPush__D_IN = 1'b0 /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
assign readyToPush__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise && x__h16715 ||
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && !wsiS_reqFifo__D_OUT[56] ||
|
|
|
|
WILL_FIRE_RL_wmwt_doAbort ;
|
|
|
|
|
|
|
|
// register readyToRequest
|
|
|
|
assign readyToRequest__D_IN = MUX_mesgLength__write_1__SEL_2 ;
|
|
|
|
assign readyToRequest__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && wsiS_reqFifo__D_OUT[56] ||
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise ;
|
|
|
|
|
|
|
|
// register smaCtrl
|
|
|
|
assign smaCtrl__D_IN = wci_reqF__D_OUT[31:0] ;
|
|
|
|
assign smaCtrl__EN = WILL_FIRE_RL_wci_cfwr && wci_reqF__D_OUT[39:32] == 8'h0 ;
|
|
|
|
|
|
|
|
// register thisMesg
|
|
|
|
always@(MUX_endOfMessage__write_1__SEL_1 or
|
|
|
|
MUX_thisMesg__write_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin or
|
|
|
|
MUX_thisMesg__write_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise or WILL_FIRE_RL_wci_ctrl_IsO)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
MUX_endOfMessage__write_1__SEL_1:
|
|
|
|
thisMesg__D_IN = MUX_thisMesg__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin:
|
|
|
|
thisMesg__D_IN = MUX_thisMesg__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise:
|
|
|
|
thisMesg__D_IN = MUX_thisMesg__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wci_ctrl_IsO: thisMesg__D_IN = 32'hFEFEFFFE;
|
|
|
|
default: thisMesg__D_IN = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign thisMesg__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise && x__h16715 ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ||
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise ||
|
|
|
|
WILL_FIRE_RL_wci_ctrl_IsO ;
|
|
|
|
|
|
|
|
// register unrollCnt
|
|
|
|
assign unrollCnt__D_IN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ?
|
|
|
|
MUX_unrollCnt__write_1__VAL_1 :
|
|
|
|
MUX_unrollCnt__write_1__VAL_2 ;
|
|
|
|
assign unrollCnt__EN =
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBegin ||
|
|
|
|
WILL_FIRE_RL_wmrd_mesgBodyResponse ;
|
|
|
|
|
|
|
|
// register valExpect
|
|
|
|
assign valExpect__D_IN = valExpect + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign valExpect__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushImprecise &&
|
|
|
|
(!x__h16715 || wsiS_reqFifo__D_OUT[11:8] != 4'b0000) ;
|
|
|
|
|
|
|
|
// register wci_cEdge
|
|
|
|
assign wci_cEdge__D_IN = wci_reqF__D_OUT[36:34] ;
|
|
|
|
assign wci_cEdge__EN = WILL_FIRE_RL_wci_ctl_op_start ;
|
|
|
|
|
|
|
|
// register wci_cState
|
|
|
|
assign wci_cState__D_IN = wci_nState ;
|
|
|
|
assign wci_cState__EN =
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete && !wci_illegalEdge ;
|
|
|
|
|
|
|
|
// register wci_ctlAckReg
|
|
|
|
assign wci_ctlAckReg__D_IN = wci_ctlAckReg_1__whas ;
|
|
|
|
assign wci_ctlAckReg__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wci_ctlOpActive
|
|
|
|
assign wci_ctlOpActive__D_IN = !WILL_FIRE_RL_wci_ctl_op_complete ;
|
|
|
|
assign wci_ctlOpActive__EN =
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete ||
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_start ;
|
|
|
|
|
|
|
|
// register wci_illegalEdge
|
|
|
|
assign wci_illegalEdge__D_IN =
|
|
|
|
!MUX_wci_illegalEdge__write_1__SEL_1 &&
|
|
|
|
MUX_wci_illegalEdge__write_1__VAL_2 ;
|
|
|
|
assign wci_illegalEdge__EN =
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_complete && wci_illegalEdge ||
|
|
|
|
MUX_wci_illegalEdge__write_1__SEL_2 ;
|
|
|
|
|
|
|
|
// register wci_nState
|
|
|
|
always@(wci_reqF__D_OUT)
|
|
|
|
begin
|
|
|
|
case (wci_reqF__D_OUT[36:34])
|
|
|
|
3'b000: wci_nState__D_IN = 3'b001;
|
|
|
|
3'b001: wci_nState__D_IN = 3'b010;
|
|
|
|
3'b010: wci_nState__D_IN = 3'b011;
|
|
|
|
default: wci_nState__D_IN = 3'b000;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign wci_nState__EN =
|
|
|
|
WILL_FIRE_RL_wci_ctl_op_start &&
|
|
|
|
(wci_reqF__D_OUT[36:34] == 3'b000 && wci_cState == 3'b000 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b001 &&
|
|
|
|
(wci_cState == 3'b001 || wci_cState == 3'b011) ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b010 && wci_cState == 3'b010 ||
|
|
|
|
wci_reqF__D_OUT[36:34] == 3'b011 &&
|
|
|
|
(wci_cState == 3'b011 || wci_cState == 3'b010 ||
|
|
|
|
wci_cState == 3'b001)) ;
|
|
|
|
|
|
|
|
// register wci_reqF_countReg
|
|
|
|
assign wci_reqF_countReg__D_IN =
|
|
|
|
(wci_wciReq__wget[59:57] != 3'b000) ?
|
|
|
|
wci_reqF_countReg + 2'b01 :
|
|
|
|
wci_reqF_countReg - 2'b01 ;
|
|
|
|
assign wci_reqF_countReg__EN = CAN_FIRE_RL_wci_reqF__updateLevelCounter ;
|
|
|
|
|
|
|
|
// register wci_respF_c_r
|
|
|
|
assign wci_respF_c_r__D_IN =
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr ?
|
|
|
|
MUX_wci_respF_c_r__write_1__VAL_1 :
|
|
|
|
MUX_wci_respF_c_r__write_1__VAL_2 ;
|
|
|
|
assign wci_respF_c_r__EN =
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr || WILL_FIRE_RL_wci_respF_incCtr ;
|
|
|
|
|
|
|
|
// register wci_respF_q_0
|
|
|
|
assign wci_respF_q_0__EN =
|
|
|
|
WILL_FIRE_RL_wci_respF_incCtr && wci_respF_c_r == 2'b00 ||
|
|
|
|
WILL_FIRE_RL_wci_respF_both ||
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr ;
|
|
|
|
always@(MUX_wci_respF_q_0__write_1__SEL_1 or
|
|
|
|
MUX_wci_respF_q_0__write_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wci_respF_both or
|
|
|
|
MUX_wci_respF_q_0__write_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr or wci_respF_q_1)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
MUX_wci_respF_q_0__write_1__SEL_1:
|
|
|
|
wci_respF_q_0__D_IN = MUX_wci_respF_q_0__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wci_respF_both:
|
|
|
|
wci_respF_q_0__D_IN = MUX_wci_respF_q_0__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr: wci_respF_q_0__D_IN = wci_respF_q_1;
|
|
|
|
default: wci_respF_q_0__D_IN = 34'h2AAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
|
|
|
|
// register wci_respF_q_1
|
|
|
|
assign wci_respF_q_1__EN =
|
|
|
|
WILL_FIRE_RL_wci_respF_incCtr && wci_respF_c_r == 2'b01 ||
|
|
|
|
WILL_FIRE_RL_wci_respF_both ||
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr ;
|
|
|
|
always@(MUX_wci_respF_q_1__write_1__SEL_1 or
|
|
|
|
MUX_wci_respF_q_0__write_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wci_respF_both or
|
|
|
|
MUX_wci_respF_q_1__write_1__VAL_2 or WILL_FIRE_RL_wci_respF_decCtr)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
MUX_wci_respF_q_1__write_1__SEL_1:
|
|
|
|
wci_respF_q_1__D_IN = MUX_wci_respF_q_0__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wci_respF_both:
|
|
|
|
wci_respF_q_1__D_IN = MUX_wci_respF_q_1__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wci_respF_decCtr: wci_respF_q_1__D_IN = 34'h0AAAAAAAA;
|
|
|
|
default: wci_respF_q_1__D_IN = 34'h2AAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
|
|
|
|
// register wci_sFlagReg
|
|
|
|
assign wci_sFlagReg__D_IN = 1'b0 ;
|
|
|
|
assign wci_sFlagReg__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wci_sThreadBusy_d
|
|
|
|
assign wci_sThreadBusy_d__D_IN = 1'b0 ;
|
|
|
|
assign wci_sThreadBusy_d__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wmi_busyWithMessage
|
|
|
|
assign wmi_busyWithMessage__D_IN = 1'b0 ;
|
|
|
|
assign wmi_busyWithMessage__EN = 1'b0 ;
|
|
|
|
|
|
|
|
// register wmi_dhF_c_r
|
|
|
|
assign wmi_dhF_c_r__D_IN =
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr ?
|
|
|
|
MUX_wmi_dhF_c_r__write_1__VAL_1 :
|
|
|
|
MUX_wmi_dhF_c_r__write_1__VAL_2 ;
|
|
|
|
assign wmi_dhF_c_r__EN =
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr || WILL_FIRE_RL_wmi_dhF_incCtr ;
|
|
|
|
|
|
|
|
// register wmi_dhF_q_0
|
|
|
|
always@(WILL_FIRE_RL_wmi_dhF_both or
|
|
|
|
MUX_wmi_dhF_q_0__write_1__VAL_1 or
|
|
|
|
MUX_wmi_dhF_q_0__write_1__SEL_2 or
|
|
|
|
MUX_wmi_dhF_q_0__write_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr or wmi_dhF_q_1)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wmi_dhF_both:
|
|
|
|
wmi_dhF_q_0__D_IN = MUX_wmi_dhF_q_0__write_1__VAL_1;
|
|
|
|
MUX_wmi_dhF_q_0__write_1__SEL_2:
|
|
|
|
wmi_dhF_q_0__D_IN = MUX_wmi_dhF_q_0__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr: wmi_dhF_q_0__D_IN = wmi_dhF_q_1;
|
|
|
|
default: wmi_dhF_q_0__D_IN = 38'h2AAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign wmi_dhF_q_0__EN =
|
|
|
|
WILL_FIRE_RL_wmi_dhF_both ||
|
|
|
|
WILL_FIRE_RL_wmi_dhF_incCtr && wmi_dhF_c_r == 2'b00 ||
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr ;
|
|
|
|
|
|
|
|
// register wmi_dhF_q_1
|
|
|
|
always@(WILL_FIRE_RL_wmi_dhF_both or
|
|
|
|
MUX_wmi_dhF_q_1__write_1__VAL_1 or
|
|
|
|
MUX_wmi_dhF_q_1__write_1__SEL_2 or
|
|
|
|
MUX_wmi_dhF_q_0__write_1__VAL_2 or WILL_FIRE_RL_wmi_dhF_decCtr)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wmi_dhF_both:
|
|
|
|
wmi_dhF_q_1__D_IN = MUX_wmi_dhF_q_1__write_1__VAL_1;
|
|
|
|
MUX_wmi_dhF_q_1__write_1__SEL_2:
|
|
|
|
wmi_dhF_q_1__D_IN = MUX_wmi_dhF_q_0__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr: wmi_dhF_q_1__D_IN = 38'h0AAAAAAAAA;
|
|
|
|
default: wmi_dhF_q_1__D_IN = 38'h2AAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign wmi_dhF_q_1__EN =
|
|
|
|
WILL_FIRE_RL_wmi_dhF_both ||
|
|
|
|
WILL_FIRE_RL_wmi_dhF_incCtr && wmi_dhF_c_r == 2'b01 ||
|
|
|
|
WILL_FIRE_RL_wmi_dhF_decCtr ;
|
|
|
|
|
|
|
|
// register wmi_mFlagF_c_r
|
|
|
|
assign wmi_mFlagF_c_r__D_IN =
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_decCtr ?
|
|
|
|
MUX_wmi_mFlagF_c_r__write_1__VAL_1 :
|
|
|
|
MUX_wmi_mFlagF_c_r__write_1__VAL_2 ;
|
|
|
|
assign wmi_mFlagF_c_r__EN =
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_decCtr ||
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_incCtr ;
|
|
|
|
|
|
|
|
// register wmi_mFlagF_q_0
|
|
|
|
always@(WILL_FIRE_RL_wmi_mFlagF_both or
|
|
|
|
MUX_wmi_mFlagF_q_0__write_1__VAL_1 or
|
|
|
|
MUX_wmi_mFlagF_q_0__write_1__SEL_2 or
|
|
|
|
value__h6065 or WILL_FIRE_RL_wmi_mFlagF_decCtr or wmi_mFlagF_q_1)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_both:
|
|
|
|
wmi_mFlagF_q_0__D_IN = MUX_wmi_mFlagF_q_0__write_1__VAL_1;
|
|
|
|
MUX_wmi_mFlagF_q_0__write_1__SEL_2: wmi_mFlagF_q_0__D_IN = value__h6065;
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_decCtr: wmi_mFlagF_q_0__D_IN = wmi_mFlagF_q_1;
|
|
|
|
default: wmi_mFlagF_q_0__D_IN = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign wmi_mFlagF_q_0__EN =
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_both ||
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_incCtr && wmi_mFlagF_c_r == 2'b00 ||
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_decCtr ;
|
|
|
|
|
|
|
|
// register wmi_mFlagF_q_1
|
|
|
|
always@(WILL_FIRE_RL_wmi_mFlagF_both or
|
|
|
|
MUX_wmi_mFlagF_q_1__write_1__VAL_1 or
|
|
|
|
MUX_wmi_mFlagF_q_1__write_1__SEL_2 or
|
|
|
|
value__h6065 or WILL_FIRE_RL_wmi_mFlagF_decCtr)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_both:
|
|
|
|
wmi_mFlagF_q_1__D_IN = MUX_wmi_mFlagF_q_1__write_1__VAL_1;
|
|
|
|
MUX_wmi_mFlagF_q_1__write_1__SEL_2: wmi_mFlagF_q_1__D_IN = value__h6065;
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_decCtr: wmi_mFlagF_q_1__D_IN = 32'b00000000000000000000000000000000;
|
|
|
|
default: wmi_mFlagF_q_1__D_IN = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign wmi_mFlagF_q_1__EN =
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_both ||
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_incCtr && wmi_mFlagF_c_r == 2'b01 ||
|
|
|
|
WILL_FIRE_RL_wmi_mFlagF_decCtr ;
|
|
|
|
|
|
|
|
// register wmi_operateD
|
|
|
|
assign wmi_operateD__D_IN = wci_cState == 3'b010 ;
|
|
|
|
assign wmi_operateD__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wmi_peerIsReady
|
|
|
|
assign wmi_peerIsReady__D_IN = wmiM_SReset_n ;
|
|
|
|
assign wmi_peerIsReady__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wmi_reqF_c_r
|
|
|
|
assign wmi_reqF_c_r__D_IN =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr ?
|
|
|
|
MUX_wmi_reqF_c_r__write_1__VAL_1 :
|
|
|
|
MUX_wmi_reqF_c_r__write_1__VAL_2 ;
|
|
|
|
assign wmi_reqF_c_r__EN =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr || WILL_FIRE_RL_wmi_reqF_incCtr ;
|
|
|
|
|
|
|
|
// register wmi_reqF_q_0
|
|
|
|
always@(MUX_wmi_reqF_q_0__write_1__SEL_1 or
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wmi_reqF_both or
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr or wmi_reqF_q_1)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
MUX_wmi_reqF_q_0__write_1__SEL_1:
|
|
|
|
wmi_reqF_q_0__D_IN = MUX_wmi_reqF_q_0__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wmi_reqF_both:
|
|
|
|
wmi_reqF_q_0__D_IN = MUX_wmi_reqF_q_0__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr: wmi_reqF_q_0__D_IN = wmi_reqF_q_1;
|
|
|
|
default: wmi_reqF_q_0__D_IN = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign wmi_reqF_q_0__EN =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_incCtr && wmi_reqF_c_r == 2'b00 ||
|
|
|
|
WILL_FIRE_RL_wmi_reqF_both ||
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr ;
|
|
|
|
|
|
|
|
// register wmi_reqF_q_1
|
|
|
|
always@(MUX_wmi_reqF_q_1__write_1__SEL_1 or
|
|
|
|
MUX_wmi_reqF_q_0__write_1__VAL_1 or
|
|
|
|
WILL_FIRE_RL_wmi_reqF_both or
|
|
|
|
MUX_wmi_reqF_q_1__write_1__VAL_2 or WILL_FIRE_RL_wmi_reqF_decCtr)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
MUX_wmi_reqF_q_1__write_1__SEL_1:
|
|
|
|
wmi_reqF_q_1__D_IN = MUX_wmi_reqF_q_0__write_1__VAL_1;
|
|
|
|
WILL_FIRE_RL_wmi_reqF_both:
|
|
|
|
wmi_reqF_q_1__D_IN = MUX_wmi_reqF_q_1__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr: wmi_reqF_q_1__D_IN = 32'b00001010101010101010101010101010;
|
|
|
|
default: wmi_reqF_q_1__D_IN = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
assign wmi_reqF_q_1__EN =
|
|
|
|
WILL_FIRE_RL_wmi_reqF_incCtr && wmi_reqF_c_r == 2'b01 ||
|
|
|
|
WILL_FIRE_RL_wmi_reqF_both ||
|
|
|
|
WILL_FIRE_RL_wmi_reqF_decCtr ;
|
|
|
|
|
|
|
|
// register wmi_sDataThreadBusy_d
|
|
|
|
assign wmi_sDataThreadBusy_d__D_IN = wmiM_SDataThreadBusy ;
|
|
|
|
assign wmi_sDataThreadBusy_d__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wmi_sFlagReg
|
|
|
|
assign wmi_sFlagReg__D_IN = wmiM_SFlag ;
|
|
|
|
assign wmi_sFlagReg__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wmi_sThreadBusy_d
|
|
|
|
assign wmi_sThreadBusy_d__D_IN = wmiM_SThreadBusy ;
|
|
|
|
assign wmi_sThreadBusy_d__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wsiM_burstKind
|
|
|
|
assign wsiM_burstKind__D_IN =
|
|
|
|
(wsiM_burstKind == 2'b00) ?
|
|
|
|
(wsiM_reqFifo_q_0[56] ? 2'b01 : 2'b10) :
|
|
|
|
2'b00 ;
|
|
|
|
assign wsiM_burstKind__EN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_deq &&
|
|
|
|
wsiM_reqFifo_q_0[60:58] == 3'b001 &&
|
|
|
|
(wsiM_burstKind == 2'b00 ||
|
|
|
|
wsiM_burstKind == 2'b01 && wsiM_reqFifo_q_0[57] ||
|
|
|
|
wsiM_burstKind == 2'b10 && wsiM_reqFifo_q_0[55:44] == 12'b000000000001) ;
|
|
|
|
|
|
|
|
// register wsiM_errorSticky
|
|
|
|
assign wsiM_errorSticky__D_IN = 1'b0 ;
|
|
|
|
assign wsiM_errorSticky__EN = 1'b0 ;
|
|
|
|
|
|
|
|
// register wsiM_iMesgCount
|
|
|
|
assign wsiM_iMesgCount__D_IN = wsiM_iMesgCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign wsiM_iMesgCount__EN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_deq &&
|
|
|
|
wsiM_reqFifo_q_0[60:58] == 3'b001 &&
|
|
|
|
wsiM_burstKind == 2'b10 &&
|
|
|
|
wsiM_reqFifo_q_0[55:44] == 12'b000000000001 ;
|
|
|
|
|
|
|
|
// register wsiM_operateD
|
|
|
|
assign wsiM_operateD__D_IN = wci_cState == 3'b010 ;
|
|
|
|
assign wsiM_operateD__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wsiM_pMesgCount
|
|
|
|
assign wsiM_pMesgCount__D_IN = wsiM_pMesgCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign wsiM_pMesgCount__EN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_deq &&
|
|
|
|
wsiM_reqFifo_q_0[60:58] == 3'b001 &&
|
|
|
|
wsiM_burstKind == 2'b01 &&
|
|
|
|
wsiM_reqFifo_q_0[57] ;
|
|
|
|
|
|
|
|
// register wsiM_peerIsReady
|
|
|
|
assign wsiM_peerIsReady__D_IN = wsiM1_SReset_n ;
|
|
|
|
assign wsiM_peerIsReady__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wsiM_reqFifo_c_r
|
|
|
|
assign wsiM_reqFifo_c_r__D_IN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr ?
|
|
|
|
MUX_wsiM_reqFifo_c_r__write_1__VAL_1 :
|
|
|
|
MUX_wsiM_reqFifo_c_r__write_1__VAL_2 ;
|
|
|
|
assign wsiM_reqFifo_c_r__EN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr ||
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_incCtr ;
|
|
|
|
|
|
|
|
// register wsiM_reqFifo_q_0
|
|
|
|
assign wsiM_reqFifo_q_0__EN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_both ||
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_incCtr && wsiM_reqFifo_c_r == 2'b00 ||
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr ;
|
|
|
|
always@(WILL_FIRE_RL_wsiM_reqFifo_both or
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__VAL_1 or
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__SEL_2 or
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr or wsiM_reqFifo_q_1)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_both:
|
|
|
|
wsiM_reqFifo_q_0__D_IN = MUX_wsiM_reqFifo_q_0__write_1__VAL_1;
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__SEL_2:
|
|
|
|
wsiM_reqFifo_q_0__D_IN = MUX_wsiM_reqFifo_q_0__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr:
|
|
|
|
wsiM_reqFifo_q_0__D_IN = wsiM_reqFifo_q_1;
|
|
|
|
default: wsiM_reqFifo_q_0__D_IN =
|
|
|
|
61'h0AAAAAAAAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
|
|
|
|
// register wsiM_reqFifo_q_1
|
|
|
|
assign wsiM_reqFifo_q_1__EN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_both ||
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_incCtr && wsiM_reqFifo_c_r == 2'b01 ||
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr ;
|
|
|
|
always@(WILL_FIRE_RL_wsiM_reqFifo_both or
|
|
|
|
MUX_wsiM_reqFifo_q_1__write_1__VAL_1 or
|
|
|
|
MUX_wsiM_reqFifo_q_1__write_1__SEL_2 or
|
|
|
|
MUX_wsiM_reqFifo_q_0__write_1__VAL_2 or
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_both:
|
|
|
|
wsiM_reqFifo_q_1__D_IN = MUX_wsiM_reqFifo_q_1__write_1__VAL_1;
|
|
|
|
MUX_wsiM_reqFifo_q_1__write_1__SEL_2:
|
|
|
|
wsiM_reqFifo_q_1__D_IN = MUX_wsiM_reqFifo_q_0__write_1__VAL_2;
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_decCtr:
|
|
|
|
wsiM_reqFifo_q_1__D_IN = 61'h00000AAAAAAAAA00;
|
|
|
|
default: wsiM_reqFifo_q_1__D_IN =
|
|
|
|
61'h0AAAAAAAAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
|
|
|
|
// register wsiM_sThreadBusy_d
|
|
|
|
assign wsiM_sThreadBusy_d__D_IN = wsiM1_SThreadBusy ;
|
|
|
|
assign wsiM_sThreadBusy_d__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wsiM_statusR
|
|
|
|
assign wsiM_statusR__D_IN =
|
|
|
|
{ wsiM_isReset__VAL,
|
|
|
|
!wsiM_peerIsReady,
|
|
|
|
!wsiM_operateD,
|
|
|
|
wsiM_errorSticky,
|
|
|
|
wsiM_burstKind != 2'b00,
|
|
|
|
wsiM_sThreadBusy_d,
|
|
|
|
1'b0,
|
|
|
|
wsiM_trafficSticky } ;
|
|
|
|
assign wsiM_statusR__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wsiM_tBusyCount
|
|
|
|
assign wsiM_tBusyCount__D_IN = wsiM_tBusyCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign wsiM_tBusyCount__EN = CAN_FIRE_RL_wsiM_inc_tBusyCount ;
|
|
|
|
|
|
|
|
// register wsiM_trafficSticky
|
|
|
|
assign wsiM_trafficSticky__D_IN = 1'b1 ;
|
|
|
|
assign wsiM_trafficSticky__EN =
|
|
|
|
WILL_FIRE_RL_wsiM_reqFifo_deq &&
|
|
|
|
wsiM_reqFifo_q_0[60:58] == 3'b001 ;
|
|
|
|
|
|
|
|
// register wsiS_burstKind
|
|
|
|
assign wsiS_burstKind__D_IN =
|
|
|
|
(wsiS_burstKind == 2'b00) ?
|
|
|
|
(wsiS_wsiReq__wget[56] ? 2'b01 : 2'b10) :
|
|
|
|
2'b00 ;
|
|
|
|
assign wsiS_burstKind__EN =
|
|
|
|
WILL_FIRE_RL_wsiS_reqFifo_enq &&
|
|
|
|
(wsiS_burstKind == 2'b00 ||
|
|
|
|
wsiS_burstKind == 2'b01 && wsiS_wsiReq__wget[57] ||
|
|
|
|
wsiS_burstKind == 2'b10 && wsiS_wsiReq__wget[55:44] == 12'b000000000001) ;
|
|
|
|
|
|
|
|
// register wsiS_errorSticky
|
|
|
|
assign wsiS_errorSticky__D_IN = 1'b1 ;
|
|
|
|
assign wsiS_errorSticky__EN =
|
|
|
|
WILL_FIRE_RL_wsiS_reqFifo_enq && !wsiS_reqFifo__FULL_N ;
|
|
|
|
|
|
|
|
// register wsiS_iMesgCount
|
|
|
|
assign wsiS_iMesgCount__D_IN = wsiS_iMesgCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign wsiS_iMesgCount__EN =
|
|
|
|
WILL_FIRE_RL_wsiS_reqFifo_enq && wsiS_burstKind == 2'b10 &&
|
|
|
|
wsiS_wsiReq__wget[55:44] == 12'b000000000001 ;
|
|
|
|
|
|
|
|
// register wsiS_operateD
|
|
|
|
assign wsiS_operateD__D_IN = wci_cState == 3'b010 ;
|
|
|
|
assign wsiS_operateD__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wsiS_pMesgCount
|
|
|
|
assign wsiS_pMesgCount__D_IN = wsiS_pMesgCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign wsiS_pMesgCount__EN =
|
|
|
|
WILL_FIRE_RL_wsiS_reqFifo_enq && wsiS_burstKind == 2'b01 &&
|
|
|
|
wsiS_wsiReq__wget[57] ;
|
|
|
|
|
|
|
|
// register wsiS_peerIsReady
|
|
|
|
assign wsiS_peerIsReady__D_IN = wsiS1_MReset_n ;
|
|
|
|
assign wsiS_peerIsReady__EN = 1'b1 ;
|
|
|
|
|
|
|
|
// register wsiS_reqFifo_countReg
|
|
|
|
assign wsiS_reqFifo_countReg__D_IN =
|
|
|
|
CAN_FIRE_RL_wsiS_reqFifo_enq ?
|
|
|
|
wsiS_reqFifo_countReg + 2'b01 :
|
|
|
|
wsiS_reqFifo_countReg - 2'b01 ;
|
|
|
|
assign wsiS_reqFifo_countReg__EN =
|
|
|
|
CAN_FIRE_RL_wsiS_reqFifo__updateLevelCounter ;
|
|
|
|
|
|
|
|
// register wsiS_statusR
|
|
|
|
assign wsiS_statusR__EN = 1'b1 ;
|
|
|
|
assign wsiS_statusR__D_IN =
|
|
|
|
{ wsiS_isReset__VAL,
|
|
|
|
!wsiS_peerIsReady,
|
|
|
|
!wsiS_operateD,
|
|
|
|
wsiS_errorSticky,
|
|
|
|
wsiS_burstKind != 2'b00,
|
|
|
|
NOT_wsiS_reqFifo_countReg_53_ULE_1_54___d355 ||
|
|
|
|
wsiS_isReset__VAL ||
|
|
|
|
!wsiS_operateD ||
|
|
|
|
!wsiS_peerIsReady,
|
|
|
|
1'b0,
|
|
|
|
wsiS_trafficSticky } ;
|
|
|
|
|
|
|
|
// register wsiS_tBusyCount
|
|
|
|
assign wsiS_tBusyCount__D_IN = wsiS_tBusyCount + 32'b00000000000000000000000000000001 ;
|
|
|
|
assign wsiS_tBusyCount__EN = CAN_FIRE_RL_wsiS_inc_tBusyCount ;
|
|
|
|
|
|
|
|
// register wsiS_trafficSticky
|
|
|
|
assign wsiS_trafficSticky__D_IN = 1'b1 ;
|
|
|
|
assign wsiS_trafficSticky__EN = CAN_FIRE_RL_wsiS_reqFifo_enq ;
|
|
|
|
|
|
|
|
// register wsiWordsRemain
|
|
|
|
assign wsiWordsRemain__D_IN =
|
|
|
|
MUX_mesgLength__write_1__SEL_2 ?
|
|
|
|
wsiS_reqFifo__D_OUT[55:44] :
|
|
|
|
MUX_wsiWordsRemain__write_1__VAL_2 ;
|
|
|
|
assign wsiWordsRemain__EN =
|
|
|
|
WILL_FIRE_RL_wmwt_mesgBegin && wsiS_reqFifo__D_OUT[56] ||
|
|
|
|
WILL_FIRE_RL_wmwt_messagePushPrecise ;
|
|
|
|
|
|
|
|
// register zeroLengthMesg
|
|
|
|
assign zeroLengthMesg__D_IN = wsiS_reqFifo__D_OUT[11:8] == 4'b0000 ;
|
|
|
|
assign zeroLengthMesg__EN = MUX_mesgLength__write_1__SEL_2 ;
|
|
|
|
|
|
|
|
// submodule wci_reqF
|
|
|
|
assign wci_reqF__D_IN = wci_wciReq__wget ;
|
|
|
|
assign wci_reqF__DEQ = wci_reqF_r_deq__whas ;
|
|
|
|
assign wci_reqF__ENQ = CAN_FIRE_RL_wci_reqF_enq ;
|
|
|
|
assign wci_reqF__CLR = 1'b0 ;
|
|
|
|
|
|
|
|
// submodule wmi_respF
|
|
|
|
assign wmi_respF__D_IN = wmi_wmiResponse__wget ;
|
|
|
|
assign wmi_respF__DEQ = CAN_FIRE_RL_wmrd_mesgBodyResponse ;
|
|
|
|
assign wmi_respF__ENQ = CAN_FIRE_RL_wmi_respAdvance ;
|
|
|
|
assign wmi_respF__CLR = 1'b0 ;
|
|
|
|
|
|
|
|
// submodule wsiS_reqFifo
|
|
|
|
assign wsiS_reqFifo__D_IN = wsiS_wsiReq__wget ;
|
|
|
|
assign wsiS_reqFifo__ENQ = CAN_FIRE_RL_wsiS_reqFifo_enq ;
|
|
|
|
assign wsiS_reqFifo__CLR = 1'b0 ;
|
|
|
|
assign wsiS_reqFifo__DEQ = wsiS_reqFifo_r_deq__whas ;
|
|
|
|
|
|
|
|
// remaining internal signals
|
|
|
|
assign IF_mesgLength_22_BIT_14_23_THEN_mesgLength_22__ETC___d753 =
|
|
|
|
mesgLength[14] ? mesgLength[13:0] : 14'b00000000000000 ;
|
|
|
|
assign NOT_wmi_reqF_c_r_46_EQ_2_47_48_AND_wmi_operate_ETC___d290 =
|
|
|
|
wmi_reqF_c_r != 2'b10 && wmi_operateD && wmi_peerIsReady &&
|
|
|
|
(!x__h18884 || wmi_mFlagF_c_r != 2'b10) ;
|
|
|
|
assign NOT_wsiS_reqFifo_countReg_53_ULE_1_54___d355 =
|
|
|
|
wsiS_reqFifo_countReg > 2'b01 ;
|
|
|
|
assign addr__h16647 = { mesgLengthSoFar[11:0], 2'b00 } ;
|
|
|
|
// assign b__h13937 = -fabWordsCurReq[3:0] ;
|
|
|
|
assign b__h13937 = fabWordsCurReq[3:0] ;
|
|
|
|
// assign b__h19084 = { {10{fabRespCredit_value[3]}}, fabRespCredit_value } ;
|
|
|
|
assign b__h19084 = { {fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3],fabRespCredit_value[3]}, fabRespCredit_value } ;
|
|
|
|
assign bl__h17580 =
|
|
|
|
zeroLengthMesg ?
|
|
|
|
12'b000000000001 :
|
|
|
|
IF_mesgLength_22_BIT_14_23_THEN_mesgLength_22__ETC___d753[13:2] ;
|
|
|
|
assign mesgMetaF_length__h16810 = { 10'b0000000000, mlp1B__h16631 } ;
|
|
|
|
assign mesgMetaF_length__h17723 =
|
|
|
|
{ 10'b0000000000,
|
|
|
|
IF_mesgLength_22_BIT_14_23_THEN_mesgLength_22__ETC___d753 } ;
|
|
|
|
assign mesgMetaF_opcode__h16809 = opcode[8] ? opcode[7:0] : 8'b00000000 ;
|
|
|
|
assign mlp1B__h16631 = { mlp1__h16630[11:0], 2'b00 } ;
|
|
|
|
assign mlp1__h16630 = mesgLengthSoFar + 14'b00000000000001 ;
|
|
|
|
assign rdat__h15540 = { 16'b0000000000000000, x__h15543 } ;
|
|
|
|
assign wsiBurstLength__h18454 =
|
|
|
|
smaCtrl[5] ? 16'b0000000000000010 : { 2'b00, thisMesg[15:2] } ;
|
|
|
|
assign wsiS_reqFifo_i_notEmpty__52_AND_wmi_operateD_5_ETC___d165 =
|
|
|
|
wsiS_reqFifo__EMPTY_N && wmi_operateD && wmi_peerIsReady &&
|
|
|
|
(!x__h16715 || wmi_mFlagF_c_r != 2'b10) ;
|
|
|
|
assign x__h15543 = { wsiS_statusR, wsiM_statusR } ;
|
|
|
|
assign x__h16715 = wsiS_reqFifo__D_OUT[55:44] == 12'b000000000001 ;
|
|
|
|
assign x__h18884 = fabWordsRemain == fabWordsCurReq ;
|
|
|
|
assign x_burstLength__h18559 =
|
|
|
|
(thisMesg[15:0] == 16'b0000000000000000 || smaCtrl[5] && unrollCnt == 16'b0000000000000001) ?
|
|
|
|
12'b000000000001 :
|
|
|
|
(smaCtrl[5] ? 12'b111111111111 : wsiBurstLength__h18454[11:0]) ;
|
|
|
|
assign x_byteEn__h18561 = (thisMesg[15:0] == 16'b0000000000000000) ? 4'b0000 : 4'b1111 ;
|
|
|
|
assign x_length__h17087 =
|
|
|
|
{ 2'b00,
|
|
|
|
IF_mesgLength_22_BIT_14_23_THEN_mesgLength_22__ETC___d753 } ;
|
|
|
|
always@(wci_reqF__D_OUT or
|
|
|
|
smaCtrl or
|
|
|
|
mesgCount or
|
|
|
|
abortCount or
|
|
|
|
thisMesg or
|
|
|
|
lastMesg or
|
|
|
|
rdat__h15540 or wsiS_extStatusW__wget or wsiM_extStatusW__wget)
|
|
|
|
begin
|
|
|
|
case (wci_reqF__D_OUT[39:32])
|
|
|
|
8'h0: x_data__h15447 = smaCtrl;
|
|
|
|
8'h04: x_data__h15447 = mesgCount;
|
|
|
|
8'h08: x_data__h15447 = abortCount;
|
|
|
|
8'h10: x_data__h15447 = thisMesg;
|
|
|
|
8'h14: x_data__h15447 = lastMesg;
|
|
|
|
8'h18: x_data__h15447 = rdat__h15540;
|
|
|
|
8'h20: x_data__h15447 = wsiS_extStatusW__wget[95:64];
|
|
|
|
8'h24: x_data__h15447 = wsiS_extStatusW__wget[63:32];
|
|
|
|
8'h28: x_data__h15447 = wsiS_extStatusW__wget[31:0];
|
|
|
|
8'h2C: x_data__h15447 = wsiM_extStatusW__wget[95:64];
|
|
|
|
8'h30: x_data__h15447 = wsiM_extStatusW__wget[63:32];
|
|
|
|
8'h34: x_data__h15447 = wsiM_extStatusW__wget[31:0];
|
|
|
|
default: x_data__h15447 = 32'b00000000000000000000000000000000;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
always@(MUX_endOfMessage__write_1__SEL_1 or
|
|
|
|
MUX_wmi_mFlagF_x_wire__wset_1__VAL_1 or
|
|
|
|
MUX_wmi_mFlagF_x_wire__wset_1__SEL_2 or
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise or
|
|
|
|
MUX_wmi_mFlagF_x_wire__wset_1__VAL_3)
|
|
|
|
begin
|
|
|
|
case (1'b1) // synopsys parallel_case
|
|
|
|
MUX_endOfMessage__write_1__SEL_1:
|
|
|
|
value__h6065 = MUX_wmi_mFlagF_x_wire__wset_1__VAL_1;
|
|
|
|
MUX_wmi_mFlagF_x_wire__wset_1__SEL_2:
|
|
|
|
value__h6065 = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
WILL_FIRE_RL_wmwt_requestPrecise:
|
|
|
|
value__h6065 = MUX_wmi_mFlagF_x_wire__wset_1__VAL_3;
|
|
|
|
default: value__h6065 = 32'hAAAAAAAA /* unspecified value */ ;
|
|
|
|
endcase
|
|
|
|
end
|
|
|
|
|
|
|
|
// handling of inlined registers
|
|
|
|
|
|
|
|
always@(posedge wciS0_Clk)
|
|
|
|
begin
|
|
|
|
if (!wciS0_MReset_n)
|
|
|
|
begin
|
|
|
|
abortCount <= 32'b00000000000000000000000000000000;
|
|
|
|
doAbort <= 1'b0;
|
|
|
|
endOfMessage <= 1'b0;
|
|
|
|
errCount <= 32'b00000000000000000000000000000000;
|
|
|
|
fabRespCredit_value <= 4'b0000;
|
|
|
|
fabWordsRemain <= 14'b00000000000000;
|
|
|
|
firstMsgReq <= 1'b0;
|
|
|
|
impreciseBurst <= 1'b0;
|
|
|
|
lastMesg <= 32'hFEFEFFFE;
|
|
|
|
mesgCount <= 32'b00000000000000000000000000000000;
|
|
|
|
mesgLength <= 15'b010101010101010;
|
|
|
|
mesgLengthSoFar <= 14'b00000000000000;
|
|
|
|
mesgPreRequest <= 1'b0;
|
|
|
|
mesgReqOK <= 1'b0;
|
|
|
|
mesgReqValid <= 1'b0;
|
|
|
|
opcode <= 9'b010101010;
|
|
|
|
preciseBurst <= 1'b0;
|
|
|
|
readyToPush <= 1'b0;
|
|
|
|
readyToRequest <= 1'b0;
|
|
|
|
smaCtrl <= smaCtrlInit;
|
|
|
|
thisMesg <= 32'hFEFEFFFE;
|
|
|
|
unrollCnt <= 16'b0000000000000000;
|
|
|
|
valExpect <= 32'b00000000000000000000000000000000;
|
|
|
|
wci_cEdge <= 3'b111;
|
|
|
|
wci_cState <= 3'b000;
|
|
|
|
wci_ctlAckReg <= 1'b0;
|
|
|
|
wci_ctlOpActive <= 1'b0;
|
|
|
|
wci_illegalEdge <= 1'b0;
|
|
|
|
wci_nState <= 3'b000;
|
|
|
|
wci_reqF_countReg <= 2'b00;
|
|
|
|
wci_respF_c_r <= 2'b00;
|
|
|
|
wci_respF_q_0 <= 34'h0AAAAAAAA;
|
|
|
|
wci_respF_q_1 <= 34'h0AAAAAAAA;
|
|
|
|
wci_sFlagReg <= 1'b0;
|
|
|
|
wci_sThreadBusy_d <= 1'b1;
|
|
|
|
wmi_busyWithMessage <= 1'b0;
|
|
|
|
wmi_dhF_c_r <= 2'b00;
|
|
|
|
wmi_dhF_q_0 <= 38'h0AAAAAAAAA;
|
|
|
|
wmi_dhF_q_1 <= 38'h0AAAAAAAAA;
|
|
|
|
wmi_mFlagF_c_r <= 2'b00;
|
|
|
|
wmi_mFlagF_q_0 <= 32'b00000000000000000000000000000000;
|
|
|
|
wmi_mFlagF_q_1 <= 32'b00000000000000000000000000000000;
|
|
|
|
wmi_operateD <= 1'b0;
|
|
|
|
wmi_peerIsReady <= 1'b0;
|
|
|
|
wmi_reqF_c_r <= 2'b00;
|
|
|
|
wmi_reqF_q_0 <= 32'b00001010101010101010101010101010;
|
|
|
|
wmi_reqF_q_1 <= 32'b00001010101010101010101010101010;
|
|
|
|
wmi_sDataThreadBusy_d <= 1'b0;
|
|
|
|
wmi_sFlagReg <= 32'b00000000000000000000000000000000;
|
|
|
|
wmi_sThreadBusy_d <= 1'b0;
|
|
|
|
wsiM_burstKind <= 2'b00;
|
|
|
|
wsiM_errorSticky <= 1'b0;
|
|
|
|
wsiM_iMesgCount <= 32'b00000000000000000000000000000000;
|
|
|
|
wsiM_operateD <= 1'b0;
|
|
|
|
wsiM_pMesgCount <= 32'b00000000000000000000000000000000;
|
|
|
|
wsiM_peerIsReady <= 1'b0;
|
|
|
|
wsiM_reqFifo_c_r <= 2'b00;
|
|
|
|
wsiM_reqFifo_q_0 <= 61'h00000AAAAAAAAA00;
|
|
|
|
wsiM_reqFifo_q_1 <= 61'h00000AAAAAAAAA00;
|
|
|
|
wsiM_sThreadBusy_d <= 1'b1;
|
|
|
|
wsiM_tBusyCount <= 32'b00000000000000000000000000000000;
|
|
|
|
wsiM_trafficSticky <= 1'b0;
|
|
|
|
wsiS_burstKind <= 2'b00;
|
|
|
|
wsiS_errorSticky <= 1'b0;
|
|
|
|
wsiS_iMesgCount <= 32'b00000000000000000000000000000000;
|
|
|
|
wsiS_operateD <= 1'b0;
|
|
|
|
wsiS_pMesgCount <= 32'b00000000000000000000000000000000;
|
|
|
|
wsiS_peerIsReady <= 1'b0;
|
|
|
|
wsiS_reqFifo_countReg <= 2'b00;
|
|
|
|
wsiS_tBusyCount <= 32'b00000000000000000000000000000000;
|
|
|
|
wsiS_trafficSticky <= 1'b0;
|
|
|
|
wsiWordsRemain <= 12'b000000000000;
|
|
|
|
zeroLengthMesg <= 1'b0;
|
|
|
|
end
|
|
|
|
else
|
|
|
|
begin
|
|
|
|
if (abortCount__EN)
|
|
|
|
abortCount <= abortCount__D_IN;
|
|
|
|
if (doAbort__EN) doAbort <= doAbort__D_IN;
|
|
|
|
if (endOfMessage__EN)
|
|
|
|
endOfMessage <= endOfMessage__D_IN;
|
|
|
|
if (errCount__EN) errCount <= errCount__D_IN;
|
|
|
|
if (fabRespCredit_value__EN)
|
|
|
|
fabRespCredit_value <=
|
|
|
|
fabRespCredit_value__D_IN;
|
|
|
|
if (fabWordsRemain__EN)
|
|
|
|
fabWordsRemain <= fabWordsRemain__D_IN;
|
|
|
|
if (firstMsgReq__EN)
|
|
|
|
firstMsgReq <= firstMsgReq__D_IN;
|
|
|
|
if (impreciseBurst__EN)
|
|
|
|
impreciseBurst <= impreciseBurst__D_IN;
|
|
|
|
if (lastMesg__EN) lastMesg <= lastMesg__D_IN;
|
|
|
|
if (mesgCount__EN) mesgCount <= mesgCount__D_IN;
|
|
|
|
if (mesgLength__EN)
|
|
|
|
mesgLength <= mesgLength__D_IN;
|
|
|
|
if (mesgLengthSoFar__EN)
|
|
|
|
mesgLengthSoFar <= mesgLengthSoFar__D_IN;
|
|
|
|
if (mesgPreRequest__EN)
|
|
|
|
mesgPreRequest <= mesgPreRequest__D_IN;
|
|
|
|
if (mesgReqOK__EN) mesgReqOK <= mesgReqOK__D_IN;
|
|
|
|
if (mesgReqValid__EN)
|
|
|
|
mesgReqValid <= mesgReqValid__D_IN;
|
|
|
|
if (opcode__EN) opcode <= opcode__D_IN;
|
|
|
|
if (preciseBurst__EN)
|
|
|
|
preciseBurst <= preciseBurst__D_IN;
|
|
|
|
if (readyToPush__EN)
|
|
|
|
readyToPush <= readyToPush__D_IN;
|
|
|
|
if (readyToRequest__EN)
|
|
|
|
readyToRequest <= readyToRequest__D_IN;
|
|
|
|
if (smaCtrl__EN) smaCtrl <= smaCtrl__D_IN;
|
|
|
|
if (thisMesg__EN) thisMesg <= thisMesg__D_IN;
|
|
|
|
if (unrollCnt__EN) unrollCnt <= unrollCnt__D_IN;
|
|
|
|
if (valExpect__EN) valExpect <= valExpect__D_IN;
|
|
|
|
if (wci_cEdge__EN) wci_cEdge <= wci_cEdge__D_IN;
|
|
|
|
if (wci_cState__EN)
|
|
|
|
wci_cState <= wci_cState__D_IN;
|
|
|
|
if (wci_ctlAckReg__EN)
|
|
|
|
wci_ctlAckReg <= wci_ctlAckReg__D_IN;
|
|
|
|
if (wci_ctlOpActive__EN)
|
|
|
|
wci_ctlOpActive <= wci_ctlOpActive__D_IN;
|
|
|
|
if (wci_illegalEdge__EN)
|
|
|
|
wci_illegalEdge <= wci_illegalEdge__D_IN;
|
|
|
|
if (wci_nState__EN)
|
|
|
|
wci_nState <= wci_nState__D_IN;
|
|
|
|
if (wci_reqF_countReg__EN)
|
|
|
|
wci_reqF_countReg <= wci_reqF_countReg__D_IN;
|
|
|
|
if (wci_respF_c_r__EN)
|
|
|
|
wci_respF_c_r <= wci_respF_c_r__D_IN;
|
|
|
|
if (wci_respF_q_0__EN)
|
|
|
|
wci_respF_q_0 <= wci_respF_q_0__D_IN;
|
|
|
|
if (wci_respF_q_1__EN)
|
|
|
|
wci_respF_q_1 <= wci_respF_q_1__D_IN;
|
|
|
|
if (wci_sFlagReg__EN)
|
|
|
|
wci_sFlagReg <= wci_sFlagReg__D_IN;
|
|
|
|
if (wci_sThreadBusy_d__EN)
|
|
|
|
wci_sThreadBusy_d <= wci_sThreadBusy_d__D_IN;
|
|
|
|
if (wmi_busyWithMessage__EN)
|
|
|
|
wmi_busyWithMessage <=
|
|
|
|
wmi_busyWithMessage__D_IN;
|
|
|
|
if (wmi_dhF_c_r__EN)
|
|
|
|
wmi_dhF_c_r <= wmi_dhF_c_r__D_IN;
|
|
|
|
if (wmi_dhF_q_0__EN)
|
|
|
|
wmi_dhF_q_0 <= wmi_dhF_q_0__D_IN;
|
|
|
|
if (wmi_dhF_q_1__EN)
|
|
|
|
wmi_dhF_q_1 <= wmi_dhF_q_1__D_IN;
|
|
|
|
if (wmi_mFlagF_c_r__EN)
|
|
|
|
wmi_mFlagF_c_r <= wmi_mFlagF_c_r__D_IN;
|
|
|
|
if (wmi_mFlagF_q_0__EN)
|
|
|
|
wmi_mFlagF_q_0 <= wmi_mFlagF_q_0__D_IN;
|
|
|
|
if (wmi_mFlagF_q_1__EN)
|
|
|
|
wmi_mFlagF_q_1 <= wmi_mFlagF_q_1__D_IN;
|
|
|
|
if (wmi_operateD__EN)
|
|
|
|
wmi_operateD <= wmi_operateD__D_IN;
|
|
|
|
if (wmi_peerIsReady__EN)
|
|
|
|
wmi_peerIsReady <= wmi_peerIsReady__D_IN;
|
|
|
|
if (wmi_reqF_c_r__EN)
|
|
|
|
wmi_reqF_c_r <= wmi_reqF_c_r__D_IN;
|
|
|
|
if (wmi_reqF_q_0__EN)
|
|
|
|
wmi_reqF_q_0 <= wmi_reqF_q_0__D_IN;
|
|
|
|
if (wmi_reqF_q_1__EN)
|
|
|
|
wmi_reqF_q_1 <= wmi_reqF_q_1__D_IN;
|
|
|
|
if (wmi_sDataThreadBusy_d__EN)
|
|
|
|
wmi_sDataThreadBusy_d <=
|
|
|
|
wmi_sDataThreadBusy_d__D_IN;
|
|
|
|
if (wmi_sFlagReg__EN)
|
|
|
|
wmi_sFlagReg <= wmi_sFlagReg__D_IN;
|
|
|
|
if (wmi_sThreadBusy_d__EN)
|
|
|
|
wmi_sThreadBusy_d <= wmi_sThreadBusy_d__D_IN;
|
|
|
|
if (wsiM_burstKind__EN)
|
|
|
|
wsiM_burstKind <= wsiM_burstKind__D_IN;
|
|
|
|
if (wsiM_errorSticky__EN)
|
|
|
|
wsiM_errorSticky <= wsiM_errorSticky__D_IN;
|
|
|
|
if (wsiM_iMesgCount__EN)
|
|
|
|
wsiM_iMesgCount <= wsiM_iMesgCount__D_IN;
|
|
|
|
if (wsiM_operateD__EN)
|
|
|
|
wsiM_operateD <= wsiM_operateD__D_IN;
|
|
|
|
if (wsiM_pMesgCount__EN)
|
|
|
|
wsiM_pMesgCount <= wsiM_pMesgCount__D_IN;
|
|
|
|
if (wsiM_peerIsReady__EN)
|
|
|
|
wsiM_peerIsReady <= wsiM_peerIsReady__D_IN;
|
|
|
|
if (wsiM_reqFifo_c_r__EN)
|
|
|
|
wsiM_reqFifo_c_r <= wsiM_reqFifo_c_r__D_IN;
|
|
|
|
if (wsiM_reqFifo_q_0__EN)
|
|
|
|
wsiM_reqFifo_q_0 <= wsiM_reqFifo_q_0__D_IN;
|
|
|
|
if (wsiM_reqFifo_q_1__EN)
|
|
|
|
wsiM_reqFifo_q_1 <= wsiM_reqFifo_q_1__D_IN;
|
|
|
|
if (wsiM_sThreadBusy_d__EN)
|
|
|
|
wsiM_sThreadBusy_d <= wsiM_sThreadBusy_d__D_IN;
|
|
|
|
if (wsiM_tBusyCount__EN)
|
|
|
|
wsiM_tBusyCount <= wsiM_tBusyCount__D_IN;
|
|
|
|
if (wsiM_trafficSticky__EN)
|
|
|
|
wsiM_trafficSticky <= wsiM_trafficSticky__D_IN;
|
|
|
|
if (wsiS_burstKind__EN)
|
|
|
|
wsiS_burstKind <= wsiS_burstKind__D_IN;
|
|
|
|
if (wsiS_errorSticky__EN)
|
|
|
|
wsiS_errorSticky <= wsiS_errorSticky__D_IN;
|
|
|
|
if (wsiS_iMesgCount__EN)
|
|
|
|
wsiS_iMesgCount <= wsiS_iMesgCount__D_IN;
|
|
|
|
if (wsiS_operateD__EN)
|
|
|
|
wsiS_operateD <= wsiS_operateD__D_IN;
|
|
|
|
if (wsiS_pMesgCount__EN)
|
|
|
|
wsiS_pMesgCount <= wsiS_pMesgCount__D_IN;
|
|
|
|
if (wsiS_peerIsReady__EN)
|
|
|
|
wsiS_peerIsReady <= wsiS_peerIsReady__D_IN;
|
|
|
|
if (wsiS_reqFifo_countReg__EN)
|
|
|
|
wsiS_reqFifo_countReg <=
|
|
|
|
wsiS_reqFifo_countReg__D_IN;
|
|
|
|
if (wsiS_tBusyCount__EN)
|
|
|
|
wsiS_tBusyCount <= wsiS_tBusyCount__D_IN;
|
|
|
|
if (wsiS_trafficSticky__EN)
|
|
|
|
wsiS_trafficSticky <= wsiS_trafficSticky__D_IN;
|
|
|
|
if (wsiWordsRemain__EN)
|
|
|
|
wsiWordsRemain <= wsiWordsRemain__D_IN;
|
|
|
|
if (zeroLengthMesg__EN)
|
|
|
|
zeroLengthMesg <= zeroLengthMesg__D_IN;
|
|
|
|
end
|
|
|
|
if (fabWordsCurReq__EN)
|
|
|
|
fabWordsCurReq <= fabWordsCurReq__D_IN;
|
|
|
|
if (mesgReqAddr__EN) mesgReqAddr <= mesgReqAddr__D_IN;
|
|
|
|
if (wsiM_statusR__EN)
|
|
|
|
wsiM_statusR <= wsiM_statusR__D_IN;
|
|
|
|
if (wsiS_statusR__EN)
|
|
|
|
wsiS_statusR <= wsiS_statusR__D_IN;
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
endmodule // mkSMAdapter4B
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module SizedFIFO_a (CLK, D_IN,ENQ,DEQ,CLR,D_OUT,FULL_N,EMPTY_N);
|
|
|
|
|
|
|
|
|
|
|
|
input CLK;
|
|
|
|
input [59:0] D_IN;
|
|
|
|
input ENQ;
|
|
|
|
input DEQ;
|
|
|
|
input CLR;
|
|
|
|
output [59:0] D_OUT;
|
|
|
|
output FULL_N;
|
|
|
|
output EMPTY_N;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wire fulln;
|
|
|
|
wire emptyn;
|
|
|
|
|
|
|
|
wire always_one;
|
|
|
|
wire always_zero;
|
|
|
|
|
|
|
|
assign always_one = 1'b1;
|
|
|
|
assign always_zero = 1'b0;
|
|
|
|
|
|
|
|
generic_fifo_sc_a fifo_1
|
|
|
|
(.clk(CLK),
|
|
|
|
.rst(CLR),
|
|
|
|
.clr (CLR),
|
|
|
|
.din (D_IN),
|
|
|
|
.we (ENQ),
|
|
|
|
.dout (D_OUT),
|
|
|
|
.re (DEQ),
|
|
|
|
.full_r (FULL_N),
|
|
|
|
.empty_r(EMPTY_N),
|
|
|
|
.full_n_r (fulln),
|
|
|
|
.empty_n_r (emptyn)
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//// ////
|
|
|
|
//// Universal FIFO Single Clock ////
|
|
|
|
//// ////
|
|
|
|
//// ////
|
|
|
|
//// Author: Rudolf Usselmann ////
|
|
|
|
//// rudi@asics.ws ////
|
|
|
|
//// ////
|
|
|
|
//// ////
|
|
|
|
//// D/L from: http://www.opencores.org/cores/generic_fifos/ ////
|
|
|
|
//// ////
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//// ////
|
|
|
|
//// Copyright (C) 2000-2002 Rudolf Usselmann ////
|
|
|
|
//// www.asics.ws ////
|
|
|
|
//// rudi@asics.ws ////
|
|
|
|
//// ////
|
|
|
|
//// This source file may be used and distributed without ////
|
|
|
|
//// restriction provided that this copyright statement is not ////
|
|
|
|
//// removed from the file and that any derivative work contains ////
|
|
|
|
//// the original copyright notice and the associated disclaimer.////
|
|
|
|
//// ////
|
|
|
|
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY ////
|
|
|
|
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED ////
|
|
|
|
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ////
|
|
|
|
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR ////
|
|
|
|
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ////
|
|
|
|
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ////
|
|
|
|
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ////
|
|
|
|
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR ////
|
|
|
|
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ////
|
|
|
|
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ////
|
|
|
|
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ////
|
|
|
|
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ////
|
|
|
|
//// POSSIBILITY OF SUCH DAMAGE. ////
|
|
|
|
//// ////
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
// CVS Log
|
|
|
|
//
|
|
|
|
// __Id: generic_fifo_sc_a.v,v 1.1.1.1 2002-09-25 05:42:06 rudi Exp __
|
|
|
|
//
|
|
|
|
// __Date: 2002-09-25 05:42:06 __
|
|
|
|
// __Revision: 1.1.1.1 __
|
|
|
|
// __Author: rudi __
|
|
|
|
// __Locker: __
|
|
|
|
// __State: Exp __
|
|
|
|
//
|
|
|
|
// Change History:
|
|
|
|
// __Log: not supported by cvs2svn __
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
Description
|
|
|
|
===========
|
|
|
|
|
|
|
|
I/Os
|
|
|
|
----
|
|
|
|
rst low active, either sync. or async. master reset (see below how to select)
|
|
|
|
clr synchronous clear (just like reset but always synchronous), high active
|
|
|
|
re read enable, synchronous, high active
|
|
|
|
we read enable, synchronous, high active
|
|
|
|
din Data Input
|
|
|
|
dout Data Output
|
|
|
|
|
|
|
|
full Indicates the FIFO is full (combinatorial output)
|
|
|
|
full_r same as above, but registered output (see note below)
|
|
|
|
empty Indicates the FIFO is empty
|
|
|
|
empty_r same as above, but registered output (see note below)
|
|
|
|
|
|
|
|
full_n Indicates if the FIFO has space for N entries (combinatorial output)
|
|
|
|
full_n_r same as above, but registered output (see note below)
|
|
|
|
empty_n Indicates the FIFO has at least N entries (combinatorial output)
|
|
|
|
empty_n_r same as above, but registered output (see note below)
|
|
|
|
|
|
|
|
level indicates the FIFO level:
|
|
|
|
2'b00 0-25% full
|
|
|
|
2'b01 25-50% full
|
|
|
|
2'b10 50-75% full
|
|
|
|
2'b11 %75-100% full
|
|
|
|
|
|
|
|
combinatorial vs. registered status outputs
|
|
|
|
-------------------------------------------
|
|
|
|
Both the combinatorial and registered status outputs have exactly the same
|
|
|
|
synchronous timing. Meaning they are being asserted immediately at the clock
|
|
|
|
edge after the last read or write. The combinatorial outputs however, pass
|
|
|
|
through several levels of logic before they are output. The registered status
|
|
|
|
outputs are direct outputs of a flip-flop. The reason both are provided, is
|
|
|
|
that the registered outputs require quite a bit of additional logic inside
|
|
|
|
the FIFO. If you can meet timing of your device with the combinatorial
|
|
|
|
outputs, use them ! The FIFO will be smaller. If the status signals are
|
|
|
|
in the critical pass, use the registered outputs, they have a much smaller
|
|
|
|
output delay (actually only Tcq).
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
----------
|
|
|
|
The FIFO takes 3 parameters:
|
|
|
|
dw Data bus width
|
|
|
|
aw Address bus width (Determines the FIFO size by evaluating 2^aw)
|
|
|
|
n N is a second status threshold constant for full_n and empty_n
|
|
|
|
If you have no need for the second status threshold, do not
|
|
|
|
connect the outputs and the logic should be removed by your
|
|
|
|
synthesis tool.
|
|
|
|
|
|
|
|
Synthesis Results
|
|
|
|
-----------------
|
|
|
|
In a Spartan 2e a 8 bit wide, 8 entries deep FIFO, takes 85 LUTs and runs
|
|
|
|
at about 116 MHz (IO insertion disabled). The registered status outputs
|
|
|
|
are valid after 2.1NS, the combinatorial once take out to 6.5 NS to be
|
|
|
|
available.
|
|
|
|
|
|
|
|
|
|
|
|
Misc
|
|
|
|
----
|
|
|
|
This design assumes you will do appropriate status checking externally.
|
|
|
|
|
|
|
|
IMPORTANT ! writing while the FIFO is full or reading while the FIFO is
|
|
|
|
empty will place the FIFO in an undefined state.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
// Selecting Sync. or Async Reset
|
|
|
|
// ------------------------------
|
|
|
|
// Uncomment one of the two lines below. The first line for
|
|
|
|
// synchronous reset, the second for asynchronous reset
|
|
|
|
|
|
|
|
//`define SC_FIFO_ASYNC_RESET // Uncomment for Syncr. reset
|
|
|
|
//`define SC_FIFO_ASYNC_RESET or negedge rst // Uncomment for Async. reset
|
|
|
|
|
|
|
|
/*
|
|
|
|
parameter dw=8;
|
|
|
|
parameter aw=8;
|
|
|
|
parameter n=32;
|
|
|
|
parameter max_size = 1<<aw;
|
|
|
|
*/
|
|
|
|
|
|
|
|
`define dwa 60
|
|
|
|
`define awa 6
|
|
|
|
|
|
|
|
module generic_fifo_sc_a(clk, rst, clr, din, we, dout, re,
|
|
|
|
full_r, empty_r,
|
|
|
|
full_n_r, empty_n_r);
|
|
|
|
/*
|
|
|
|
parameter dw=8;
|
|
|
|
parameter aw=8;
|
|
|
|
parameter n=32;
|
|
|
|
parameter max_size = 1<<aw;
|
|
|
|
*/
|
|
|
|
input clk, rst, clr;
|
|
|
|
input [`dwa-1:0] din;
|
|
|
|
input we;
|
|
|
|
output [`dwa-1:0] dout;
|
|
|
|
input re;
|
2021-03-22 13:50:39 -05:00
|
|
|
output full_r;
|
|
|
|
output empty_r;
|
|
|
|
output full_n_r;
|
|
|
|
output empty_n_r;
|
2021-03-17 16:24:26 -05:00
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Local Wires
|
|
|
|
//
|
|
|
|
|
2021-03-22 13:50:39 -05:00
|
|
|
wire [1:0] level;
|
2021-03-17 16:24:26 -05:00
|
|
|
reg [`awa-1:0] wp;
|
|
|
|
wire [`awa-1:0] wp_pl1;
|
|
|
|
wire [`awa-1:0] wp_pl2;
|
|
|
|
reg [`awa-1:0] rp;
|
|
|
|
wire [`awa-1:0] rp_pl1;
|
|
|
|
reg full_r;
|
|
|
|
reg empty_r;
|
|
|
|
reg gb;
|
|
|
|
reg gb2;
|
|
|
|
reg [`awa:0] cnt;
|
|
|
|
wire full_n, empty_n;
|
|
|
|
reg full_n_r, empty_n_r;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Memory Block
|
|
|
|
//
|
|
|
|
wire always_zero;
|
|
|
|
assign always_zero = 1'b0;
|
|
|
|
wire [`dwa-1:0] junk_out;
|
|
|
|
|
|
|
|
wire [`dwa-1:0] junk_in;
|
|
|
|
|
|
|
|
// manually assign
|
|
|
|
assign junk_in = 60'b000000000000000000000000000000000000000000000000000000000000;
|
|
|
|
|
2021-03-22 13:50:39 -05:00
|
|
|
dual_port_ram_64x60 ram1(
|
2021-03-17 16:24:26 -05:00
|
|
|
.clk( clk ),
|
|
|
|
.addr1( rp ),
|
|
|
|
.addr2( wp ),
|
|
|
|
.we1( we ),
|
|
|
|
.we2( always_zero ),
|
|
|
|
.out1( dout ),
|
|
|
|
.out2( junk_out ),
|
|
|
|
.data1( din ),
|
|
|
|
.data2 ( junk_in)
|
|
|
|
);
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Misc Logic
|
|
|
|
//
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) wp <= {6'b000000};
|
|
|
|
else
|
|
|
|
if(clr) wp <= {6'b000000};
|
|
|
|
else
|
|
|
|
if(we) wp <= wp_pl1;
|
|
|
|
|
|
|
|
assign wp_pl1 = wp + { {5'b00000}, 1'b1};
|
|
|
|
assign wp_pl2 = wp + { {4'b0000}, 2'b10};
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) rp <= {6'b000000};
|
|
|
|
else
|
|
|
|
if(clr) rp <= {6'b000000};
|
|
|
|
else
|
|
|
|
if(re) rp <= rp_pl1;
|
|
|
|
|
|
|
|
assign rp_pl1 = rp + { {5'b00000}, 1'b1};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Combinatorial Full & Empty Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
assign empty = ((wp == rp) & !gb);
|
|
|
|
assign full = ((wp == rp) & gb);
|
|
|
|
|
|
|
|
// Guard Bit ...
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) gb <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) gb <= 1'b0;
|
|
|
|
else
|
|
|
|
if((wp_pl1 == rp) & we) gb <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re) gb <= 1'b0;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Registered Full & Empty Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
// Guard Bit ...
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) gb2 <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) gb2 <= 1'b0;
|
|
|
|
else
|
|
|
|
if((wp_pl2 == rp) & we) gb2 <= 1'b1;
|
|
|
|
else
|
|
|
|
if((wp != rp) & re) gb2 <= 1'b0;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) full_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) full_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(we & ((wp_pl1 == rp) & gb2) & !re) full_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re & ((wp_pl1 != rp) | !gb2) & !we) full_r <= 1'b0;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) empty_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(clr) empty_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(we & ((wp != rp_pl1) | gb2) & !re) empty_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(re & ((wp == rp_pl1) & !gb2) & !we) empty_r <= 1'b1;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Combinatorial Full_n & Empty_n Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
assign empty_n = cnt < `n;
|
|
|
|
assign full_n = !(cnt < (`max_size-`n+1));
|
|
|
|
assign level = {{cnt[`awa]}, {cnt[`awa]}} | cnt[`awa-1:`awa-2];
|
|
|
|
|
|
|
|
// N entries status
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) cnt <= {6'b000000};
|
|
|
|
else
|
|
|
|
if(clr) cnt <= {6'b000000};
|
|
|
|
else
|
|
|
|
if( re & !we) cnt <= cnt + { 7'b1111111};
|
|
|
|
else
|
|
|
|
if(!re & we) cnt <= cnt + { {6'b0000}, 1'b1};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Registered Full_n & Empty_n Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) empty_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(clr) empty_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(we & (cnt >= (`n-1) ) & !re) empty_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(re & (cnt <= `n ) & !we) empty_n_r <= 1'b1;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) full_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) full_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(we & (cnt >= (`max_size-`n) ) & !re) full_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re & (cnt <= (`max_size-`n+1)) & !we) full_n_r <= 1'b0;
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module SizedFIFO_b (CLK, D_IN,ENQ,DEQ,CLR,D_OUT,FULL_N,EMPTY_N);
|
|
|
|
|
|
|
|
|
|
|
|
input CLK;
|
|
|
|
input [31:0] D_IN;
|
|
|
|
input ENQ;
|
|
|
|
input DEQ;
|
|
|
|
input CLR;
|
|
|
|
output [31:0] D_OUT;
|
|
|
|
output FULL_N;
|
|
|
|
output EMPTY_N;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wire fulln;
|
|
|
|
wire emptyn;
|
|
|
|
|
|
|
|
wire always_one;
|
|
|
|
wire always_zero;
|
|
|
|
|
|
|
|
assign always_one = 1'b1;
|
|
|
|
assign always_zero = 1'b0;
|
|
|
|
|
|
|
|
generic_fifo_sc_b fifo_1
|
|
|
|
(.clk(CLK),
|
|
|
|
.rst(CLR),
|
|
|
|
.clr (CLR),
|
|
|
|
.din (D_IN),
|
|
|
|
.we (ENQ),
|
|
|
|
.dout (D_OUT),
|
|
|
|
.re (DEQ),
|
|
|
|
.full_r (FULL_N),
|
|
|
|
.empty_r(EMPTY_N),
|
|
|
|
.full_n_r (fulln),
|
|
|
|
.empty_n_r (emptyn)
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//// ////
|
|
|
|
//// Universal FIFO Single Clock ////
|
|
|
|
//// ////
|
|
|
|
//// ////
|
|
|
|
//// Author: Rudolf Usselmann ////
|
|
|
|
//// rudi@asics.ws ////
|
|
|
|
//// ////
|
|
|
|
//// ////
|
|
|
|
//// D/L from: http://www.opencores.org/cores/generic_fifos/ ////
|
|
|
|
//// ////
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//// ////
|
|
|
|
//// Copyright (C) 2000-2002 Rudolf Usselmann ////
|
|
|
|
//// www.asics.ws ////
|
|
|
|
//// rudi@asics.ws ////
|
|
|
|
//// ////
|
|
|
|
//// This source file may be used and distributed without ////
|
|
|
|
//// restriction provided that this copyright statement is not ////
|
|
|
|
//// removed from the file and that any derivative work contains ////
|
|
|
|
//// the original copyright notice and the associated disclaimer.////
|
|
|
|
//// ////
|
|
|
|
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY ////
|
|
|
|
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED ////
|
|
|
|
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ////
|
|
|
|
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR ////
|
|
|
|
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ////
|
|
|
|
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ////
|
|
|
|
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ////
|
|
|
|
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR ////
|
|
|
|
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ////
|
|
|
|
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ////
|
|
|
|
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ////
|
|
|
|
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ////
|
|
|
|
//// POSSIBILITY OF SUCH DAMAGE. ////
|
|
|
|
//// ////
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
// CVS Log
|
|
|
|
//
|
|
|
|
// __Id: generic_fifo_sc_a.v,v 1.1.1.1 2002-09-25 05:42:06 rudi Exp __
|
|
|
|
//
|
|
|
|
// __Date: 2002-09-25 05:42:06 __
|
|
|
|
// __Revision: 1.1.1.1 __
|
|
|
|
// __Author: rudi __
|
|
|
|
// __Locker: __
|
|
|
|
// __State: Exp __
|
|
|
|
//
|
|
|
|
// Change History:
|
|
|
|
// __Log: not supported by cvs2svn __
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
Description
|
|
|
|
===========
|
|
|
|
|
|
|
|
I/Os
|
|
|
|
----
|
|
|
|
rst low active, either sync. or async. master reset (see below how to select)
|
|
|
|
clr synchronous clear (just like reset but always synchronous), high active
|
|
|
|
re read enable, synchronous, high active
|
|
|
|
we read enable, synchronous, high active
|
|
|
|
din Data Input
|
|
|
|
dout Data Output
|
|
|
|
|
|
|
|
full Indicates the FIFO is full (combinatorial output)
|
|
|
|
full_r same as above, but registered output (see note below)
|
|
|
|
empty Indicates the FIFO is empty
|
|
|
|
empty_r same as above, but registered output (see note below)
|
|
|
|
|
|
|
|
full_n Indicates if the FIFO has space for N entries (combinatorial output)
|
|
|
|
full_n_r same as above, but registered output (see note below)
|
|
|
|
empty_n Indicates the FIFO has at least N entries (combinatorial output)
|
|
|
|
empty_n_r same as above, but registered output (see note below)
|
|
|
|
|
|
|
|
level indicates the FIFO level:
|
|
|
|
2'b00 0-25% full
|
|
|
|
2'b01 25-50% full
|
|
|
|
2'b10 50-75% full
|
|
|
|
2'b11 %75-100% full
|
|
|
|
|
|
|
|
combinatorial vs. registered status outputs
|
|
|
|
-------------------------------------------
|
|
|
|
Both the combinatorial and registered status outputs have exactly the same
|
|
|
|
synchronous timing. Meaning they are being asserted immediately at the clock
|
|
|
|
edge after the last read or write. The combinatorial outputs however, pass
|
|
|
|
through several levels of logic before they are output. The registered status
|
|
|
|
outputs are direct outputs of a flip-flop. The reason both are provided, is
|
|
|
|
that the registered outputs require quite a bit of additional logic inside
|
|
|
|
the FIFO. If you can meet timing of your device with the combinatorial
|
|
|
|
outputs, use them ! The FIFO will be smaller. If the status signals are
|
|
|
|
in the critical pass, use the registered outputs, they have a much smaller
|
|
|
|
output delay (actually only Tcq).
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
----------
|
|
|
|
The FIFO takes 3 parameters:
|
|
|
|
dw Data bus width
|
|
|
|
aw Address bus width (Determines the FIFO size by evaluating 2^aw)
|
|
|
|
n N is a second status threshold constant for full_n and empty_n
|
|
|
|
If you have no need for the second status threshold, do not
|
|
|
|
connect the outputs and the logic should be removed by your
|
|
|
|
synthesis tool.
|
|
|
|
|
|
|
|
Synthesis Results
|
|
|
|
-----------------
|
|
|
|
In a Spartan 2e a 8 bit wide, 8 entries deep FIFO, takes 85 LUTs and runs
|
|
|
|
at about 116 MHz (IO insertion disabled). The registered status outputs
|
|
|
|
are valid after 2.1NS, the combinatorial once take out to 6.5 NS to be
|
|
|
|
available.
|
|
|
|
|
|
|
|
|
|
|
|
Misc
|
|
|
|
----
|
|
|
|
This design assumes you will do appropriate status checking externally.
|
|
|
|
|
|
|
|
IMPORTANT ! writing while the FIFO is full or reading while the FIFO is
|
|
|
|
empty will place the FIFO in an undefined state.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
// Selecting Sync. or Async Reset
|
|
|
|
// ------------------------------
|
|
|
|
// Uncomment one of the two lines below. The first line for
|
|
|
|
// synchronous reset, the second for asynchronous reset
|
|
|
|
|
|
|
|
//`define SC_FIFO_ASYNC_RESET // Uncomment for Syncr. reset
|
|
|
|
//`define SC_FIFO_ASYNC_RESET or negedge rst // Uncomment for Async. reset
|
|
|
|
|
|
|
|
/*
|
|
|
|
parameter dw=8;
|
|
|
|
parameter awb=8;
|
|
|
|
parameter n=32;
|
|
|
|
parameter max_size = 1<<aw;
|
|
|
|
*/
|
|
|
|
|
|
|
|
`define dwb 32
|
|
|
|
`define awb 2
|
|
|
|
|
|
|
|
module generic_fifo_sc_b(clk, rst, clr, din, we, dout, re,
|
|
|
|
full_r, empty_r,
|
|
|
|
full_n_r, empty_n_r);
|
|
|
|
/*
|
|
|
|
parameter dw=8;
|
|
|
|
parameter aw=8;
|
|
|
|
parameter n=32;
|
|
|
|
parameter max_size = 1<<aw;
|
|
|
|
*/
|
|
|
|
input clk, rst, clr;
|
|
|
|
input [`dwb-1:0] din;
|
|
|
|
input we;
|
|
|
|
output [`dwb-1:0] dout;
|
|
|
|
input re;
|
2021-03-22 13:50:39 -05:00
|
|
|
output full_r;
|
|
|
|
output empty_r;
|
|
|
|
output full_n_r;
|
|
|
|
output empty_n_r;
|
2021-03-17 16:24:26 -05:00
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Local Wires
|
|
|
|
//
|
|
|
|
|
2021-03-22 13:50:39 -05:00
|
|
|
wire [1:0] level;
|
2021-03-17 16:24:26 -05:00
|
|
|
reg [`awb-1:0] wp;
|
|
|
|
wire [`awb-1:0] wp_pl1;
|
|
|
|
wire [`awb-1:0] wp_pl2;
|
|
|
|
reg [`awb-1:0] rp;
|
|
|
|
wire [`awb-1:0] rp_pl1;
|
|
|
|
reg full_r;
|
|
|
|
reg empty_r;
|
|
|
|
reg gb;
|
|
|
|
reg gb2;
|
|
|
|
reg [`awb:0] cnt;
|
|
|
|
wire full_n, empty_n;
|
|
|
|
reg full_n_r, empty_n_r;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Memory Block
|
|
|
|
//
|
|
|
|
wire always_zero;
|
|
|
|
assign always_zero = 1'b0;
|
|
|
|
wire [`dwb-1:0] junk_out;
|
|
|
|
|
|
|
|
wire [`dwb-1:0] junk_in;
|
|
|
|
|
|
|
|
// manually assign
|
|
|
|
assign junk_in = 34'b0000000000000000000000000000000000;
|
|
|
|
|
2021-03-22 13:50:39 -05:00
|
|
|
dual_port_ram_4x32 ram1(
|
2021-03-17 16:24:26 -05:00
|
|
|
.clk( clk ),
|
|
|
|
.addr1( rp ),
|
|
|
|
.addr2( wp ),
|
|
|
|
.we1( we ),
|
|
|
|
.we2( always_zero ),
|
|
|
|
.out1( dout ),
|
|
|
|
.out2( junk_out ),
|
|
|
|
.data1( din ),
|
|
|
|
.data2 ( junk_in)
|
|
|
|
);
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Misc Logic
|
|
|
|
//
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) wp <= {2'b00};
|
|
|
|
else
|
|
|
|
if(clr) wp <= {2'b00};
|
|
|
|
else
|
|
|
|
if(we) wp <= wp_pl1;
|
|
|
|
|
|
|
|
assign wp_pl1 = wp + { {1'b0}, 1'b1};
|
|
|
|
assign wp_pl2 = wp + { 2'b10};
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) rp <= {2'b00};
|
|
|
|
else
|
|
|
|
if(clr) rp <= {2'b00};
|
|
|
|
else
|
|
|
|
if(re) rp <= rp_pl1;
|
|
|
|
|
|
|
|
assign rp_pl1 = rp + { {1'b0}, 1'b1};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Combinatorial Full & Empty Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
assign empty = ((wp == rp) & !gb);
|
|
|
|
assign full = ((wp == rp) & gb);
|
|
|
|
|
|
|
|
// Guard Bit ...
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) gb <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) gb <= 1'b0;
|
|
|
|
else
|
|
|
|
if((wp_pl1 == rp) & we) gb <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re) gb <= 1'b0;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Registered Full & Empty Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
// Guard Bit ...
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) gb2 <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) gb2 <= 1'b0;
|
|
|
|
else
|
|
|
|
if((wp_pl2 == rp) & we) gb2 <= 1'b1;
|
|
|
|
else
|
|
|
|
if((wp != rp) & re) gb2 <= 1'b0;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) full_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) full_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(we & ((wp_pl1 == rp) & gb2) & !re) full_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re & ((wp_pl1 != rp) | !gb2) & !we) full_r <= 1'b0;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) empty_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(clr) empty_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(we & ((wp != rp_pl1) | gb2) & !re) empty_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(re & ((wp == rp_pl1) & !gb2) & !we) empty_r <= 1'b1;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Combinatorial Full_n & Empty_n Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
assign empty_n = cnt < `n;
|
|
|
|
assign full_n = !(cnt < (`max_size-`n+1));
|
|
|
|
assign level = {{cnt[`awb]}, {cnt[`awb]}} | cnt[`awb-1:`awb-2];
|
|
|
|
|
|
|
|
// N entries status
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) cnt <= {2'b00};
|
|
|
|
else
|
|
|
|
if(clr) cnt <= {2'b00};
|
|
|
|
else
|
|
|
|
if( re & !we) cnt <= cnt + { 3'b111};
|
|
|
|
else
|
|
|
|
if(!re & we) cnt <= cnt + { {2'b00}, 1'b1};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Registered Full_n & Empty_n Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) empty_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(clr) empty_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(we & (cnt >= (`n-1) ) & !re) empty_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(re & (cnt <= `n ) & !we) empty_n_r <= 1'b1;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) full_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) full_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(we & (cnt >= (`max_size-`n) ) & !re) full_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re & (cnt <= (`max_size-`n+1)) & !we) full_n_r <= 1'b0;
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module SizedFIFO_c (CLK, D_IN,ENQ,DEQ,CLR,D_OUT,FULL_N,EMPTY_N);
|
|
|
|
|
|
|
|
|
|
|
|
input CLK;
|
|
|
|
input [60:0] D_IN;
|
|
|
|
input ENQ;
|
|
|
|
input DEQ;
|
|
|
|
input CLR;
|
|
|
|
output [60:0] D_OUT;
|
|
|
|
output FULL_N;
|
|
|
|
output EMPTY_N;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wire fulln;
|
|
|
|
wire emptyn;
|
|
|
|
|
|
|
|
wire always_one;
|
|
|
|
wire always_zero;
|
|
|
|
|
|
|
|
assign always_one = 1'b1;
|
|
|
|
assign always_zero = 1'b0;
|
|
|
|
|
|
|
|
generic_fifo_sc_c fifo_1
|
|
|
|
(.clk(CLK),
|
|
|
|
.rst(always_one),
|
|
|
|
.clr (CLR),
|
|
|
|
.din (D_IN),
|
|
|
|
.we (ENQ),
|
|
|
|
.dout (D_OUT),
|
|
|
|
.re (DEQ),
|
|
|
|
.full_r (FULL_N),
|
|
|
|
.empty_r(EMPTY_N),
|
|
|
|
.full_n_r (fulln),
|
|
|
|
.empty_n_r (emptyn)
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//// ////
|
|
|
|
//// Universal FIFO Single Clock ////
|
|
|
|
//// ////
|
|
|
|
//// ////
|
|
|
|
//// Author: Rudolf Usselmann ////
|
|
|
|
//// rudi@asics.ws ////
|
|
|
|
//// ////
|
|
|
|
//// ////
|
|
|
|
//// D/L from: http://www.opencores.org/cores/generic_fifos/ ////
|
|
|
|
//// ////
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
//// ////
|
|
|
|
//// Copyright (C) 2000-2002 Rudolf Usselmann ////
|
|
|
|
//// www.asics.ws ////
|
|
|
|
//// rudi@asics.ws ////
|
|
|
|
//// ////
|
|
|
|
//// This source file may be used and distributed without ////
|
|
|
|
//// restriction provided that this copyright statement is not ////
|
|
|
|
//// removed from the file and that any derivative work contains ////
|
|
|
|
//// the original copyright notice and the associated disclaimer.////
|
|
|
|
//// ////
|
|
|
|
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY ////
|
|
|
|
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED ////
|
|
|
|
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ////
|
|
|
|
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR ////
|
|
|
|
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ////
|
|
|
|
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ////
|
|
|
|
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ////
|
|
|
|
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR ////
|
|
|
|
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ////
|
|
|
|
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ////
|
|
|
|
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ////
|
|
|
|
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ////
|
|
|
|
//// POSSIBILITY OF SUCH DAMAGE. ////
|
|
|
|
//// ////
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
// CVS Log
|
|
|
|
//
|
|
|
|
// __Id: generic_fifo_sc_a.v,v 1.1.1.1 2002-09-25 05:42:06 rudi Exp __
|
|
|
|
//
|
|
|
|
// __Date: 2002-09-25 05:42:06 __
|
|
|
|
// __Revision: 1.1.1.1 __
|
|
|
|
// __Author: rudi __
|
|
|
|
// __Locker: __
|
|
|
|
// __State: Exp __
|
|
|
|
//
|
|
|
|
// Change History:
|
|
|
|
// __Log: not supported by cvs2svn __
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
Description
|
|
|
|
===========
|
|
|
|
|
|
|
|
I/Os
|
|
|
|
----
|
|
|
|
rst low active, either sync. or async. master reset (see below how to select)
|
|
|
|
clr synchronous clear (just like reset but always synchronous), high active
|
|
|
|
re read enable, synchronous, high active
|
|
|
|
we read enable, synchronous, high active
|
|
|
|
din Data Input
|
|
|
|
dout Data Output
|
|
|
|
|
|
|
|
full Indicates the FIFO is full (combinatorial output)
|
|
|
|
full_r same as above, but registered output (see note below)
|
|
|
|
empty Indicates the FIFO is empty
|
|
|
|
empty_r same as above, but registered output (see note below)
|
|
|
|
|
|
|
|
full_n Indicates if the FIFO has space for N entries (combinatorial output)
|
|
|
|
full_n_r same as above, but registered output (see note below)
|
|
|
|
empty_n Indicates the FIFO has at least N entries (combinatorial output)
|
|
|
|
empty_n_r same as above, but registered output (see note below)
|
|
|
|
|
|
|
|
level indicates the FIFO level:
|
|
|
|
2'b00 0-25% full
|
|
|
|
2'b01 25-50% full
|
|
|
|
2'b10 50-75% full
|
|
|
|
2'b11 %75-100% full
|
|
|
|
|
|
|
|
combinatorial vs. registered status outputs
|
|
|
|
-------------------------------------------
|
|
|
|
Both the combinatorial and registered status outputs have exactly the same
|
|
|
|
synchronous timing. Meaning they are being asserted immediately at the clock
|
|
|
|
edge after the last read or write. The combinatorial outputs however, pass
|
|
|
|
through several levels of logic before they are output. The registered status
|
|
|
|
outputs are direct outputs of a flip-flop. The reason both are provided, is
|
|
|
|
that the registered outputs require quite a bit of additional logic inside
|
|
|
|
the FIFO. If you can meet timing of your device with the combinatorial
|
|
|
|
outputs, use them ! The FIFO will be smaller. If the status signals are
|
|
|
|
in the critical pass, use the registered outputs, they have a much smaller
|
|
|
|
output delay (actually only Tcq).
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
----------
|
|
|
|
The FIFO takes 3 parameters:
|
|
|
|
dw Data bus width
|
|
|
|
aw Address bus width (Determines the FIFO size by evaluating 2^aw)
|
|
|
|
n N is a second status threshold constant for full_n and empty_n
|
|
|
|
If you have no need for the second status threshold, do not
|
|
|
|
connect the outputs and the logic should be removed by your
|
|
|
|
synthesis tool.
|
|
|
|
|
|
|
|
Synthesis Results
|
|
|
|
-----------------
|
|
|
|
In a Spartan 2e a 8 bit wide, 8 entries deep FIFO, takes 85 LUTs and runs
|
|
|
|
at about 116 MHz (IO insertion disabled). The registered status outputs
|
|
|
|
are valid after 2.1NS, the combinatorial once take out to 6.5 NS to be
|
|
|
|
available.
|
|
|
|
|
|
|
|
|
|
|
|
Misc
|
|
|
|
----
|
|
|
|
This design assumes you will do appropriate status checking externally.
|
|
|
|
|
|
|
|
IMPORTANT ! writing while the FIFO is full or reading while the FIFO is
|
|
|
|
empty will place the FIFO in an undefined state.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
// Selecting Sync. or Async Reset
|
|
|
|
// ------------------------------
|
|
|
|
// Uncomment one of the two lines below. The first line for
|
|
|
|
// synchronous reset, the second for asynchronous reset
|
|
|
|
|
|
|
|
//`define SC_FIFO_ASYNC_RESET // Uncomment for Syncr. reset
|
|
|
|
//`define SC_FIFO_ASYNC_RESET or negedge rst // Uncomment for Async. reset
|
|
|
|
|
|
|
|
/*
|
|
|
|
parameter dw=8;
|
|
|
|
parameter aw=8;
|
|
|
|
parameter n=32;
|
|
|
|
parameter max_size = 1<<aw;
|
|
|
|
*/
|
|
|
|
|
|
|
|
`define dwc 61
|
|
|
|
`define awc 3
|
|
|
|
|
|
|
|
module generic_fifo_sc_c(clk, rst, clr, din, we, dout, re,
|
|
|
|
full_r, empty_r,
|
|
|
|
full_n_r, empty_n_r);
|
|
|
|
/*
|
|
|
|
parameter dw=8;
|
|
|
|
parameter aw=8;
|
|
|
|
parameter n=32;
|
|
|
|
parameter max_size = 1<<aw;
|
|
|
|
*/
|
|
|
|
input clk, rst, clr;
|
|
|
|
input [`dwc-1:0] din;
|
|
|
|
input we;
|
|
|
|
output [`dwc-1:0] dout;
|
|
|
|
input re;
|
2021-03-22 13:50:39 -05:00
|
|
|
output full_r;
|
|
|
|
output empty_r;
|
|
|
|
output full_n_r;
|
|
|
|
output empty_n_r;
|
2021-03-17 16:24:26 -05:00
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Local Wires
|
|
|
|
//
|
|
|
|
|
2021-03-22 13:50:39 -05:00
|
|
|
wire [1:0] level;
|
2021-03-17 16:24:26 -05:00
|
|
|
reg [`awc-1:0] wp;
|
|
|
|
wire [`awc-1:0] wp_pl1;
|
|
|
|
wire [`awc-1:0] wp_pl2;
|
|
|
|
reg [`awc-1:0] rp;
|
|
|
|
wire [`awc-1:0] rp_pl1;
|
|
|
|
reg full_r;
|
|
|
|
reg empty_r;
|
|
|
|
reg gb;
|
|
|
|
reg gb2;
|
|
|
|
reg [`awc:0] cnt;
|
|
|
|
wire full_n, empty_n;
|
|
|
|
reg full_n_r, empty_n_r;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Memory Block
|
|
|
|
//
|
|
|
|
wire always_zero;
|
|
|
|
assign always_zero = 1'b0;
|
|
|
|
wire [`dwc-1:0] junk_out;
|
|
|
|
|
|
|
|
wire [`dwc-1:0] junk_in;
|
|
|
|
|
|
|
|
// manually assign
|
|
|
|
assign junk_in = 61'b0000000000000000000000000000000000000000000000000000000000000;
|
|
|
|
|
2021-03-22 13:50:39 -05:00
|
|
|
dual_port_ram_8x61 ram1(
|
2021-03-17 16:24:26 -05:00
|
|
|
.clk( clk ),
|
|
|
|
.addr1( rp ),
|
|
|
|
.addr2( wp ),
|
|
|
|
.we1( we ),
|
|
|
|
.we2( always_zero ),
|
|
|
|
.out1( dout ),
|
|
|
|
.out2( junk_out ),
|
|
|
|
.data1( din ),
|
|
|
|
.data2 ( junk_in)
|
|
|
|
);
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Misc Logic
|
|
|
|
//
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) wp <= {3'b000};
|
|
|
|
else
|
|
|
|
if(clr) wp <= {3'b000};
|
|
|
|
else
|
|
|
|
if(we) wp <= wp_pl1;
|
|
|
|
|
|
|
|
assign wp_pl1 = wp + { {2'b00}, 1'b1};
|
|
|
|
assign wp_pl2 = wp + { {1'b0}, 2'b10};
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) rp <= {3'b000};
|
|
|
|
else
|
|
|
|
if(clr) rp <= {3'b000};
|
|
|
|
else
|
|
|
|
if(re) rp <= rp_pl1;
|
|
|
|
|
|
|
|
assign rp_pl1 = rp + { {2'b00}, 1'b1};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Combinatorial Full & Empty Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
assign empty = ((wp == rp) & !gb);
|
|
|
|
assign full = ((wp == rp) & gb);
|
|
|
|
|
|
|
|
// Guard Bit ...
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) gb <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) gb <= 1'b0;
|
|
|
|
else
|
|
|
|
if((wp_pl1 == rp) & we) gb <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re) gb <= 1'b0;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Registered Full & Empty Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
// Guard Bit ...
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) gb2 <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) gb2 <= 1'b0;
|
|
|
|
else
|
|
|
|
if((wp_pl2 == rp) & we) gb2 <= 1'b1;
|
|
|
|
else
|
|
|
|
if((wp != rp) & re) gb2 <= 1'b0;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) full_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) full_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(we & ((wp_pl1 == rp) & gb2) & !re) full_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re & ((wp_pl1 != rp) | !gb2) & !we) full_r <= 1'b0;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) empty_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(clr) empty_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(we & ((wp != rp_pl1) | gb2) & !re) empty_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(re & ((wp == rp_pl1) & !gb2) & !we) empty_r <= 1'b1;
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Combinatorial Full_n & Empty_n Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
assign empty_n = cnt < `n;
|
|
|
|
assign full_n = !(cnt < (`max_size-`n+1));
|
|
|
|
assign level = {{cnt[`awc]}, {cnt[`awc]}} | cnt[`awc-1:`awc-2];
|
|
|
|
|
|
|
|
// N entries status
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) cnt <= {3'b000};
|
|
|
|
else
|
|
|
|
if(clr) cnt <= {3'b000};
|
|
|
|
else
|
|
|
|
if( re & !we) cnt <= cnt + { 4'b1111};
|
|
|
|
else
|
|
|
|
if(!re & we) cnt <= cnt + { {3'b000}, 1'b1};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Registered Full_n & Empty_n Flags
|
|
|
|
//
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) empty_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(clr) empty_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(we & (cnt >= (`n-1) ) & !re) empty_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(re & (cnt <= `n ) & !we) empty_n_r <= 1'b1;
|
|
|
|
|
|
|
|
always @(posedge clk )
|
|
|
|
if(!rst) full_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(clr) full_n_r <= 1'b0;
|
|
|
|
else
|
|
|
|
if(we & (cnt >= (`max_size-`n) ) & !re) full_n_r <= 1'b1;
|
|
|
|
else
|
|
|
|
if(re & (cnt <= (`max_size-`n+1)) & !we) full_n_r <= 1'b0;
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
|
|
|
|
module ResetToBool (RST, VAL);
|
|
|
|
|
|
|
|
input RST;
|
|
|
|
output VAL;
|
|
|
|
reg VAL;
|
|
|
|
|
|
|
|
always @ (RST or VAL)
|
|
|
|
begin
|
|
|
|
|
|
|
|
if (RST == 1)
|
|
|
|
VAL=1'b0;
|
|
|
|
|
|
|
|
end
|
|
|
|
endmodule
|
|
|
|
|
2021-03-22 13:50:39 -05:00
|
|
|
//---------------------------------------
|
|
|
|
// A dual-port RAM 64x60
|
|
|
|
// This module is tuned for VTR's benchmarks
|
|
|
|
//---------------------------------------
|
|
|
|
module dual_port_ram_64x60 (
|
|
|
|
input clk,
|
|
|
|
input we1,
|
|
|
|
input we2,
|
|
|
|
input [6 - 1 : 0] addr1,
|
|
|
|
input [60 - 1 : 0] data1,
|
|
|
|
output [60 - 1 : 0] out1,
|
|
|
|
input [6 - 1 : 0] addr2,
|
|
|
|
input [60 - 1 : 0] data2,
|
|
|
|
output [60 - 1 : 0] out2
|
|
|
|
);
|
|
|
|
reg [60 - 1 : 0] ram[2**6 - 1 : 0];
|
|
|
|
reg [60 - 1 : 0] data_out1;
|
|
|
|
reg [60 - 1 : 0] data_out2;
|
|
|
|
|
|
|
|
assign out1 = data_out1;
|
|
|
|
assign out2 = data_out2;
|
|
|
|
|
|
|
|
// If writen enable 1 is activated,
|
|
|
|
// data1 will be loaded through addr1
|
|
|
|
// Otherwise, data will be read out through addr1
|
|
|
|
always @(posedge clk) begin
|
|
|
|
if (we1) begin
|
|
|
|
ram[addr1] <= data1;
|
|
|
|
end else begin
|
|
|
|
data_out1 <= ram[addr1];
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
// If writen enable 2 is activated,
|
|
|
|
// data1 will be loaded through addr2
|
|
|
|
// Otherwise, data will be read out through addr2
|
|
|
|
always @(posedge clk) begin
|
|
|
|
if (we2) begin
|
|
|
|
ram[addr2] <= data2;
|
|
|
|
end else begin
|
|
|
|
data_out2 <= ram[addr2];
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
//---------------------------------------
|
|
|
|
// A dual-port RAM 4x32
|
|
|
|
// This module is tuned for VTR's benchmarks
|
|
|
|
//---------------------------------------
|
|
|
|
module dual_port_ram_4x32 (
|
|
|
|
input clk,
|
|
|
|
input we1,
|
|
|
|
input we2,
|
|
|
|
input [2 - 1 : 0] addr1,
|
|
|
|
input [32 - 1 : 0] data1,
|
|
|
|
output [32 - 1 : 0] out1,
|
|
|
|
input [2 - 1 : 0] addr2,
|
|
|
|
input [32 - 1 : 0] data2,
|
|
|
|
output [32 - 1 : 0] out2
|
|
|
|
);
|
|
|
|
reg [32 - 1 : 0] ram[2**2 - 1 : 0];
|
|
|
|
reg [32 - 1 : 0] data_out1;
|
|
|
|
reg [32 - 1 : 0] data_out2;
|
|
|
|
|
|
|
|
assign out1 = data_out1;
|
|
|
|
assign out2 = data_out2;
|
|
|
|
|
|
|
|
// If writen enable 1 is activated,
|
|
|
|
// data1 will be loaded through addr1
|
|
|
|
// Otherwise, data will be read out through addr1
|
|
|
|
always @(posedge clk) begin
|
|
|
|
if (we1) begin
|
|
|
|
ram[addr1] <= data1;
|
|
|
|
end else begin
|
|
|
|
data_out1 <= ram[addr1];
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
// If writen enable 2 is activated,
|
|
|
|
// data1 will be loaded through addr2
|
|
|
|
// Otherwise, data will be read out through addr2
|
|
|
|
always @(posedge clk) begin
|
|
|
|
if (we2) begin
|
|
|
|
ram[addr2] <= data2;
|
|
|
|
end else begin
|
|
|
|
data_out2 <= ram[addr2];
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
//---------------------------------------
|
|
|
|
// A dual-port RAM 8x61
|
|
|
|
// This module is tuned for VTR's benchmarks
|
|
|
|
//---------------------------------------
|
|
|
|
module dual_port_ram_8x61 (
|
|
|
|
input clk,
|
|
|
|
input we1,
|
|
|
|
input we2,
|
|
|
|
input [3 - 1 : 0] addr1,
|
|
|
|
input [61 - 1 : 0] data1,
|
|
|
|
output [61 - 1 : 0] out1,
|
|
|
|
input [3 - 1 : 0] addr2,
|
|
|
|
input [61 - 1 : 0] data2,
|
|
|
|
output [61 - 1 : 0] out2
|
|
|
|
);
|
|
|
|
reg [61 - 1 : 0] ram[2**3 - 1 : 0];
|
|
|
|
reg [61 - 1 : 0] data_out1;
|
|
|
|
reg [61 - 1 : 0] data_out2;
|
|
|
|
|
|
|
|
assign out1 = data_out1;
|
|
|
|
assign out2 = data_out2;
|
|
|
|
|
|
|
|
// If writen enable 1 is activated,
|
|
|
|
// data1 will be loaded through addr1
|
|
|
|
// Otherwise, data will be read out through addr1
|
|
|
|
always @(posedge clk) begin
|
|
|
|
if (we1) begin
|
|
|
|
ram[addr1] <= data1;
|
|
|
|
end else begin
|
|
|
|
data_out1 <= ram[addr1];
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
// If writen enable 2 is activated,
|
|
|
|
// data1 will be loaded through addr2
|
|
|
|
// Otherwise, data will be read out through addr2
|
|
|
|
always @(posedge clk) begin
|
|
|
|
if (we2) begin
|
|
|
|
ram[addr2] <= data2;
|
|
|
|
end else begin
|
|
|
|
data_out2 <= ram[addr2];
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
endmodule
|