Last active
November 23, 2020 11:58
-
-
Save diningyo/e20e0fff9e18235be04dd608202b6bac to your computer and use it in GitHub Desktop.
Chisel 3.3.2 vs. Chisel 3.4.0 (dirv-idu moudle)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Chisel 3.4.0 w/ compiler pulg-in version | |
module Idu( | |
input io_ifu2idu_valid, | |
output io_ifu2idu_ready, | |
input [31:0] io_ifu2idu_inst, | |
input io_idu2exu_inst_ready, | |
output io_idu2exu_inst_valid, | |
output [31:0] io_idu2exu_inst_bits_rawData, | |
output [6:0] io_idu2exu_inst_bits_funct7, | |
output [4:0] io_idu2exu_inst_bits_rs2, | |
output [4:0] io_idu2exu_inst_bits_rs1, | |
output [2:0] io_idu2exu_inst_bits_funct3, | |
output [4:0] io_idu2exu_inst_bits_rd, | |
output io_idu2exu_inst_bits_illegal, | |
output io_idu2exu_inst_bits_valid, | |
output io_idu2exu_inst_bits_illegalOpcode, | |
output io_idu2exu_inst_bits_csrrw, | |
output io_idu2exu_inst_bits_csrrs, | |
output io_idu2exu_inst_bits_csrrc, | |
output io_idu2exu_inst_bits_csrrwi, | |
output io_idu2exu_inst_bits_csrrsi, | |
output io_idu2exu_inst_bits_csrrci, | |
output io_idu2exu_inst_bits_csrUimmValid, | |
output io_idu2exu_inst_bits_csrValid, | |
output io_idu2exu_inst_bits_fenceI, | |
output io_idu2exu_inst_bits_jalr, | |
output io_idu2exu_inst_bits_mret, | |
output io_idu2exu_inst_bits_ecall, | |
output io_idu2exu_inst_bits_ebreak, | |
output io_idu2exu_inst_bits_wfi, | |
output io_idu2exu_inst_bits_loadValid, | |
output io_idu2exu_inst_bits_lb, | |
output io_idu2exu_inst_bits_lh, | |
output io_idu2exu_inst_bits_lw, | |
output io_idu2exu_inst_bits_lbu, | |
output io_idu2exu_inst_bits_lhu, | |
output io_idu2exu_inst_bits_add, | |
output io_idu2exu_inst_bits_sub, | |
output io_idu2exu_inst_bits_sll, | |
output io_idu2exu_inst_bits_slt, | |
output io_idu2exu_inst_bits_sltu, | |
output io_idu2exu_inst_bits_xor, | |
output io_idu2exu_inst_bits_srl, | |
output io_idu2exu_inst_bits_sra, | |
output io_idu2exu_inst_bits_or, | |
output io_idu2exu_inst_bits_and, | |
output io_idu2exu_inst_bits_aluValid, | |
output io_idu2exu_inst_bits_aluImm, | |
output io_idu2exu_inst_bits_addi, | |
output io_idu2exu_inst_bits_slti, | |
output io_idu2exu_inst_bits_sltiu, | |
output io_idu2exu_inst_bits_andi, | |
output io_idu2exu_inst_bits_ori, | |
output io_idu2exu_inst_bits_xori, | |
output io_idu2exu_inst_bits_slli, | |
output io_idu2exu_inst_bits_srli, | |
output io_idu2exu_inst_bits_srai, | |
output [4:0] io_idu2exu_inst_bits_shamt, | |
output io_idu2exu_inst_bits_illegalShamt, | |
output io_idu2exu_inst_bits_storeValid, | |
output io_idu2exu_inst_bits_sb, | |
output io_idu2exu_inst_bits_sh, | |
output io_idu2exu_inst_bits_sw, | |
output io_idu2exu_inst_bits_mul, | |
output io_idu2exu_inst_bits_mulh, | |
output io_idu2exu_inst_bits_mulhsu, | |
output io_idu2exu_inst_bits_mulhu, | |
output io_idu2exu_inst_bits_div, | |
output io_idu2exu_inst_bits_divu, | |
output io_idu2exu_inst_bits_rem, | |
output io_idu2exu_inst_bits_remu, | |
output io_idu2exu_inst_bits_beq, | |
output io_idu2exu_inst_bits_bne, | |
output io_idu2exu_inst_bits_blt, | |
output io_idu2exu_inst_bits_bge, | |
output io_idu2exu_inst_bits_bltu, | |
output io_idu2exu_inst_bits_bgeu, | |
output io_idu2exu_inst_bits_lui, | |
output io_idu2exu_inst_bits_auipc, | |
output io_idu2exu_inst_bits_jal | |
); | |
wire _T = io_ifu2idu_valid & io_ifu2idu_ready; // @[Idu.scala 373:32] | |
wire [6:0] inst_funct7 = io_ifu2idu_inst[31:25]; // @[Idu.scala 190:19] | |
wire [4:0] inst_rs2 = io_ifu2idu_inst[24:20]; // @[Idu.scala 191:16] | |
wire [2:0] inst_funct3 = io_ifu2idu_inst[14:12]; // @[Idu.scala 193:19] | |
wire [6:0] inst_opcode = io_ifu2idu_inst[6:0]; // @[Idu.scala 195:19] | |
wire inst_jalr = inst_opcode == 7'h67; // @[Idu.scala 197:20] | |
wire inst_fenceValid = inst_opcode == 7'hf; // @[Idu.scala 198:26] | |
wire _inst_fence_T = inst_funct3 == 3'h0; // @[Idu.scala 200:22] | |
wire _inst_fenceI_T = inst_funct3 == 3'h1; // @[Idu.scala 201:23] | |
wire inst_loadValid = inst_opcode == 7'h3; // @[Idu.scala 222:25] | |
wire _inst_lw_T = inst_funct3 == 3'h2; // @[Idu.scala 225:19] | |
wire _inst_lbu_T = inst_funct3 == 3'h4; // @[Idu.scala 226:20] | |
wire _inst_lhu_T = inst_funct3 == 3'h5; // @[Idu.scala 227:20] | |
wire inst_storeValid = inst_opcode == 7'h23; // @[Idu.scala 229:26] | |
wire inst_system = inst_opcode == 7'h73; // @[Idu.scala 236:23] | |
wire _inst_csrrc_T = inst_funct3 == 3'h3; // @[Idu.scala 239:22] | |
wire inst_csrrwi = _inst_lhu_T & inst_system; // @[Idu.scala 240:37] | |
wire _inst_csrrsi_T = inst_funct3 == 3'h6; // @[Idu.scala 241:23] | |
wire inst_csrrsi = inst_funct3 == 3'h6 & inst_system; // @[Idu.scala 241:37] | |
wire _inst_csrrci_T = inst_funct3 == 3'h7; // @[Idu.scala 242:23] | |
wire inst_csrrci = inst_funct3 == 3'h7 & inst_system; // @[Idu.scala 242:37] | |
wire inst_csrValid = inst_system & inst_funct3 != 3'h0; // @[Idu.scala 244:24] | |
wire inst_excValid = inst_system & _inst_fence_T; // @[Idu.scala 248:41] | |
wire inst_aluReg = inst_opcode == 7'h33; // @[Idu.scala 257:22] | |
wire _inst_add_T_1 = _inst_fence_T & inst_aluReg; // @[Idu.scala 258:34] | |
wire inst_arith = inst_funct7[5]; // @[Idu.scala 303:20] | |
wire _inst_add_T_2 = ~inst_arith; // @[Idu.scala 258:48] | |
wire _inst_srl_T_1 = _inst_lhu_T & inst_aluReg; // @[Idu.scala 264:34] | |
wire inst_aluImm = inst_opcode == 7'h13; // @[Idu.scala 270:22] | |
wire inst_auipc = inst_opcode == 7'h17; // @[Idu.scala 319:21] | |
wire inst_lui = inst_opcode == 7'h37; // @[Idu.scala 318:19] | |
wire inst_slli = _inst_fenceI_T & inst_aluImm; // @[Idu.scala 300:35] | |
wire _inst_srli_T_1 = _inst_lhu_T & inst_aluImm; // @[Idu.scala 301:35] | |
wire inst_srli = _inst_lhu_T & inst_aluImm & _inst_add_T_2; // @[Idu.scala 301:45] | |
wire inst_srai = _inst_srli_T_1 & inst_arith; // @[Idu.scala 302:45] | |
wire inst_shiftValid = inst_slli | inst_srli | inst_srai; // @[Idu.scala 298:32] | |
wire inst_aluValid = inst_aluImm | inst_aluReg | inst_auipc | inst_lui | inst_shiftValid; // @[Idu.scala 277:50] | |
wire inst_illegalShamt = ~(inst_funct7 == 7'h0 | inst_funct7 == 7'h20) & inst_shiftValid; // @[Idu.scala 299:79] | |
wire m = inst_funct7[0]; // @[Idu.scala 286:19] | |
wire _inst_mul_T = inst_aluReg & m; // @[Idu.scala 287:23] | |
wire inst_bValid = inst_opcode == 7'h63; // @[Idu.scala 308:23] | |
wire inst_jal = inst_opcode == 7'h6f; // @[Idu.scala 323:19] | |
wire _inst_valid_T_4 = inst_csrValid | inst_aluValid | inst_jalr | inst_loadValid | inst_excValid | inst_fenceValid; // @[Idu.scala 212:68] | |
wire inst_valid = _inst_valid_T_4 | inst_jal | inst_storeValid | inst_lui | inst_auipc | inst_bValid; // @[Idu.scala 213:58] | |
wire inst_illegalOpcode = ~inst_valid & _T; // @[Idu.scala 214:29] | |
assign io_ifu2idu_ready = io_idu2exu_inst_ready; // @[Idu.scala 376:20] | |
assign io_idu2exu_inst_valid = io_ifu2idu_valid; // @[Idu.scala 379:25] | |
assign io_idu2exu_inst_bits_rawData = io_ifu2idu_inst; // @[Idu.scala 371:18 Idu.scala 218:30] | |
assign io_idu2exu_inst_bits_funct7 = io_ifu2idu_inst[31:25]; // @[Idu.scala 190:19] | |
assign io_idu2exu_inst_bits_rs2 = io_ifu2idu_inst[24:20]; // @[Idu.scala 191:16] | |
assign io_idu2exu_inst_bits_rs1 = io_ifu2idu_inst[19:15]; // @[Idu.scala 192:16] | |
assign io_idu2exu_inst_bits_funct3 = io_ifu2idu_inst[14:12]; // @[Idu.scala 193:19] | |
assign io_idu2exu_inst_bits_rd = io_ifu2idu_inst[11:7]; // @[Idu.scala 194:15] | |
assign io_idu2exu_inst_bits_illegal = inst_illegalShamt | inst_illegalOpcode; // @[Idu.scala 215:29] | |
assign io_idu2exu_inst_bits_valid = _inst_valid_T_4 | inst_jal | inst_storeValid | inst_lui | inst_auipc | inst_bValid | |
; // @[Idu.scala 213:58] | |
assign io_idu2exu_inst_bits_illegalOpcode = ~inst_valid & _T; // @[Idu.scala 214:29] | |
assign io_idu2exu_inst_bits_csrrw = _inst_fenceI_T & inst_system; // @[Idu.scala 237:36] | |
assign io_idu2exu_inst_bits_csrrs = _inst_lw_T & inst_system; // @[Idu.scala 238:36] | |
assign io_idu2exu_inst_bits_csrrc = inst_funct3 == 3'h3 & inst_system; // @[Idu.scala 239:36] | |
assign io_idu2exu_inst_bits_csrrwi = _inst_lhu_T & inst_system; // @[Idu.scala 240:37] | |
assign io_idu2exu_inst_bits_csrrsi = inst_funct3 == 3'h6 & inst_system; // @[Idu.scala 241:37] | |
assign io_idu2exu_inst_bits_csrrci = inst_funct3 == 3'h7 & inst_system; // @[Idu.scala 242:37] | |
assign io_idu2exu_inst_bits_csrUimmValid = inst_csrrwi | inst_csrrsi | inst_csrrci; // @[Idu.scala 243:38] | |
assign io_idu2exu_inst_bits_csrValid = inst_system & inst_funct3 != 3'h0; // @[Idu.scala 244:24] | |
assign io_idu2exu_inst_bits_fenceI = inst_funct3 == 3'h1 & inst_fenceValid; // @[Idu.scala 201:37] | |
assign io_idu2exu_inst_bits_jalr = inst_opcode == 7'h67; // @[Idu.scala 197:20] | |
assign io_idu2exu_inst_bits_mret = inst_excValid & inst_rs2[1]; // @[Idu.scala 250:22] | |
assign io_idu2exu_inst_bits_ecall = inst_excValid & inst_rs2[1:0] == 2'h0; // @[Idu.scala 251:23] | |
assign io_idu2exu_inst_bits_ebreak = inst_excValid & inst_rs2[1:0] == 2'h1; // @[Idu.scala 252:24] | |
assign io_idu2exu_inst_bits_wfi = inst_excValid & inst_rs2[2]; // @[Idu.scala 249:21] | |
assign io_idu2exu_inst_bits_loadValid = inst_opcode == 7'h3; // @[Idu.scala 222:25] | |
assign io_idu2exu_inst_bits_lb = _inst_fence_T & inst_loadValid; // @[Idu.scala 223:33] | |
assign io_idu2exu_inst_bits_lh = _inst_fenceI_T & inst_loadValid; // @[Idu.scala 224:33] | |
assign io_idu2exu_inst_bits_lw = inst_funct3 == 3'h2 & inst_loadValid; // @[Idu.scala 225:33] | |
assign io_idu2exu_inst_bits_lbu = inst_funct3 == 3'h4 & inst_loadValid; // @[Idu.scala 226:34] | |
assign io_idu2exu_inst_bits_lhu = inst_funct3 == 3'h5 & inst_loadValid; // @[Idu.scala 227:34] | |
assign io_idu2exu_inst_bits_add = _inst_fence_T & inst_aluReg & ~inst_arith; // @[Idu.scala 258:44] | |
assign io_idu2exu_inst_bits_sub = _inst_add_T_1 & inst_arith; // @[Idu.scala 259:44] | |
assign io_idu2exu_inst_bits_sll = _inst_fenceI_T & inst_aluReg; // @[Idu.scala 260:34] | |
assign io_idu2exu_inst_bits_slt = _inst_lw_T & inst_aluReg; // @[Idu.scala 261:34] | |
assign io_idu2exu_inst_bits_sltu = _inst_csrrc_T & inst_aluReg; // @[Idu.scala 262:35] | |
assign io_idu2exu_inst_bits_xor = _inst_lbu_T & inst_aluReg; // @[Idu.scala 263:34] | |
assign io_idu2exu_inst_bits_srl = _inst_lhu_T & inst_aluReg & _inst_add_T_2; // @[Idu.scala 264:44] | |
assign io_idu2exu_inst_bits_sra = _inst_srl_T_1 & inst_arith; // @[Idu.scala 265:44] | |
assign io_idu2exu_inst_bits_or = _inst_csrrsi_T & inst_aluReg; // @[Idu.scala 266:33] | |
assign io_idu2exu_inst_bits_and = _inst_csrrci_T & inst_aluReg; // @[Idu.scala 267:34] | |
assign io_idu2exu_inst_bits_aluValid = inst_aluImm | inst_aluReg | inst_auipc | inst_lui | inst_shiftValid; // @[Idu.scala 277:50] | |
assign io_idu2exu_inst_bits_aluImm = inst_opcode == 7'h13; // @[Idu.scala 270:22] | |
assign io_idu2exu_inst_bits_addi = _inst_fence_T & inst_aluImm; // @[Idu.scala 271:35] | |
assign io_idu2exu_inst_bits_slti = _inst_lw_T & inst_aluImm; // @[Idu.scala 272:35] | |
assign io_idu2exu_inst_bits_sltiu = _inst_csrrc_T & inst_aluImm; // @[Idu.scala 273:36] | |
assign io_idu2exu_inst_bits_andi = _inst_csrrci_T & inst_aluImm; // @[Idu.scala 276:35] | |
assign io_idu2exu_inst_bits_ori = _inst_csrrsi_T & inst_aluImm; // @[Idu.scala 275:34] | |
assign io_idu2exu_inst_bits_xori = _inst_lbu_T & inst_aluImm; // @[Idu.scala 274:35] | |
assign io_idu2exu_inst_bits_slli = _inst_fenceI_T & inst_aluImm; // @[Idu.scala 300:35] | |
assign io_idu2exu_inst_bits_srli = _inst_lhu_T & inst_aluImm & _inst_add_T_2; // @[Idu.scala 301:45] | |
assign io_idu2exu_inst_bits_srai = _inst_srli_T_1 & inst_arith; // @[Idu.scala 302:45] | |
assign io_idu2exu_inst_bits_shamt = io_ifu2idu_inst[24:20]; // @[Idu.scala 191:16] | |
assign io_idu2exu_inst_bits_illegalShamt = ~(inst_funct7 == 7'h0 | inst_funct7 == 7'h20) & inst_shiftValid; // @[Idu.scala 299:79] | |
assign io_idu2exu_inst_bits_storeValid = inst_opcode == 7'h23; // @[Idu.scala 229:26] | |
assign io_idu2exu_inst_bits_sb = _inst_fence_T & inst_storeValid; // @[Idu.scala 230:33] | |
assign io_idu2exu_inst_bits_sh = _inst_fenceI_T & inst_storeValid; // @[Idu.scala 231:33] | |
assign io_idu2exu_inst_bits_sw = _inst_lw_T & inst_storeValid; // @[Idu.scala 232:33] | |
assign io_idu2exu_inst_bits_mul = inst_aluReg & m & _inst_fence_T; // @[Idu.scala 287:28] | |
assign io_idu2exu_inst_bits_mulh = _inst_mul_T & _inst_fenceI_T; // @[Idu.scala 288:29] | |
assign io_idu2exu_inst_bits_mulhsu = _inst_mul_T & _inst_lw_T; // @[Idu.scala 289:31] | |
assign io_idu2exu_inst_bits_mulhu = _inst_mul_T & _inst_csrrc_T; // @[Idu.scala 290:30] | |
assign io_idu2exu_inst_bits_div = _inst_mul_T & _inst_lbu_T; // @[Idu.scala 291:28] | |
assign io_idu2exu_inst_bits_divu = _inst_mul_T & _inst_lhu_T; // @[Idu.scala 292:29] | |
assign io_idu2exu_inst_bits_rem = _inst_mul_T & _inst_csrrsi_T; // @[Idu.scala 293:28] | |
assign io_idu2exu_inst_bits_remu = _inst_mul_T & _inst_csrrci_T; // @[Idu.scala 294:29] | |
assign io_idu2exu_inst_bits_beq = _inst_fence_T & inst_bValid; // @[Idu.scala 309:34] | |
assign io_idu2exu_inst_bits_bne = _inst_fenceI_T & inst_bValid; // @[Idu.scala 310:34] | |
assign io_idu2exu_inst_bits_blt = _inst_lbu_T & inst_bValid; // @[Idu.scala 311:34] | |
assign io_idu2exu_inst_bits_bge = _inst_lhu_T & inst_bValid; // @[Idu.scala 312:34] | |
assign io_idu2exu_inst_bits_bltu = _inst_csrrsi_T & inst_bValid; // @[Idu.scala 313:35] | |
assign io_idu2exu_inst_bits_bgeu = _inst_csrrci_T & inst_bValid; // @[Idu.scala 314:35] | |
assign io_idu2exu_inst_bits_lui = inst_opcode == 7'h37; // @[Idu.scala 318:19] | |
assign io_idu2exu_inst_bits_auipc = inst_opcode == 7'h17; // @[Idu.scala 319:21] | |
assign io_idu2exu_inst_bits_jal = inst_opcode == 7'h6f; // @[Idu.scala 323:19] | |
endmodule |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment