145 lines
4.9 KiB
Systemverilog
145 lines
4.9 KiB
Systemverilog
// Generated by CIRCT firtool-1.139.0
|
|
module IDStage(
|
|
input io_inValid,
|
|
input [63:0] io_in_pc,
|
|
input [31:0] io_in_inst_0,
|
|
io_in_inst_1,
|
|
input io_in_laneValid_0,
|
|
io_in_laneValid_1,
|
|
output io_outValid_0,
|
|
io_outValid_1,
|
|
output [63:0] io_out_0_pc,
|
|
output [31:0] io_out_0_inst,
|
|
output [4:0] io_out_0_rs1,
|
|
io_out_0_rs2,
|
|
io_out_0_rd,
|
|
output [2:0] io_out_0_funct3,
|
|
output [63:0] io_out_0_immI,
|
|
io_out_0_immS,
|
|
io_out_0_immB,
|
|
io_out_0_immU,
|
|
io_out_0_immJ,
|
|
output [3:0] io_out_0_opClass,
|
|
output [4:0] io_out_0_aluFn,
|
|
output [2:0] io_out_0_memWidth,
|
|
output io_out_0_memSigned,
|
|
io_out_0_isLoad,
|
|
io_out_0_isStore,
|
|
io_out_0_isBranch,
|
|
io_out_0_isJal,
|
|
io_out_0_isJalr,
|
|
io_out_0_isLui,
|
|
io_out_0_isAuipc,
|
|
io_out_0_isOpImm,
|
|
io_out_0_isWord,
|
|
io_out_0_isSystem,
|
|
io_out_0_isFenceI,
|
|
io_out_0_isAmo,
|
|
output [4:0] io_out_0_amoOp,
|
|
output io_out_0_writesRd,
|
|
io_out_0_illegal,
|
|
output [63:0] io_out_1_pc,
|
|
output [31:0] io_out_1_inst,
|
|
output [4:0] io_out_1_rs1,
|
|
io_out_1_rs2,
|
|
io_out_1_rd,
|
|
output [2:0] io_out_1_funct3,
|
|
output [63:0] io_out_1_immI,
|
|
io_out_1_immS,
|
|
io_out_1_immB,
|
|
io_out_1_immU,
|
|
io_out_1_immJ,
|
|
output [3:0] io_out_1_opClass,
|
|
output [4:0] io_out_1_aluFn,
|
|
output [2:0] io_out_1_memWidth,
|
|
output io_out_1_memSigned,
|
|
io_out_1_isLoad,
|
|
io_out_1_isStore,
|
|
io_out_1_isBranch,
|
|
io_out_1_isJal,
|
|
io_out_1_isJalr,
|
|
io_out_1_isLui,
|
|
io_out_1_isAuipc,
|
|
io_out_1_isOpImm,
|
|
io_out_1_isWord,
|
|
io_out_1_isSystem,
|
|
io_out_1_isFenceI,
|
|
io_out_1_isAmo,
|
|
output [4:0] io_out_1_amoOp,
|
|
output io_out_1_writesRd,
|
|
io_out_1_illegal
|
|
);
|
|
|
|
Decoder decoders_0 (
|
|
.io_pc (io_in_pc),
|
|
.io_inst (io_in_inst_0),
|
|
.io_out_pc (io_out_0_pc),
|
|
.io_out_inst (io_out_0_inst),
|
|
.io_out_rs1 (io_out_0_rs1),
|
|
.io_out_rs2 (io_out_0_rs2),
|
|
.io_out_rd (io_out_0_rd),
|
|
.io_out_funct3 (io_out_0_funct3),
|
|
.io_out_immI (io_out_0_immI),
|
|
.io_out_immS (io_out_0_immS),
|
|
.io_out_immB (io_out_0_immB),
|
|
.io_out_immU (io_out_0_immU),
|
|
.io_out_immJ (io_out_0_immJ),
|
|
.io_out_opClass (io_out_0_opClass),
|
|
.io_out_aluFn (io_out_0_aluFn),
|
|
.io_out_memWidth (io_out_0_memWidth),
|
|
.io_out_memSigned (io_out_0_memSigned),
|
|
.io_out_isLoad (io_out_0_isLoad),
|
|
.io_out_isStore (io_out_0_isStore),
|
|
.io_out_isBranch (io_out_0_isBranch),
|
|
.io_out_isJal (io_out_0_isJal),
|
|
.io_out_isJalr (io_out_0_isJalr),
|
|
.io_out_isLui (io_out_0_isLui),
|
|
.io_out_isAuipc (io_out_0_isAuipc),
|
|
.io_out_isOpImm (io_out_0_isOpImm),
|
|
.io_out_isWord (io_out_0_isWord),
|
|
.io_out_isSystem (io_out_0_isSystem),
|
|
.io_out_isFenceI (io_out_0_isFenceI),
|
|
.io_out_isAmo (io_out_0_isAmo),
|
|
.io_out_amoOp (io_out_0_amoOp),
|
|
.io_out_writesRd (io_out_0_writesRd),
|
|
.io_out_illegal (io_out_0_illegal)
|
|
);
|
|
Decoder decoders_1 (
|
|
.io_pc (io_in_pc + 64'h4),
|
|
.io_inst (io_in_inst_1),
|
|
.io_out_pc (io_out_1_pc),
|
|
.io_out_inst (io_out_1_inst),
|
|
.io_out_rs1 (io_out_1_rs1),
|
|
.io_out_rs2 (io_out_1_rs2),
|
|
.io_out_rd (io_out_1_rd),
|
|
.io_out_funct3 (io_out_1_funct3),
|
|
.io_out_immI (io_out_1_immI),
|
|
.io_out_immS (io_out_1_immS),
|
|
.io_out_immB (io_out_1_immB),
|
|
.io_out_immU (io_out_1_immU),
|
|
.io_out_immJ (io_out_1_immJ),
|
|
.io_out_opClass (io_out_1_opClass),
|
|
.io_out_aluFn (io_out_1_aluFn),
|
|
.io_out_memWidth (io_out_1_memWidth),
|
|
.io_out_memSigned (io_out_1_memSigned),
|
|
.io_out_isLoad (io_out_1_isLoad),
|
|
.io_out_isStore (io_out_1_isStore),
|
|
.io_out_isBranch (io_out_1_isBranch),
|
|
.io_out_isJal (io_out_1_isJal),
|
|
.io_out_isJalr (io_out_1_isJalr),
|
|
.io_out_isLui (io_out_1_isLui),
|
|
.io_out_isAuipc (io_out_1_isAuipc),
|
|
.io_out_isOpImm (io_out_1_isOpImm),
|
|
.io_out_isWord (io_out_1_isWord),
|
|
.io_out_isSystem (io_out_1_isSystem),
|
|
.io_out_isFenceI (io_out_1_isFenceI),
|
|
.io_out_isAmo (io_out_1_isAmo),
|
|
.io_out_amoOp (io_out_1_amoOp),
|
|
.io_out_writesRd (io_out_1_writesRd),
|
|
.io_out_illegal (io_out_1_illegal)
|
|
);
|
|
assign io_outValid_0 = io_inValid & io_in_laneValid_0;
|
|
assign io_outValid_1 = io_inValid & io_in_laneValid_1;
|
|
endmodule
|
|
|