1106 lines
54 KiB
Systemverilog
1106 lines
54 KiB
Systemverilog
// Generated by CIRCT firtool-1.139.0
|
|
module OoOBackend(
|
|
input clock,
|
|
reset,
|
|
io_decodeValid_0,
|
|
io_decodeValid_1,
|
|
input [63:0] io_decode_0_pc,
|
|
input [31:0] io_decode_0_inst,
|
|
input [4:0] io_decode_0_rs1,
|
|
io_decode_0_rs2,
|
|
io_decode_0_rd,
|
|
input [2:0] io_decode_0_funct3,
|
|
input [63:0] io_decode_0_immI,
|
|
io_decode_0_immS,
|
|
io_decode_0_immB,
|
|
io_decode_0_immU,
|
|
io_decode_0_immJ,
|
|
input [3:0] io_decode_0_opClass,
|
|
input [4:0] io_decode_0_aluFn,
|
|
input [2:0] io_decode_0_memWidth,
|
|
input io_decode_0_memSigned,
|
|
io_decode_0_isLoad,
|
|
io_decode_0_isStore,
|
|
io_decode_0_isBranch,
|
|
io_decode_0_isJal,
|
|
io_decode_0_isJalr,
|
|
io_decode_0_isLui,
|
|
io_decode_0_isAuipc,
|
|
io_decode_0_isOpImm,
|
|
io_decode_0_isWord,
|
|
io_decode_0_isSystem,
|
|
io_decode_0_isFenceI,
|
|
io_decode_0_isAmo,
|
|
input [4:0] io_decode_0_amoOp,
|
|
input io_decode_0_writesRd,
|
|
io_decode_0_illegal,
|
|
input [63:0] io_decode_1_pc,
|
|
input [31:0] io_decode_1_inst,
|
|
input [4:0] io_decode_1_rs1,
|
|
io_decode_1_rs2,
|
|
io_decode_1_rd,
|
|
input [2:0] io_decode_1_funct3,
|
|
input [63:0] io_decode_1_immI,
|
|
io_decode_1_immS,
|
|
io_decode_1_immB,
|
|
io_decode_1_immU,
|
|
io_decode_1_immJ,
|
|
input [3:0] io_decode_1_opClass,
|
|
input [4:0] io_decode_1_aluFn,
|
|
input [2:0] io_decode_1_memWidth,
|
|
input io_decode_1_memSigned,
|
|
io_decode_1_isLoad,
|
|
io_decode_1_isStore,
|
|
io_decode_1_isBranch,
|
|
io_decode_1_isJal,
|
|
io_decode_1_isJalr,
|
|
io_decode_1_isLui,
|
|
io_decode_1_isAuipc,
|
|
io_decode_1_isOpImm,
|
|
io_decode_1_isWord,
|
|
io_decode_1_isSystem,
|
|
io_decode_1_isFenceI,
|
|
io_decode_1_isAmo,
|
|
input [4:0] io_decode_1_amoOp,
|
|
input io_decode_1_writesRd,
|
|
io_decode_1_illegal,
|
|
output io_decodeReady,
|
|
io_flush,
|
|
output [63:0] io_redirectPc,
|
|
output io_invalidateICache,
|
|
io_dmemReqValid,
|
|
output [63:0] io_dmemReq_addr,
|
|
io_dmemReq_data,
|
|
output io_dmemReq_isStore,
|
|
output [2:0] io_dmemReq_size,
|
|
input io_dmemRespValid,
|
|
input [63:0] io_dmemRespData
|
|
);
|
|
|
|
wire [63:0] _csr_io_rdata;
|
|
wire [63:0] _csr_io_satp;
|
|
wire [63:0] _csr_io_mtvec;
|
|
wire [63:0] _csr_io_mepc;
|
|
wire _lsu_io_reqReady;
|
|
wire _lsu_io_respValid;
|
|
wire [63:0] _lsu_io_respData;
|
|
wire _lsu_io_pageFault;
|
|
wire [3:0] _sq_io_enqIdx;
|
|
wire _sq_io_forwardValid;
|
|
wire [63:0] _sq_io_forwardData;
|
|
wire _sq_io_forwardBlock;
|
|
wire _sq_io_olderStoreValid;
|
|
wire _sq_io_drainValid;
|
|
wire [63:0] _sq_io_drain_addr;
|
|
wire [63:0] _sq_io_drain_data;
|
|
wire [2:0] _sq_io_drain_size;
|
|
wire [3:0] _lq_io_enqIdx;
|
|
wire _lq_io_violation;
|
|
wire _commit_io_commitReady_0;
|
|
wire _commit_io_commitReady_1;
|
|
wire _commit_io_freeOldPhys_0;
|
|
wire _commit_io_freeOldPhys_1;
|
|
wire [5:0] _commit_io_oldPhys_0;
|
|
wire [5:0] _commit_io_oldPhys_1;
|
|
wire _commit_io_commitMapValid_0;
|
|
wire _commit_io_commitMapValid_1;
|
|
wire [4:0] _commit_io_commitArch_0;
|
|
wire [4:0] _commit_io_commitArch_1;
|
|
wire [5:0] _commit_io_commitPhys_0;
|
|
wire [5:0] _commit_io_commitPhys_1;
|
|
wire _commit_io_flush;
|
|
wire [63:0] _commit_io_redirectPc;
|
|
wire _commit_io_exception;
|
|
wire [63:0] _commit_io_exceptionCause;
|
|
wire [63:0] _commit_io_badAddr;
|
|
wire _wb_1_io_wen;
|
|
wire [5:0] _wb_1_io_waddr;
|
|
wire [63:0] _wb_1_io_wdata;
|
|
wire _wb_0_io_wen;
|
|
wire [5:0] _wb_0_io_waddr;
|
|
wire [63:0] _wb_0_io_wdata;
|
|
wire _exec_1_io_outValid;
|
|
wire [63:0] _exec_1_io_result;
|
|
wire _exec_1_io_branchTaken;
|
|
wire _exec_0_io_outValid;
|
|
wire [63:0] _exec_0_io_result;
|
|
wire _exec_0_io_branchTaken;
|
|
wire [63:0] _prf_io_rdata_0;
|
|
wire [63:0] _prf_io_rdata_1;
|
|
wire [63:0] _prf_io_rdata_2;
|
|
wire [63:0] _prf_io_rdata_3;
|
|
wire _issue_io_inReady_0;
|
|
wire _issue_io_inReady_1;
|
|
wire _issue_io_outValid_0;
|
|
wire _issue_io_outValid_1;
|
|
wire [63:0] _issue_io_out_0_decoded_pc;
|
|
wire [31:0] _issue_io_out_0_decoded_inst;
|
|
wire [4:0] _issue_io_out_0_decoded_rs1;
|
|
wire [2:0] _issue_io_out_0_decoded_funct3;
|
|
wire [63:0] _issue_io_out_0_decoded_immI;
|
|
wire [63:0] _issue_io_out_0_decoded_immS;
|
|
wire [63:0] _issue_io_out_0_decoded_immB;
|
|
wire [63:0] _issue_io_out_0_decoded_immU;
|
|
wire [63:0] _issue_io_out_0_decoded_immJ;
|
|
wire [4:0] _issue_io_out_0_decoded_aluFn;
|
|
wire [2:0] _issue_io_out_0_decoded_memWidth;
|
|
wire _issue_io_out_0_decoded_memSigned;
|
|
wire _issue_io_out_0_decoded_isLoad;
|
|
wire _issue_io_out_0_decoded_isStore;
|
|
wire _issue_io_out_0_decoded_isBranch;
|
|
wire _issue_io_out_0_decoded_isJal;
|
|
wire _issue_io_out_0_decoded_isJalr;
|
|
wire _issue_io_out_0_decoded_isLui;
|
|
wire _issue_io_out_0_decoded_isAuipc;
|
|
wire _issue_io_out_0_decoded_isOpImm;
|
|
wire _issue_io_out_0_decoded_isWord;
|
|
wire _issue_io_out_0_decoded_isSystem;
|
|
wire _issue_io_out_0_decoded_isFenceI;
|
|
wire _issue_io_out_0_decoded_isAmo;
|
|
wire [4:0] _issue_io_out_0_decoded_amoOp;
|
|
wire _issue_io_out_0_decoded_writesRd;
|
|
wire _issue_io_out_0_decoded_illegal;
|
|
wire [5:0] _issue_io_out_0_prs1;
|
|
wire [5:0] _issue_io_out_0_prs2;
|
|
wire [5:0] _issue_io_out_0_prd;
|
|
wire [5:0] _issue_io_out_0_robIdx;
|
|
wire [63:0] _issue_io_out_1_decoded_pc;
|
|
wire [31:0] _issue_io_out_1_decoded_inst;
|
|
wire [4:0] _issue_io_out_1_decoded_rs1;
|
|
wire [2:0] _issue_io_out_1_decoded_funct3;
|
|
wire [63:0] _issue_io_out_1_decoded_immI;
|
|
wire [63:0] _issue_io_out_1_decoded_immS;
|
|
wire [63:0] _issue_io_out_1_decoded_immB;
|
|
wire [63:0] _issue_io_out_1_decoded_immU;
|
|
wire [63:0] _issue_io_out_1_decoded_immJ;
|
|
wire [4:0] _issue_io_out_1_decoded_aluFn;
|
|
wire [2:0] _issue_io_out_1_decoded_memWidth;
|
|
wire _issue_io_out_1_decoded_memSigned;
|
|
wire _issue_io_out_1_decoded_isLoad;
|
|
wire _issue_io_out_1_decoded_isStore;
|
|
wire _issue_io_out_1_decoded_isBranch;
|
|
wire _issue_io_out_1_decoded_isJal;
|
|
wire _issue_io_out_1_decoded_isJalr;
|
|
wire _issue_io_out_1_decoded_isLui;
|
|
wire _issue_io_out_1_decoded_isAuipc;
|
|
wire _issue_io_out_1_decoded_isOpImm;
|
|
wire _issue_io_out_1_decoded_isWord;
|
|
wire _issue_io_out_1_decoded_isSystem;
|
|
wire _issue_io_out_1_decoded_isFenceI;
|
|
wire _issue_io_out_1_decoded_isAmo;
|
|
wire [4:0] _issue_io_out_1_decoded_amoOp;
|
|
wire _issue_io_out_1_decoded_writesRd;
|
|
wire _issue_io_out_1_decoded_illegal;
|
|
wire [5:0] _issue_io_out_1_prs1;
|
|
wire [5:0] _issue_io_out_1_prs2;
|
|
wire [5:0] _issue_io_out_1_prd;
|
|
wire [5:0] _issue_io_out_1_robIdx;
|
|
wire _rename_io_outValid_0;
|
|
wire _rename_io_outValid_1;
|
|
wire [63:0] _rename_io_out_0_decoded_pc;
|
|
wire [31:0] _rename_io_out_0_decoded_inst;
|
|
wire [4:0] _rename_io_out_0_decoded_rs1;
|
|
wire [4:0] _rename_io_out_0_decoded_rs2;
|
|
wire [2:0] _rename_io_out_0_decoded_funct3;
|
|
wire [63:0] _rename_io_out_0_decoded_immI;
|
|
wire [63:0] _rename_io_out_0_decoded_immS;
|
|
wire [63:0] _rename_io_out_0_decoded_immB;
|
|
wire [63:0] _rename_io_out_0_decoded_immU;
|
|
wire [63:0] _rename_io_out_0_decoded_immJ;
|
|
wire [4:0] _rename_io_out_0_decoded_aluFn;
|
|
wire [2:0] _rename_io_out_0_decoded_memWidth;
|
|
wire _rename_io_out_0_decoded_memSigned;
|
|
wire _rename_io_out_0_decoded_isLoad;
|
|
wire _rename_io_out_0_decoded_isStore;
|
|
wire _rename_io_out_0_decoded_isBranch;
|
|
wire _rename_io_out_0_decoded_isJal;
|
|
wire _rename_io_out_0_decoded_isJalr;
|
|
wire _rename_io_out_0_decoded_isLui;
|
|
wire _rename_io_out_0_decoded_isAuipc;
|
|
wire _rename_io_out_0_decoded_isOpImm;
|
|
wire _rename_io_out_0_decoded_isWord;
|
|
wire _rename_io_out_0_decoded_isSystem;
|
|
wire _rename_io_out_0_decoded_isFenceI;
|
|
wire _rename_io_out_0_decoded_isAmo;
|
|
wire [4:0] _rename_io_out_0_decoded_amoOp;
|
|
wire _rename_io_out_0_decoded_writesRd;
|
|
wire _rename_io_out_0_decoded_illegal;
|
|
wire [5:0] _rename_io_out_0_prs1;
|
|
wire [5:0] _rename_io_out_0_prs2;
|
|
wire _rename_io_out_0_src1Ready;
|
|
wire _rename_io_out_0_src2Ready;
|
|
wire [5:0] _rename_io_out_0_prd;
|
|
wire [5:0] _rename_io_out_0_robIdx;
|
|
wire [63:0] _rename_io_out_1_decoded_pc;
|
|
wire [31:0] _rename_io_out_1_decoded_inst;
|
|
wire [4:0] _rename_io_out_1_decoded_rs1;
|
|
wire [4:0] _rename_io_out_1_decoded_rs2;
|
|
wire [2:0] _rename_io_out_1_decoded_funct3;
|
|
wire [63:0] _rename_io_out_1_decoded_immI;
|
|
wire [63:0] _rename_io_out_1_decoded_immS;
|
|
wire [63:0] _rename_io_out_1_decoded_immB;
|
|
wire [63:0] _rename_io_out_1_decoded_immU;
|
|
wire [63:0] _rename_io_out_1_decoded_immJ;
|
|
wire [4:0] _rename_io_out_1_decoded_aluFn;
|
|
wire [2:0] _rename_io_out_1_decoded_memWidth;
|
|
wire _rename_io_out_1_decoded_memSigned;
|
|
wire _rename_io_out_1_decoded_isLoad;
|
|
wire _rename_io_out_1_decoded_isStore;
|
|
wire _rename_io_out_1_decoded_isBranch;
|
|
wire _rename_io_out_1_decoded_isJal;
|
|
wire _rename_io_out_1_decoded_isJalr;
|
|
wire _rename_io_out_1_decoded_isLui;
|
|
wire _rename_io_out_1_decoded_isAuipc;
|
|
wire _rename_io_out_1_decoded_isOpImm;
|
|
wire _rename_io_out_1_decoded_isWord;
|
|
wire _rename_io_out_1_decoded_isSystem;
|
|
wire _rename_io_out_1_decoded_isFenceI;
|
|
wire _rename_io_out_1_decoded_isAmo;
|
|
wire [4:0] _rename_io_out_1_decoded_amoOp;
|
|
wire _rename_io_out_1_decoded_writesRd;
|
|
wire _rename_io_out_1_decoded_illegal;
|
|
wire [5:0] _rename_io_out_1_prs1;
|
|
wire [5:0] _rename_io_out_1_prs2;
|
|
wire _rename_io_out_1_src1Ready;
|
|
wire _rename_io_out_1_src2Ready;
|
|
wire [5:0] _rename_io_out_1_prd;
|
|
wire [5:0] _rename_io_out_1_robIdx;
|
|
wire _rename_io_canAccept;
|
|
wire _rename_io_commitValid_0;
|
|
wire _rename_io_commitValid_1;
|
|
wire [5:0] _rename_io_commitEntry_0_robIdx;
|
|
wire [4:0] _rename_io_commitEntry_0_archDest;
|
|
wire _rename_io_commitEntry_0_writesDest;
|
|
wire [3:0] _rename_io_commitEntry_0_opClass;
|
|
wire [5:0] _rename_io_commitEntry_0_dest;
|
|
wire [5:0] _rename_io_commitEntry_0_oldDest;
|
|
wire _rename_io_commitEntry_0_exception;
|
|
wire [63:0] _rename_io_commitEntry_0_exceptionCause;
|
|
wire [63:0] _rename_io_commitEntry_0_badAddr;
|
|
wire _rename_io_commitEntry_0_branchMispredict;
|
|
wire [63:0] _rename_io_commitEntry_0_redirectPc;
|
|
wire _rename_io_commitEntry_0_csrValid;
|
|
wire [11:0] _rename_io_commitEntry_0_csrAddr;
|
|
wire [2:0] _rename_io_commitEntry_0_csrCmd;
|
|
wire [63:0] _rename_io_commitEntry_0_csrRs1;
|
|
wire [4:0] _rename_io_commitEntry_0_csrZimm;
|
|
wire _rename_io_commitEntry_0_fenceI;
|
|
wire [5:0] _rename_io_commitEntry_1_robIdx;
|
|
wire [4:0] _rename_io_commitEntry_1_archDest;
|
|
wire _rename_io_commitEntry_1_writesDest;
|
|
wire [3:0] _rename_io_commitEntry_1_opClass;
|
|
wire [5:0] _rename_io_commitEntry_1_dest;
|
|
wire [5:0] _rename_io_commitEntry_1_oldDest;
|
|
wire _rename_io_commitEntry_1_exception;
|
|
wire [63:0] _rename_io_commitEntry_1_exceptionCause;
|
|
wire [63:0] _rename_io_commitEntry_1_badAddr;
|
|
wire _rename_io_commitEntry_1_branchMispredict;
|
|
wire [63:0] _rename_io_commitEntry_1_redirectPc;
|
|
wire _rename_io_commitEntry_1_csrValid;
|
|
wire [11:0] _rename_io_commitEntry_1_csrAddr;
|
|
wire [2:0] _rename_io_commitEntry_1_csrCmd;
|
|
wire [63:0] _rename_io_commitEntry_1_csrRs1;
|
|
wire [4:0] _rename_io_commitEntry_1_csrZimm;
|
|
wire _rename_io_commitEntry_1_fenceI;
|
|
reg wakeupReg_0_valid;
|
|
reg [5:0] wakeupReg_0_phys;
|
|
reg wakeupReg_1_valid;
|
|
reg [5:0] wakeupReg_1_phys;
|
|
reg loadPending;
|
|
reg [5:0] loadPendingRob;
|
|
reg [5:0] loadPendingPhys;
|
|
reg [3:0] loadPendingLq;
|
|
reg forwardPending;
|
|
reg [5:0] forwardPendingRob;
|
|
reg [5:0] forwardPendingPhys;
|
|
reg [3:0] forwardPendingLq;
|
|
reg [63:0] forwardPendingData;
|
|
wire loadRespValid = _lsu_io_respValid & loadPending | forwardPending;
|
|
wire isMem0 = _issue_io_out_0_decoded_isLoad | _issue_io_out_0_decoded_isStore;
|
|
wire memIssue_0 = _issue_io_outValid_0 & isMem0;
|
|
wire isMem1 = _issue_io_out_1_decoded_isLoad | _issue_io_out_1_decoded_isStore;
|
|
wire csrReadReq_0 =
|
|
_issue_io_outValid_0 & _issue_io_out_0_decoded_isSystem
|
|
& (|_issue_io_out_0_decoded_funct3);
|
|
wire _amoBlocked1_T = _sq_io_olderStoreValid | _sq_io_drainValid;
|
|
wire _memReady1_T_1 = _lsu_io_reqReady & ~loadPending & ~forwardPending;
|
|
wire issue_io_outReady_0 =
|
|
(~isMem0 | _memReady1_T_1 & ~(_issue_io_out_0_decoded_isAmo & _amoBlocked1_T)
|
|
& ~(_issue_io_out_0_decoded_isLoad & _sq_io_forwardBlock)) & ~loadPending
|
|
& ~forwardPending;
|
|
wire issue_io_outReady_1 =
|
|
(~isMem1 | _memReady1_T_1 & ~memIssue_0
|
|
& ~(_issue_io_out_1_decoded_isAmo & _amoBlocked1_T)
|
|
& ~(_issue_io_out_1_decoded_isLoad & _sq_io_forwardBlock))
|
|
& ~(csrReadReq_0 & _issue_io_outValid_1 & _issue_io_out_1_decoded_isSystem
|
|
& (|_issue_io_out_1_decoded_funct3));
|
|
wire issueFire_0 = _issue_io_outValid_0 & issue_io_outReady_0;
|
|
wire issueFire_1 = _issue_io_outValid_1 & issue_io_outReady_1;
|
|
wire [63:0] memSrc2 = memIssue_0 ? _prf_io_rdata_1 : _prf_io_rdata_3;
|
|
wire [2:0] sq_io_size =
|
|
memIssue_0 ? _issue_io_out_0_decoded_memWidth : _issue_io_out_1_decoded_memWidth;
|
|
wire _GEN =
|
|
memIssue_0 ? _issue_io_out_0_decoded_memSigned : _issue_io_out_1_decoded_memSigned;
|
|
wire _GEN_0 =
|
|
memIssue_0 ? _issue_io_out_0_decoded_isStore : _issue_io_out_1_decoded_isStore;
|
|
wire loadReq_isAmo =
|
|
memIssue_0 ? _issue_io_out_0_decoded_isAmo : _issue_io_out_1_decoded_isAmo;
|
|
wire [5:0] sq_io_enqRobIdx =
|
|
memIssue_0 ? _issue_io_out_0_robIdx : _issue_io_out_1_robIdx;
|
|
wire [63:0] _memAddr_T_2 =
|
|
(memIssue_0 ? _prf_io_rdata_0 : _prf_io_rdata_2)
|
|
+ (loadReq_isAmo
|
|
? 64'h0
|
|
: _GEN_0
|
|
? (memIssue_0 ? _issue_io_out_0_decoded_immS : _issue_io_out_1_decoded_immS)
|
|
: memIssue_0 ? _issue_io_out_0_decoded_immI : _issue_io_out_1_decoded_immI);
|
|
wire _storeEnq_T = memIssue_0 | ~memIssue_0 & _issue_io_outValid_1 & isMem1;
|
|
wire _GEN_1 = memIssue_0 ? issue_io_outReady_0 : issue_io_outReady_1;
|
|
wire loadEnq =
|
|
_storeEnq_T
|
|
& (memIssue_0 ? _issue_io_out_0_decoded_isLoad : _issue_io_out_1_decoded_isLoad)
|
|
& _GEN_1;
|
|
wire storeEnq = _storeEnq_T & _GEN_0 & _GEN_1;
|
|
wire sqForwardValid = _sq_io_forwardValid & ~loadReq_isAmo;
|
|
wire lsuLoadReq = loadEnq & ~sqForwardValid;
|
|
wire _commitCsr0_T = _commit_io_commitReady_0 & _rename_io_commitValid_0;
|
|
wire _commitCsr1_T = _commit_io_commitReady_1 & _rename_io_commitValid_1;
|
|
wire commitStore0 = _commitCsr0_T & _rename_io_commitEntry_0_opClass == 4'h4;
|
|
wire commitCsr0 = _commitCsr0_T & _rename_io_commitEntry_0_csrValid;
|
|
wire _completeMispredict_0_T =
|
|
_issue_io_out_0_decoded_isJal | _issue_io_out_0_decoded_isJalr;
|
|
wire [63:0] _branchRedirect_T_1 = _issue_io_out_0_decoded_pc + 64'h4;
|
|
wire [63:0] _jalrTarget_T = _prf_io_rdata_0 + _issue_io_out_0_decoded_immI;
|
|
wire _completeMispredict_0_T_3 =
|
|
_issue_io_out_0_decoded_isBranch & _exec_0_io_branchTaken;
|
|
wire isEcall = _issue_io_out_0_decoded_inst == 32'h73;
|
|
wire isEbreak = _issue_io_out_0_decoded_inst == 32'h100073;
|
|
wire isMret = _issue_io_out_0_decoded_inst == 32'h30200073;
|
|
wire _completeCause_0_T = loadRespValid & ~forwardPending & _lsu_io_pageFault;
|
|
wire _completeMispredict_1_T =
|
|
_issue_io_out_1_decoded_isJal | _issue_io_out_1_decoded_isJalr;
|
|
wire [63:0] _branchRedirect_T_6 = _issue_io_out_1_decoded_pc + 64'h4;
|
|
wire [63:0] _jalrTarget_T_3 = _prf_io_rdata_2 + _issue_io_out_1_decoded_immI;
|
|
wire _completeMispredict_1_T_3 =
|
|
_issue_io_out_1_decoded_isBranch & _exec_1_io_branchTaken;
|
|
wire isEcall_1 = _issue_io_out_1_decoded_inst == 32'h73;
|
|
wire isEbreak_1 = _issue_io_out_1_decoded_inst == 32'h100073;
|
|
wire isMret_1 = _issue_io_out_1_decoded_inst == 32'h30200073;
|
|
always @(posedge clock) begin
|
|
automatic logic [5:0] _GEN_2;
|
|
automatic logic forwardLoad;
|
|
automatic logic _GEN_3;
|
|
automatic logic _GEN_4;
|
|
_GEN_2 = memIssue_0 ? _issue_io_out_0_prd : _issue_io_out_1_prd;
|
|
forwardLoad = loadEnq & sqForwardValid;
|
|
_GEN_3 = loadEnq & ~sqForwardValid;
|
|
_GEN_4 = forwardLoad | forwardPending;
|
|
if (reset) begin
|
|
wakeupReg_0_valid <= 1'h0;
|
|
wakeupReg_0_phys <= 6'h0;
|
|
wakeupReg_1_valid <= 1'h0;
|
|
wakeupReg_1_phys <= 6'h0;
|
|
loadPending <= 1'h0;
|
|
forwardPending <= 1'h0;
|
|
end
|
|
else begin
|
|
wakeupReg_0_valid <= _wb_0_io_wen;
|
|
wakeupReg_0_phys <= _wb_0_io_waddr;
|
|
wakeupReg_1_valid <= _wb_1_io_wen;
|
|
wakeupReg_1_phys <= _wb_1_io_waddr;
|
|
loadPending <=
|
|
~_commit_io_flush
|
|
& (_GEN_4 ? loadPending : _GEN_3 | ~loadRespValid & loadPending);
|
|
forwardPending <= ~_commit_io_flush & forwardLoad;
|
|
end
|
|
if (_commit_io_flush | _GEN_4 | ~_GEN_3) begin
|
|
end
|
|
else begin
|
|
loadPendingRob <= sq_io_enqRobIdx;
|
|
loadPendingPhys <= _GEN_2;
|
|
loadPendingLq <= _lq_io_enqIdx;
|
|
end
|
|
if (_commit_io_flush | ~forwardLoad) begin
|
|
end
|
|
else begin
|
|
forwardPendingRob <= sq_io_enqRobIdx;
|
|
forwardPendingPhys <= _GEN_2;
|
|
forwardPendingLq <= _lq_io_enqIdx;
|
|
forwardPendingData <=
|
|
sq_io_size == 3'h3
|
|
? _sq_io_forwardData
|
|
: sq_io_size == 3'h2
|
|
? {_GEN ? {32{_sq_io_forwardData[31]}} : 32'h0, _sq_io_forwardData[31:0]}
|
|
: sq_io_size == 3'h1
|
|
? {_GEN ? {48{_sq_io_forwardData[15]}} : 48'h0,
|
|
_sq_io_forwardData[15:0]}
|
|
: sq_io_size == 3'h0
|
|
? {_GEN ? {56{_sq_io_forwardData[7]}} : 56'h0,
|
|
_sq_io_forwardData[7:0]}
|
|
: _sq_io_forwardData;
|
|
end
|
|
end // always @(posedge)
|
|
RenameStage rename (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_inValid_0 (io_decodeValid_0 & _issue_io_inReady_0),
|
|
.io_inValid_1 (io_decodeValid_1 & _issue_io_inReady_1),
|
|
.io_in_0_pc (io_decode_0_pc),
|
|
.io_in_0_inst (io_decode_0_inst),
|
|
.io_in_0_rs1 (io_decode_0_rs1),
|
|
.io_in_0_rs2 (io_decode_0_rs2),
|
|
.io_in_0_rd (io_decode_0_rd),
|
|
.io_in_0_funct3 (io_decode_0_funct3),
|
|
.io_in_0_immI (io_decode_0_immI),
|
|
.io_in_0_immS (io_decode_0_immS),
|
|
.io_in_0_immB (io_decode_0_immB),
|
|
.io_in_0_immU (io_decode_0_immU),
|
|
.io_in_0_immJ (io_decode_0_immJ),
|
|
.io_in_0_opClass (io_decode_0_opClass),
|
|
.io_in_0_aluFn (io_decode_0_aluFn),
|
|
.io_in_0_memWidth (io_decode_0_memWidth),
|
|
.io_in_0_memSigned (io_decode_0_memSigned),
|
|
.io_in_0_isLoad (io_decode_0_isLoad),
|
|
.io_in_0_isStore (io_decode_0_isStore),
|
|
.io_in_0_isBranch (io_decode_0_isBranch),
|
|
.io_in_0_isJal (io_decode_0_isJal),
|
|
.io_in_0_isJalr (io_decode_0_isJalr),
|
|
.io_in_0_isLui (io_decode_0_isLui),
|
|
.io_in_0_isAuipc (io_decode_0_isAuipc),
|
|
.io_in_0_isOpImm (io_decode_0_isOpImm),
|
|
.io_in_0_isWord (io_decode_0_isWord),
|
|
.io_in_0_isSystem (io_decode_0_isSystem),
|
|
.io_in_0_isFenceI (io_decode_0_isFenceI),
|
|
.io_in_0_isAmo (io_decode_0_isAmo),
|
|
.io_in_0_amoOp (io_decode_0_amoOp),
|
|
.io_in_0_writesRd (io_decode_0_writesRd),
|
|
.io_in_0_illegal (io_decode_0_illegal),
|
|
.io_in_1_pc (io_decode_1_pc),
|
|
.io_in_1_inst (io_decode_1_inst),
|
|
.io_in_1_rs1 (io_decode_1_rs1),
|
|
.io_in_1_rs2 (io_decode_1_rs2),
|
|
.io_in_1_rd (io_decode_1_rd),
|
|
.io_in_1_funct3 (io_decode_1_funct3),
|
|
.io_in_1_immI (io_decode_1_immI),
|
|
.io_in_1_immS (io_decode_1_immS),
|
|
.io_in_1_immB (io_decode_1_immB),
|
|
.io_in_1_immU (io_decode_1_immU),
|
|
.io_in_1_immJ (io_decode_1_immJ),
|
|
.io_in_1_opClass (io_decode_1_opClass),
|
|
.io_in_1_aluFn (io_decode_1_aluFn),
|
|
.io_in_1_memWidth (io_decode_1_memWidth),
|
|
.io_in_1_memSigned (io_decode_1_memSigned),
|
|
.io_in_1_isLoad (io_decode_1_isLoad),
|
|
.io_in_1_isStore (io_decode_1_isStore),
|
|
.io_in_1_isBranch (io_decode_1_isBranch),
|
|
.io_in_1_isJal (io_decode_1_isJal),
|
|
.io_in_1_isJalr (io_decode_1_isJalr),
|
|
.io_in_1_isLui (io_decode_1_isLui),
|
|
.io_in_1_isAuipc (io_decode_1_isAuipc),
|
|
.io_in_1_isOpImm (io_decode_1_isOpImm),
|
|
.io_in_1_isWord (io_decode_1_isWord),
|
|
.io_in_1_isSystem (io_decode_1_isSystem),
|
|
.io_in_1_isFenceI (io_decode_1_isFenceI),
|
|
.io_in_1_isAmo (io_decode_1_isAmo),
|
|
.io_in_1_amoOp (io_decode_1_amoOp),
|
|
.io_in_1_writesRd (io_decode_1_writesRd),
|
|
.io_in_1_illegal (io_decode_1_illegal),
|
|
.io_outValid_0 (_rename_io_outValid_0),
|
|
.io_outValid_1 (_rename_io_outValid_1),
|
|
.io_out_0_decoded_pc (_rename_io_out_0_decoded_pc),
|
|
.io_out_0_decoded_inst (_rename_io_out_0_decoded_inst),
|
|
.io_out_0_decoded_rs1 (_rename_io_out_0_decoded_rs1),
|
|
.io_out_0_decoded_rs2 (_rename_io_out_0_decoded_rs2),
|
|
.io_out_0_decoded_funct3 (_rename_io_out_0_decoded_funct3),
|
|
.io_out_0_decoded_immI (_rename_io_out_0_decoded_immI),
|
|
.io_out_0_decoded_immS (_rename_io_out_0_decoded_immS),
|
|
.io_out_0_decoded_immB (_rename_io_out_0_decoded_immB),
|
|
.io_out_0_decoded_immU (_rename_io_out_0_decoded_immU),
|
|
.io_out_0_decoded_immJ (_rename_io_out_0_decoded_immJ),
|
|
.io_out_0_decoded_aluFn (_rename_io_out_0_decoded_aluFn),
|
|
.io_out_0_decoded_memWidth (_rename_io_out_0_decoded_memWidth),
|
|
.io_out_0_decoded_memSigned (_rename_io_out_0_decoded_memSigned),
|
|
.io_out_0_decoded_isLoad (_rename_io_out_0_decoded_isLoad),
|
|
.io_out_0_decoded_isStore (_rename_io_out_0_decoded_isStore),
|
|
.io_out_0_decoded_isBranch (_rename_io_out_0_decoded_isBranch),
|
|
.io_out_0_decoded_isJal (_rename_io_out_0_decoded_isJal),
|
|
.io_out_0_decoded_isJalr (_rename_io_out_0_decoded_isJalr),
|
|
.io_out_0_decoded_isLui (_rename_io_out_0_decoded_isLui),
|
|
.io_out_0_decoded_isAuipc (_rename_io_out_0_decoded_isAuipc),
|
|
.io_out_0_decoded_isOpImm (_rename_io_out_0_decoded_isOpImm),
|
|
.io_out_0_decoded_isWord (_rename_io_out_0_decoded_isWord),
|
|
.io_out_0_decoded_isSystem (_rename_io_out_0_decoded_isSystem),
|
|
.io_out_0_decoded_isFenceI (_rename_io_out_0_decoded_isFenceI),
|
|
.io_out_0_decoded_isAmo (_rename_io_out_0_decoded_isAmo),
|
|
.io_out_0_decoded_amoOp (_rename_io_out_0_decoded_amoOp),
|
|
.io_out_0_decoded_writesRd (_rename_io_out_0_decoded_writesRd),
|
|
.io_out_0_decoded_illegal (_rename_io_out_0_decoded_illegal),
|
|
.io_out_0_prs1 (_rename_io_out_0_prs1),
|
|
.io_out_0_prs2 (_rename_io_out_0_prs2),
|
|
.io_out_0_src1Ready (_rename_io_out_0_src1Ready),
|
|
.io_out_0_src2Ready (_rename_io_out_0_src2Ready),
|
|
.io_out_0_prd (_rename_io_out_0_prd),
|
|
.io_out_0_robIdx (_rename_io_out_0_robIdx),
|
|
.io_out_1_decoded_pc (_rename_io_out_1_decoded_pc),
|
|
.io_out_1_decoded_inst (_rename_io_out_1_decoded_inst),
|
|
.io_out_1_decoded_rs1 (_rename_io_out_1_decoded_rs1),
|
|
.io_out_1_decoded_rs2 (_rename_io_out_1_decoded_rs2),
|
|
.io_out_1_decoded_funct3 (_rename_io_out_1_decoded_funct3),
|
|
.io_out_1_decoded_immI (_rename_io_out_1_decoded_immI),
|
|
.io_out_1_decoded_immS (_rename_io_out_1_decoded_immS),
|
|
.io_out_1_decoded_immB (_rename_io_out_1_decoded_immB),
|
|
.io_out_1_decoded_immU (_rename_io_out_1_decoded_immU),
|
|
.io_out_1_decoded_immJ (_rename_io_out_1_decoded_immJ),
|
|
.io_out_1_decoded_aluFn (_rename_io_out_1_decoded_aluFn),
|
|
.io_out_1_decoded_memWidth (_rename_io_out_1_decoded_memWidth),
|
|
.io_out_1_decoded_memSigned (_rename_io_out_1_decoded_memSigned),
|
|
.io_out_1_decoded_isLoad (_rename_io_out_1_decoded_isLoad),
|
|
.io_out_1_decoded_isStore (_rename_io_out_1_decoded_isStore),
|
|
.io_out_1_decoded_isBranch (_rename_io_out_1_decoded_isBranch),
|
|
.io_out_1_decoded_isJal (_rename_io_out_1_decoded_isJal),
|
|
.io_out_1_decoded_isJalr (_rename_io_out_1_decoded_isJalr),
|
|
.io_out_1_decoded_isLui (_rename_io_out_1_decoded_isLui),
|
|
.io_out_1_decoded_isAuipc (_rename_io_out_1_decoded_isAuipc),
|
|
.io_out_1_decoded_isOpImm (_rename_io_out_1_decoded_isOpImm),
|
|
.io_out_1_decoded_isWord (_rename_io_out_1_decoded_isWord),
|
|
.io_out_1_decoded_isSystem (_rename_io_out_1_decoded_isSystem),
|
|
.io_out_1_decoded_isFenceI (_rename_io_out_1_decoded_isFenceI),
|
|
.io_out_1_decoded_isAmo (_rename_io_out_1_decoded_isAmo),
|
|
.io_out_1_decoded_amoOp (_rename_io_out_1_decoded_amoOp),
|
|
.io_out_1_decoded_writesRd (_rename_io_out_1_decoded_writesRd),
|
|
.io_out_1_decoded_illegal (_rename_io_out_1_decoded_illegal),
|
|
.io_out_1_prs1 (_rename_io_out_1_prs1),
|
|
.io_out_1_prs2 (_rename_io_out_1_prs2),
|
|
.io_out_1_src1Ready (_rename_io_out_1_src1Ready),
|
|
.io_out_1_src2Ready (_rename_io_out_1_src2Ready),
|
|
.io_out_1_prd (_rename_io_out_1_prd),
|
|
.io_out_1_robIdx (_rename_io_out_1_robIdx),
|
|
.io_canAccept (_rename_io_canAccept),
|
|
.io_wbValid_0 (_wb_0_io_wen),
|
|
.io_wbValid_1 (_wb_1_io_wen),
|
|
.io_wbPhys_0 (_wb_0_io_waddr),
|
|
.io_wbPhys_1 (_wb_1_io_waddr),
|
|
.io_completeValid_0
|
|
(issueFire_0 & ~_issue_io_out_0_decoded_isLoad | loadRespValid),
|
|
.io_completeValid_1 (issueFire_1 & ~_issue_io_out_1_decoded_isLoad),
|
|
.io_completeIdx_0
|
|
(loadRespValid
|
|
? (forwardPending ? forwardPendingRob : loadPendingRob)
|
|
: _issue_io_out_0_robIdx),
|
|
.io_completeIdx_1 (_issue_io_out_1_robIdx),
|
|
.io_completeException_0
|
|
(issueFire_0
|
|
& (_issue_io_out_0_decoded_illegal | isEcall | isEbreak | _lq_io_violation)
|
|
| _completeCause_0_T),
|
|
.io_completeException_1
|
|
(issueFire_1
|
|
& (_issue_io_out_1_decoded_illegal | isEcall_1 | isEbreak_1 | _lq_io_violation)),
|
|
.io_completeCause_0
|
|
({60'h0,
|
|
_completeCause_0_T
|
|
? 4'hD
|
|
: issueFire_0 & isEbreak
|
|
? 4'h3
|
|
: issueFire_0 & isEcall
|
|
? 4'hB
|
|
: {2'h0, issueFire_0 & _issue_io_out_0_decoded_illegal, 1'h0}}),
|
|
.io_completeCause_1
|
|
({60'h0,
|
|
issueFire_1 & isEbreak_1
|
|
? 4'h3
|
|
: issueFire_1 & isEcall_1
|
|
? 4'hB
|
|
: {2'h0, issueFire_1 & _issue_io_out_1_decoded_illegal, 1'h0}}),
|
|
.io_completeBadAddr_0 (_issue_io_out_0_decoded_pc),
|
|
.io_completeBadAddr_1 (_issue_io_out_1_decoded_pc),
|
|
.io_completeMispredict_0
|
|
(issueFire_0
|
|
& (_completeMispredict_0_T | isMret | _issue_io_out_0_decoded_isFenceI
|
|
| _completeMispredict_0_T_3)),
|
|
.io_completeMispredict_1
|
|
(issueFire_1
|
|
& (_completeMispredict_1_T | isMret_1 | _issue_io_out_1_decoded_isFenceI
|
|
| _completeMispredict_1_T_3)),
|
|
.io_completeRedirectPc_0
|
|
(isEcall | isEbreak
|
|
? _csr_io_mtvec
|
|
: isMret
|
|
? _csr_io_mepc
|
|
: _issue_io_out_0_decoded_isJal
|
|
? _issue_io_out_0_decoded_pc + _issue_io_out_0_decoded_immJ
|
|
: _issue_io_out_0_decoded_isJalr
|
|
? {_jalrTarget_T[63:1], 1'h0}
|
|
: _completeMispredict_0_T_3
|
|
? _issue_io_out_0_decoded_pc + _issue_io_out_0_decoded_immB
|
|
: _branchRedirect_T_1),
|
|
.io_completeRedirectPc_1
|
|
(isEcall_1 | isEbreak_1
|
|
? _csr_io_mtvec
|
|
: isMret_1
|
|
? _csr_io_mepc
|
|
: _issue_io_out_1_decoded_isJal
|
|
? _issue_io_out_1_decoded_pc + _issue_io_out_1_decoded_immJ
|
|
: _issue_io_out_1_decoded_isJalr
|
|
? {_jalrTarget_T_3[63:1], 1'h0}
|
|
: _completeMispredict_1_T_3
|
|
? _issue_io_out_1_decoded_pc + _issue_io_out_1_decoded_immB
|
|
: _branchRedirect_T_6),
|
|
.io_completeCsrValid_0
|
|
(issueFire_0 & _issue_io_out_0_decoded_isSystem & (|_issue_io_out_0_decoded_funct3)
|
|
& ~(_issue_io_out_0_decoded_funct3[1] & _issue_io_out_0_decoded_rs1 == 5'h0)),
|
|
.io_completeCsrValid_1
|
|
(issueFire_1 & _issue_io_out_1_decoded_isSystem & (|_issue_io_out_1_decoded_funct3)
|
|
& ~(_issue_io_out_1_decoded_funct3[1] & _issue_io_out_1_decoded_rs1 == 5'h0)),
|
|
.io_completeCsrAddr_0 (_issue_io_out_0_decoded_inst[31:20]),
|
|
.io_completeCsrAddr_1 (_issue_io_out_1_decoded_inst[31:20]),
|
|
.io_completeCsrCmd_0 (_issue_io_out_0_decoded_funct3),
|
|
.io_completeCsrCmd_1 (_issue_io_out_1_decoded_funct3),
|
|
.io_completeCsrRs1_0 (_prf_io_rdata_0),
|
|
.io_completeCsrRs1_1 (_prf_io_rdata_2),
|
|
.io_completeCsrZimm_0 (_issue_io_out_0_decoded_rs1),
|
|
.io_completeCsrZimm_1 (_issue_io_out_1_decoded_rs1),
|
|
.io_commitReady_0 (_commit_io_commitReady_0),
|
|
.io_commitReady_1 (_commit_io_commitReady_1),
|
|
.io_commitValid_0 (_rename_io_commitValid_0),
|
|
.io_commitValid_1 (_rename_io_commitValid_1),
|
|
.io_commitEntry_0_robIdx (_rename_io_commitEntry_0_robIdx),
|
|
.io_commitEntry_0_archDest (_rename_io_commitEntry_0_archDest),
|
|
.io_commitEntry_0_writesDest (_rename_io_commitEntry_0_writesDest),
|
|
.io_commitEntry_0_opClass (_rename_io_commitEntry_0_opClass),
|
|
.io_commitEntry_0_dest (_rename_io_commitEntry_0_dest),
|
|
.io_commitEntry_0_oldDest (_rename_io_commitEntry_0_oldDest),
|
|
.io_commitEntry_0_exception (_rename_io_commitEntry_0_exception),
|
|
.io_commitEntry_0_exceptionCause (_rename_io_commitEntry_0_exceptionCause),
|
|
.io_commitEntry_0_badAddr (_rename_io_commitEntry_0_badAddr),
|
|
.io_commitEntry_0_branchMispredict (_rename_io_commitEntry_0_branchMispredict),
|
|
.io_commitEntry_0_redirectPc (_rename_io_commitEntry_0_redirectPc),
|
|
.io_commitEntry_0_csrValid (_rename_io_commitEntry_0_csrValid),
|
|
.io_commitEntry_0_csrAddr (_rename_io_commitEntry_0_csrAddr),
|
|
.io_commitEntry_0_csrCmd (_rename_io_commitEntry_0_csrCmd),
|
|
.io_commitEntry_0_csrRs1 (_rename_io_commitEntry_0_csrRs1),
|
|
.io_commitEntry_0_csrZimm (_rename_io_commitEntry_0_csrZimm),
|
|
.io_commitEntry_0_fenceI (_rename_io_commitEntry_0_fenceI),
|
|
.io_commitEntry_1_robIdx (_rename_io_commitEntry_1_robIdx),
|
|
.io_commitEntry_1_archDest (_rename_io_commitEntry_1_archDest),
|
|
.io_commitEntry_1_writesDest (_rename_io_commitEntry_1_writesDest),
|
|
.io_commitEntry_1_opClass (_rename_io_commitEntry_1_opClass),
|
|
.io_commitEntry_1_dest (_rename_io_commitEntry_1_dest),
|
|
.io_commitEntry_1_oldDest (_rename_io_commitEntry_1_oldDest),
|
|
.io_commitEntry_1_exception (_rename_io_commitEntry_1_exception),
|
|
.io_commitEntry_1_exceptionCause (_rename_io_commitEntry_1_exceptionCause),
|
|
.io_commitEntry_1_badAddr (_rename_io_commitEntry_1_badAddr),
|
|
.io_commitEntry_1_branchMispredict (_rename_io_commitEntry_1_branchMispredict),
|
|
.io_commitEntry_1_redirectPc (_rename_io_commitEntry_1_redirectPc),
|
|
.io_commitEntry_1_csrValid (_rename_io_commitEntry_1_csrValid),
|
|
.io_commitEntry_1_csrAddr (_rename_io_commitEntry_1_csrAddr),
|
|
.io_commitEntry_1_csrCmd (_rename_io_commitEntry_1_csrCmd),
|
|
.io_commitEntry_1_csrRs1 (_rename_io_commitEntry_1_csrRs1),
|
|
.io_commitEntry_1_csrZimm (_rename_io_commitEntry_1_csrZimm),
|
|
.io_commitEntry_1_fenceI (_rename_io_commitEntry_1_fenceI),
|
|
.io_commitMapValid_0 (_commit_io_commitMapValid_0),
|
|
.io_commitMapValid_1 (_commit_io_commitMapValid_1),
|
|
.io_commitArch_0 (_commit_io_commitArch_0),
|
|
.io_commitArch_1 (_commit_io_commitArch_1),
|
|
.io_commitPhys_0 (_commit_io_commitPhys_0),
|
|
.io_commitPhys_1 (_commit_io_commitPhys_1),
|
|
.io_commitFreeOld_0 (_commit_io_freeOldPhys_0),
|
|
.io_commitFreeOld_1 (_commit_io_freeOldPhys_1),
|
|
.io_commitOldPhys_0 (_commit_io_oldPhys_0),
|
|
.io_commitOldPhys_1 (_commit_io_oldPhys_1),
|
|
.io_flush (_commit_io_flush)
|
|
);
|
|
IssueStage issue (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_inValid_0 (_rename_io_outValid_0),
|
|
.io_inValid_1 (_rename_io_outValid_1),
|
|
.io_in_0_decoded_pc (_rename_io_out_0_decoded_pc),
|
|
.io_in_0_decoded_inst (_rename_io_out_0_decoded_inst),
|
|
.io_in_0_decoded_rs1 (_rename_io_out_0_decoded_rs1),
|
|
.io_in_0_decoded_rs2 (_rename_io_out_0_decoded_rs2),
|
|
.io_in_0_decoded_funct3 (_rename_io_out_0_decoded_funct3),
|
|
.io_in_0_decoded_immI (_rename_io_out_0_decoded_immI),
|
|
.io_in_0_decoded_immS (_rename_io_out_0_decoded_immS),
|
|
.io_in_0_decoded_immB (_rename_io_out_0_decoded_immB),
|
|
.io_in_0_decoded_immU (_rename_io_out_0_decoded_immU),
|
|
.io_in_0_decoded_immJ (_rename_io_out_0_decoded_immJ),
|
|
.io_in_0_decoded_aluFn (_rename_io_out_0_decoded_aluFn),
|
|
.io_in_0_decoded_memWidth (_rename_io_out_0_decoded_memWidth),
|
|
.io_in_0_decoded_memSigned (_rename_io_out_0_decoded_memSigned),
|
|
.io_in_0_decoded_isLoad (_rename_io_out_0_decoded_isLoad),
|
|
.io_in_0_decoded_isStore (_rename_io_out_0_decoded_isStore),
|
|
.io_in_0_decoded_isBranch (_rename_io_out_0_decoded_isBranch),
|
|
.io_in_0_decoded_isJal (_rename_io_out_0_decoded_isJal),
|
|
.io_in_0_decoded_isJalr (_rename_io_out_0_decoded_isJalr),
|
|
.io_in_0_decoded_isLui (_rename_io_out_0_decoded_isLui),
|
|
.io_in_0_decoded_isAuipc (_rename_io_out_0_decoded_isAuipc),
|
|
.io_in_0_decoded_isOpImm (_rename_io_out_0_decoded_isOpImm),
|
|
.io_in_0_decoded_isWord (_rename_io_out_0_decoded_isWord),
|
|
.io_in_0_decoded_isSystem (_rename_io_out_0_decoded_isSystem),
|
|
.io_in_0_decoded_isFenceI (_rename_io_out_0_decoded_isFenceI),
|
|
.io_in_0_decoded_isAmo (_rename_io_out_0_decoded_isAmo),
|
|
.io_in_0_decoded_amoOp (_rename_io_out_0_decoded_amoOp),
|
|
.io_in_0_decoded_writesRd (_rename_io_out_0_decoded_writesRd),
|
|
.io_in_0_decoded_illegal (_rename_io_out_0_decoded_illegal),
|
|
.io_in_0_prs1 (_rename_io_out_0_prs1),
|
|
.io_in_0_prs2 (_rename_io_out_0_prs2),
|
|
.io_in_0_src1Ready (_rename_io_out_0_src1Ready),
|
|
.io_in_0_src2Ready (_rename_io_out_0_src2Ready),
|
|
.io_in_0_prd (_rename_io_out_0_prd),
|
|
.io_in_0_robIdx (_rename_io_out_0_robIdx),
|
|
.io_in_1_decoded_pc (_rename_io_out_1_decoded_pc),
|
|
.io_in_1_decoded_inst (_rename_io_out_1_decoded_inst),
|
|
.io_in_1_decoded_rs1 (_rename_io_out_1_decoded_rs1),
|
|
.io_in_1_decoded_rs2 (_rename_io_out_1_decoded_rs2),
|
|
.io_in_1_decoded_funct3 (_rename_io_out_1_decoded_funct3),
|
|
.io_in_1_decoded_immI (_rename_io_out_1_decoded_immI),
|
|
.io_in_1_decoded_immS (_rename_io_out_1_decoded_immS),
|
|
.io_in_1_decoded_immB (_rename_io_out_1_decoded_immB),
|
|
.io_in_1_decoded_immU (_rename_io_out_1_decoded_immU),
|
|
.io_in_1_decoded_immJ (_rename_io_out_1_decoded_immJ),
|
|
.io_in_1_decoded_aluFn (_rename_io_out_1_decoded_aluFn),
|
|
.io_in_1_decoded_memWidth (_rename_io_out_1_decoded_memWidth),
|
|
.io_in_1_decoded_memSigned (_rename_io_out_1_decoded_memSigned),
|
|
.io_in_1_decoded_isLoad (_rename_io_out_1_decoded_isLoad),
|
|
.io_in_1_decoded_isStore (_rename_io_out_1_decoded_isStore),
|
|
.io_in_1_decoded_isBranch (_rename_io_out_1_decoded_isBranch),
|
|
.io_in_1_decoded_isJal (_rename_io_out_1_decoded_isJal),
|
|
.io_in_1_decoded_isJalr (_rename_io_out_1_decoded_isJalr),
|
|
.io_in_1_decoded_isLui (_rename_io_out_1_decoded_isLui),
|
|
.io_in_1_decoded_isAuipc (_rename_io_out_1_decoded_isAuipc),
|
|
.io_in_1_decoded_isOpImm (_rename_io_out_1_decoded_isOpImm),
|
|
.io_in_1_decoded_isWord (_rename_io_out_1_decoded_isWord),
|
|
.io_in_1_decoded_isSystem (_rename_io_out_1_decoded_isSystem),
|
|
.io_in_1_decoded_isFenceI (_rename_io_out_1_decoded_isFenceI),
|
|
.io_in_1_decoded_isAmo (_rename_io_out_1_decoded_isAmo),
|
|
.io_in_1_decoded_amoOp (_rename_io_out_1_decoded_amoOp),
|
|
.io_in_1_decoded_writesRd (_rename_io_out_1_decoded_writesRd),
|
|
.io_in_1_decoded_illegal (_rename_io_out_1_decoded_illegal),
|
|
.io_in_1_prs1 (_rename_io_out_1_prs1),
|
|
.io_in_1_prs2 (_rename_io_out_1_prs2),
|
|
.io_in_1_src1Ready (_rename_io_out_1_src1Ready),
|
|
.io_in_1_src2Ready (_rename_io_out_1_src2Ready),
|
|
.io_in_1_prd (_rename_io_out_1_prd),
|
|
.io_in_1_robIdx (_rename_io_out_1_robIdx),
|
|
.io_inReady_0 (_issue_io_inReady_0),
|
|
.io_inReady_1 (_issue_io_inReady_1),
|
|
.io_wakeup_0_valid (wakeupReg_0_valid),
|
|
.io_wakeup_0_phys (wakeupReg_0_phys),
|
|
.io_wakeup_1_valid (wakeupReg_1_valid),
|
|
.io_wakeup_1_phys (wakeupReg_1_phys),
|
|
.io_outValid_0 (_issue_io_outValid_0),
|
|
.io_outValid_1 (_issue_io_outValid_1),
|
|
.io_out_0_decoded_pc (_issue_io_out_0_decoded_pc),
|
|
.io_out_0_decoded_inst (_issue_io_out_0_decoded_inst),
|
|
.io_out_0_decoded_rs1 (_issue_io_out_0_decoded_rs1),
|
|
.io_out_0_decoded_funct3 (_issue_io_out_0_decoded_funct3),
|
|
.io_out_0_decoded_immI (_issue_io_out_0_decoded_immI),
|
|
.io_out_0_decoded_immS (_issue_io_out_0_decoded_immS),
|
|
.io_out_0_decoded_immB (_issue_io_out_0_decoded_immB),
|
|
.io_out_0_decoded_immU (_issue_io_out_0_decoded_immU),
|
|
.io_out_0_decoded_immJ (_issue_io_out_0_decoded_immJ),
|
|
.io_out_0_decoded_aluFn (_issue_io_out_0_decoded_aluFn),
|
|
.io_out_0_decoded_memWidth (_issue_io_out_0_decoded_memWidth),
|
|
.io_out_0_decoded_memSigned (_issue_io_out_0_decoded_memSigned),
|
|
.io_out_0_decoded_isLoad (_issue_io_out_0_decoded_isLoad),
|
|
.io_out_0_decoded_isStore (_issue_io_out_0_decoded_isStore),
|
|
.io_out_0_decoded_isBranch (_issue_io_out_0_decoded_isBranch),
|
|
.io_out_0_decoded_isJal (_issue_io_out_0_decoded_isJal),
|
|
.io_out_0_decoded_isJalr (_issue_io_out_0_decoded_isJalr),
|
|
.io_out_0_decoded_isLui (_issue_io_out_0_decoded_isLui),
|
|
.io_out_0_decoded_isAuipc (_issue_io_out_0_decoded_isAuipc),
|
|
.io_out_0_decoded_isOpImm (_issue_io_out_0_decoded_isOpImm),
|
|
.io_out_0_decoded_isWord (_issue_io_out_0_decoded_isWord),
|
|
.io_out_0_decoded_isSystem (_issue_io_out_0_decoded_isSystem),
|
|
.io_out_0_decoded_isFenceI (_issue_io_out_0_decoded_isFenceI),
|
|
.io_out_0_decoded_isAmo (_issue_io_out_0_decoded_isAmo),
|
|
.io_out_0_decoded_amoOp (_issue_io_out_0_decoded_amoOp),
|
|
.io_out_0_decoded_writesRd (_issue_io_out_0_decoded_writesRd),
|
|
.io_out_0_decoded_illegal (_issue_io_out_0_decoded_illegal),
|
|
.io_out_0_prs1 (_issue_io_out_0_prs1),
|
|
.io_out_0_prs2 (_issue_io_out_0_prs2),
|
|
.io_out_0_prd (_issue_io_out_0_prd),
|
|
.io_out_0_robIdx (_issue_io_out_0_robIdx),
|
|
.io_out_1_decoded_pc (_issue_io_out_1_decoded_pc),
|
|
.io_out_1_decoded_inst (_issue_io_out_1_decoded_inst),
|
|
.io_out_1_decoded_rs1 (_issue_io_out_1_decoded_rs1),
|
|
.io_out_1_decoded_funct3 (_issue_io_out_1_decoded_funct3),
|
|
.io_out_1_decoded_immI (_issue_io_out_1_decoded_immI),
|
|
.io_out_1_decoded_immS (_issue_io_out_1_decoded_immS),
|
|
.io_out_1_decoded_immB (_issue_io_out_1_decoded_immB),
|
|
.io_out_1_decoded_immU (_issue_io_out_1_decoded_immU),
|
|
.io_out_1_decoded_immJ (_issue_io_out_1_decoded_immJ),
|
|
.io_out_1_decoded_aluFn (_issue_io_out_1_decoded_aluFn),
|
|
.io_out_1_decoded_memWidth (_issue_io_out_1_decoded_memWidth),
|
|
.io_out_1_decoded_memSigned (_issue_io_out_1_decoded_memSigned),
|
|
.io_out_1_decoded_isLoad (_issue_io_out_1_decoded_isLoad),
|
|
.io_out_1_decoded_isStore (_issue_io_out_1_decoded_isStore),
|
|
.io_out_1_decoded_isBranch (_issue_io_out_1_decoded_isBranch),
|
|
.io_out_1_decoded_isJal (_issue_io_out_1_decoded_isJal),
|
|
.io_out_1_decoded_isJalr (_issue_io_out_1_decoded_isJalr),
|
|
.io_out_1_decoded_isLui (_issue_io_out_1_decoded_isLui),
|
|
.io_out_1_decoded_isAuipc (_issue_io_out_1_decoded_isAuipc),
|
|
.io_out_1_decoded_isOpImm (_issue_io_out_1_decoded_isOpImm),
|
|
.io_out_1_decoded_isWord (_issue_io_out_1_decoded_isWord),
|
|
.io_out_1_decoded_isSystem (_issue_io_out_1_decoded_isSystem),
|
|
.io_out_1_decoded_isFenceI (_issue_io_out_1_decoded_isFenceI),
|
|
.io_out_1_decoded_isAmo (_issue_io_out_1_decoded_isAmo),
|
|
.io_out_1_decoded_amoOp (_issue_io_out_1_decoded_amoOp),
|
|
.io_out_1_decoded_writesRd (_issue_io_out_1_decoded_writesRd),
|
|
.io_out_1_decoded_illegal (_issue_io_out_1_decoded_illegal),
|
|
.io_out_1_prs1 (_issue_io_out_1_prs1),
|
|
.io_out_1_prs2 (_issue_io_out_1_prs2),
|
|
.io_out_1_prd (_issue_io_out_1_prd),
|
|
.io_out_1_robIdx (_issue_io_out_1_robIdx),
|
|
.io_outReady_0 (issue_io_outReady_0),
|
|
.io_outReady_1 (issue_io_outReady_1),
|
|
.io_flush (_commit_io_flush)
|
|
);
|
|
PhysicalRegFile prf (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_raddr_0 (_issue_io_out_0_prs1),
|
|
.io_raddr_1 (_issue_io_out_0_prs2),
|
|
.io_raddr_2 (_issue_io_out_1_prs1),
|
|
.io_raddr_3 (_issue_io_out_1_prs2),
|
|
.io_rdata_0 (_prf_io_rdata_0),
|
|
.io_rdata_1 (_prf_io_rdata_1),
|
|
.io_rdata_2 (_prf_io_rdata_2),
|
|
.io_rdata_3 (_prf_io_rdata_3),
|
|
.io_wen_0 (_wb_0_io_wen),
|
|
.io_wen_1 (_wb_1_io_wen),
|
|
.io_waddr_0 (_wb_0_io_waddr),
|
|
.io_waddr_1 (_wb_1_io_waddr),
|
|
.io_wdata_0 (_wb_0_io_wdata),
|
|
.io_wdata_1 (_wb_1_io_wdata)
|
|
);
|
|
ExecStage exec_0 (
|
|
.io_inValid (issueFire_0),
|
|
.io_in_funct3 (_issue_io_out_0_decoded_funct3),
|
|
.io_in_aluFn (_issue_io_out_0_decoded_aluFn),
|
|
.io_in_isWord (_issue_io_out_0_decoded_isWord),
|
|
.io_src1 (_prf_io_rdata_0),
|
|
.io_src2
|
|
(_issue_io_out_0_decoded_isOpImm | _issue_io_out_0_decoded_isLoad
|
|
| _issue_io_out_0_decoded_isJalr
|
|
? _issue_io_out_0_decoded_immI
|
|
: _prf_io_rdata_1),
|
|
.io_outValid (_exec_0_io_outValid),
|
|
.io_result (_exec_0_io_result),
|
|
.io_branchTaken (_exec_0_io_branchTaken)
|
|
);
|
|
ExecStage exec_1 (
|
|
.io_inValid (issueFire_1),
|
|
.io_in_funct3 (_issue_io_out_1_decoded_funct3),
|
|
.io_in_aluFn (_issue_io_out_1_decoded_aluFn),
|
|
.io_in_isWord (_issue_io_out_1_decoded_isWord),
|
|
.io_src1 (_prf_io_rdata_2),
|
|
.io_src2
|
|
(_issue_io_out_1_decoded_isOpImm | _issue_io_out_1_decoded_isLoad
|
|
| _issue_io_out_1_decoded_isJalr
|
|
? _issue_io_out_1_decoded_immI
|
|
: _prf_io_rdata_3),
|
|
.io_outValid (_exec_1_io_outValid),
|
|
.io_result (_exec_1_io_result),
|
|
.io_branchTaken (_exec_1_io_branchTaken)
|
|
);
|
|
WriteBackStage wb_0 (
|
|
.io_valid
|
|
(_exec_0_io_outValid & _issue_io_out_0_decoded_writesRd
|
|
& ~_issue_io_out_0_decoded_isLoad | loadRespValid),
|
|
.io_physDest
|
|
(loadRespValid
|
|
? (forwardPending ? forwardPendingPhys : loadPendingPhys)
|
|
: _issue_io_out_0_prd),
|
|
.io_data
|
|
(loadRespValid
|
|
? (forwardPending ? forwardPendingData : _lsu_io_respData)
|
|
: _issue_io_out_0_decoded_isLui
|
|
? _issue_io_out_0_decoded_immU
|
|
: _issue_io_out_0_decoded_isAuipc
|
|
? _issue_io_out_0_decoded_pc + _issue_io_out_0_decoded_immU
|
|
: _completeMispredict_0_T
|
|
? _branchRedirect_T_1
|
|
: _issue_io_out_0_decoded_isSystem
|
|
& (|_issue_io_out_0_decoded_funct3)
|
|
? _csr_io_rdata
|
|
: _exec_0_io_result),
|
|
.io_wen (_wb_0_io_wen),
|
|
.io_waddr (_wb_0_io_waddr),
|
|
.io_wdata (_wb_0_io_wdata)
|
|
);
|
|
WriteBackStage wb_1 (
|
|
.io_valid
|
|
(_exec_1_io_outValid & _issue_io_out_1_decoded_writesRd
|
|
& ~_issue_io_out_1_decoded_isLoad),
|
|
.io_physDest (_issue_io_out_1_prd),
|
|
.io_data
|
|
(_issue_io_out_1_decoded_isLui
|
|
? _issue_io_out_1_decoded_immU
|
|
: _issue_io_out_1_decoded_isAuipc
|
|
? _issue_io_out_1_decoded_pc + _issue_io_out_1_decoded_immU
|
|
: _completeMispredict_1_T
|
|
? _branchRedirect_T_6
|
|
: _issue_io_out_1_decoded_isSystem & (|_issue_io_out_1_decoded_funct3)
|
|
? _csr_io_rdata
|
|
: _exec_1_io_result),
|
|
.io_wen (_wb_1_io_wen),
|
|
.io_waddr (_wb_1_io_waddr),
|
|
.io_wdata (_wb_1_io_wdata)
|
|
);
|
|
CommitStage commit (
|
|
.io_robValid_0 (_rename_io_commitValid_0),
|
|
.io_robValid_1 (_rename_io_commitValid_1),
|
|
.io_robEntry_0_archDest (_rename_io_commitEntry_0_archDest),
|
|
.io_robEntry_0_writesDest (_rename_io_commitEntry_0_writesDest),
|
|
.io_robEntry_0_opClass (_rename_io_commitEntry_0_opClass),
|
|
.io_robEntry_0_dest (_rename_io_commitEntry_0_dest),
|
|
.io_robEntry_0_oldDest (_rename_io_commitEntry_0_oldDest),
|
|
.io_robEntry_0_exception (_rename_io_commitEntry_0_exception),
|
|
.io_robEntry_0_exceptionCause (_rename_io_commitEntry_0_exceptionCause),
|
|
.io_robEntry_0_badAddr (_rename_io_commitEntry_0_badAddr),
|
|
.io_robEntry_0_branchMispredict (_rename_io_commitEntry_0_branchMispredict),
|
|
.io_robEntry_0_redirectPc (_rename_io_commitEntry_0_redirectPc),
|
|
.io_robEntry_0_csrValid (_rename_io_commitEntry_0_csrValid),
|
|
.io_robEntry_0_fenceI (_rename_io_commitEntry_0_fenceI),
|
|
.io_robEntry_1_archDest (_rename_io_commitEntry_1_archDest),
|
|
.io_robEntry_1_writesDest (_rename_io_commitEntry_1_writesDest),
|
|
.io_robEntry_1_dest (_rename_io_commitEntry_1_dest),
|
|
.io_robEntry_1_oldDest (_rename_io_commitEntry_1_oldDest),
|
|
.io_robEntry_1_exception (_rename_io_commitEntry_1_exception),
|
|
.io_robEntry_1_exceptionCause (_rename_io_commitEntry_1_exceptionCause),
|
|
.io_robEntry_1_badAddr (_rename_io_commitEntry_1_badAddr),
|
|
.io_robEntry_1_branchMispredict (_rename_io_commitEntry_1_branchMispredict),
|
|
.io_robEntry_1_redirectPc (_rename_io_commitEntry_1_redirectPc),
|
|
.io_robEntry_1_csrValid (_rename_io_commitEntry_1_csrValid),
|
|
.io_robEntry_1_fenceI (_rename_io_commitEntry_1_fenceI),
|
|
.io_commitReady_0 (_commit_io_commitReady_0),
|
|
.io_commitReady_1 (_commit_io_commitReady_1),
|
|
.io_freeOldPhys_0 (_commit_io_freeOldPhys_0),
|
|
.io_freeOldPhys_1 (_commit_io_freeOldPhys_1),
|
|
.io_oldPhys_0 (_commit_io_oldPhys_0),
|
|
.io_oldPhys_1 (_commit_io_oldPhys_1),
|
|
.io_commitMapValid_0 (_commit_io_commitMapValid_0),
|
|
.io_commitMapValid_1 (_commit_io_commitMapValid_1),
|
|
.io_commitArch_0 (_commit_io_commitArch_0),
|
|
.io_commitArch_1 (_commit_io_commitArch_1),
|
|
.io_commitPhys_0 (_commit_io_commitPhys_0),
|
|
.io_commitPhys_1 (_commit_io_commitPhys_1),
|
|
.io_flush (_commit_io_flush),
|
|
.io_redirectPc (_commit_io_redirectPc),
|
|
.io_exception (_commit_io_exception),
|
|
.io_exceptionCause (_commit_io_exceptionCause),
|
|
.io_badAddr (_commit_io_badAddr),
|
|
.io_fenceI (io_invalidateICache)
|
|
);
|
|
LoadQueue lq (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_enqValid (loadEnq),
|
|
.io_enqRobIdx (sq_io_enqRobIdx),
|
|
.io_enqIdx (_lq_io_enqIdx),
|
|
.io_addrValid (loadEnq),
|
|
.io_addrIdx (_lq_io_enqIdx),
|
|
.io_addr (_memAddr_T_2),
|
|
.io_size (sq_io_size),
|
|
.io_complete (loadRespValid),
|
|
.io_completeIdx (forwardPending ? forwardPendingLq : loadPendingLq),
|
|
.io_commitValid_0 (_commitCsr0_T & _rename_io_commitEntry_0_opClass == 4'h3),
|
|
.io_commitValid_1 (_commitCsr1_T & _rename_io_commitEntry_1_opClass == 4'h3),
|
|
.io_commitRobIdx_0 (_rename_io_commitEntry_0_robIdx),
|
|
.io_commitRobIdx_1 (_rename_io_commitEntry_1_robIdx),
|
|
.io_storeAddrValid (storeEnq),
|
|
.io_storeRobIdx (sq_io_enqRobIdx),
|
|
.io_storeAddr (_memAddr_T_2),
|
|
.io_storeSize (sq_io_size),
|
|
.io_violation (_lq_io_violation),
|
|
.io_flush (_commit_io_flush)
|
|
);
|
|
StoreQueue sq (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_enqValid (storeEnq),
|
|
.io_enqRobIdx (sq_io_enqRobIdx),
|
|
.io_enqIdx (_sq_io_enqIdx),
|
|
.io_writeAddr (storeEnq),
|
|
.io_writeData (storeEnq),
|
|
.io_writeIdx (_sq_io_enqIdx),
|
|
.io_addr (_memAddr_T_2),
|
|
.io_data (memSrc2),
|
|
.io_size (sq_io_size),
|
|
.io_loadAddr (_memAddr_T_2),
|
|
.io_loadSize (sq_io_size),
|
|
.io_loadRobIdx (sq_io_enqRobIdx),
|
|
.io_forwardValid (_sq_io_forwardValid),
|
|
.io_forwardData (_sq_io_forwardData),
|
|
.io_forwardBlock (_sq_io_forwardBlock),
|
|
.io_olderStoreValid (_sq_io_olderStoreValid),
|
|
.io_commitValid
|
|
(commitStore0 | _commitCsr1_T & _rename_io_commitEntry_1_opClass == 4'h4),
|
|
.io_commitRobIdx
|
|
(commitStore0 ? _rename_io_commitEntry_0_robIdx : _rename_io_commitEntry_1_robIdx),
|
|
.io_drainValid (_sq_io_drainValid),
|
|
.io_drain_addr (_sq_io_drain_addr),
|
|
.io_drain_data (_sq_io_drain_data),
|
|
.io_drain_size (_sq_io_drain_size),
|
|
.io_drainReady (~lsuLoadReq & _lsu_io_reqReady),
|
|
.io_flush (_commit_io_flush)
|
|
);
|
|
LSU lsu (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_reqValid (lsuLoadReq | _sq_io_drainValid),
|
|
.io_req_addr (lsuLoadReq ? _memAddr_T_2 : _sq_io_drain_addr),
|
|
.io_req_data (lsuLoadReq ? memSrc2 : _sq_io_drain_data),
|
|
.io_req_isStore (~lsuLoadReq),
|
|
.io_req_isSigned (lsuLoadReq & (_GEN | loadReq_isAmo)),
|
|
.io_req_isAmo (lsuLoadReq & loadReq_isAmo),
|
|
.io_req_amoOp
|
|
(lsuLoadReq
|
|
? (memIssue_0 ? _issue_io_out_0_decoded_amoOp : _issue_io_out_1_decoded_amoOp)
|
|
: 5'h0),
|
|
.io_req_size (lsuLoadReq ? sq_io_size : _sq_io_drain_size),
|
|
.io_reqReady (_lsu_io_reqReady),
|
|
.io_satp (_csr_io_satp),
|
|
.io_dmemReqValid (io_dmemReqValid),
|
|
.io_dmemReq_addr (io_dmemReq_addr),
|
|
.io_dmemReq_data (io_dmemReq_data),
|
|
.io_dmemReq_isStore (io_dmemReq_isStore),
|
|
.io_dmemReq_size (io_dmemReq_size),
|
|
.io_dmemRespValid (io_dmemRespValid),
|
|
.io_dmemRespData (io_dmemRespData),
|
|
.io_respValid (_lsu_io_respValid),
|
|
.io_respData (_lsu_io_respData),
|
|
.io_pageFault (_lsu_io_pageFault)
|
|
);
|
|
CSRFile csr (
|
|
.clock (clock),
|
|
.reset (reset),
|
|
.io_cmd_valid (commitCsr0 | _commitCsr1_T & _rename_io_commitEntry_1_csrValid),
|
|
.io_cmd_addr
|
|
(commitCsr0 ? _rename_io_commitEntry_0_csrAddr : _rename_io_commitEntry_1_csrAddr),
|
|
.io_cmd_cmd
|
|
(commitCsr0 ? _rename_io_commitEntry_0_csrCmd : _rename_io_commitEntry_1_csrCmd),
|
|
.io_cmd_rs1
|
|
(commitCsr0 ? _rename_io_commitEntry_0_csrRs1 : _rename_io_commitEntry_1_csrRs1),
|
|
.io_cmd_zimm
|
|
(commitCsr0 ? _rename_io_commitEntry_0_csrZimm : _rename_io_commitEntry_1_csrZimm),
|
|
.io_readAddr
|
|
(csrReadReq_0 & issue_io_outReady_0
|
|
? _issue_io_out_0_decoded_inst[31:20]
|
|
: _issue_io_out_1_decoded_inst[31:20]),
|
|
.io_rdata (_csr_io_rdata),
|
|
.io_trap (_commit_io_flush & _commit_io_exception),
|
|
.io_trapPc (_commit_io_badAddr),
|
|
.io_trapCause (_commit_io_exceptionCause),
|
|
.io_satp (_csr_io_satp),
|
|
.io_mtvec (_csr_io_mtvec),
|
|
.io_mepc (_csr_io_mepc)
|
|
);
|
|
assign io_decodeReady =
|
|
_rename_io_canAccept & (&{_issue_io_inReady_1, _issue_io_inReady_0});
|
|
assign io_flush = _commit_io_flush;
|
|
assign io_redirectPc = _commit_io_exception ? _csr_io_mtvec : _commit_io_redirectPc;
|
|
endmodule
|
|
|