// 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