From c198fcab4f4989219614d6329fc62db7e5fcc61f Mon Sep 17 00:00:00 2001 From: CGH0S7 <776459475@qq.com> Date: Tue, 31 Dec 2024 11:23:29 +0800 Subject: [PATCH] Micore need to be fixed --- log.txt | 2 + src/hex/mem.hex | 2 +- src/main/scala/common/Consts.scala | 2 +- src/main/scala/common/Instructions.scala | 2 +- src/main/scala/micore/Core.scala | 458 +++++++-- src/main/scala/micore/Memory.scala | 9 - target/scala-2.13/zinc/inc_compile_2.13.zip | Bin 21895 -> 21767 bytes .../compileIncremental/_global/streams/out | 4 +- .../TopOrigin.lo.fir | 902 ++++++++---------- .../TopOrigin.lo.fir | 458 ++++----- 10 files changed, 1012 insertions(+), 827 deletions(-) create mode 100644 log.txt diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..6a184f1 --- /dev/null +++ b/log.txt @@ -0,0 +1,2 @@ +[info] welcome to sbt 1.9.7 (Arch Linux Java 23) + \ No newline at end of file diff --git a/src/hex/mem.hex b/src/hex/mem.hex index 56ca829..bb3d0fa 100755 --- a/src/hex/mem.hex +++ b/src/hex/mem.hex @@ -6,7 +6,7 @@ 00 10 20 -65 +05 00 12 20 diff --git a/src/main/scala/common/Consts.scala b/src/main/scala/common/Consts.scala index 893ffc1..47224e3 100755 --- a/src/main/scala/common/Consts.scala +++ b/src/main/scala/common/Consts.scala @@ -7,7 +7,7 @@ object Consts { // 数据宽度和地址 val WORD_LEN = 32 // 指令和数据的宽度为32位 val START_ADDR = 0x00000000.U(WORD_LEN.W) // MIPS程序的起始地址通常为0x00400000 - val BUBBLE = 0x20000000.U(WORD_LEN.W) // 用于冒泡的指令 [NOP] + val BUBBLE = 0x20090000.U(WORD_LEN.W) // 用于冒泡的指令 [NOP] val UNIMP = 0x00114514.U(WORD_LEN.W) // 未实现指令 // 寄存器地址长度 diff --git a/src/main/scala/common/Instructions.scala b/src/main/scala/common/Instructions.scala index 7d5f10f..80d69a5 100755 --- a/src/main/scala/common/Instructions.scala +++ b/src/main/scala/common/Instructions.scala @@ -43,5 +43,5 @@ object Instructions { val JAL = BitPat("b000011??????????????????????????") // jal target // * NOP - val NOP = BitPat("b00100000000000000000000000000000") // nop (addi $0, $0, 0) + val NOP = BitPat("b00100000000010010000000000000000") // nop } diff --git a/src/main/scala/micore/Core.scala b/src/main/scala/micore/Core.scala index 3b138d1..b35a84d 100755 --- a/src/main/scala/micore/Core.scala +++ b/src/main/scala/micore/Core.scala @@ -15,36 +15,34 @@ class Core extends Module { val regfile = Mem(32, UInt(WORD_LEN.W)) // ********* Pipeline Registers ********* - // IF/ID state + // IF/ID stage val id_reg_pc = RegInit(0.U(WORD_LEN.W)) val id_reg_inst = RegInit(0.U(WORD_LEN.W)) - // ID/EX state + // ID/EX stage val exe_reg_pc = RegInit(0.U(WORD_LEN.W)) val exe_reg_wb_addr = RegInit(0.U(ADDR_LEN.W)) val exe_reg_op1_data = RegInit(0.U(WORD_LEN.W)) val exe_reg_op2_data = RegInit(0.U(WORD_LEN.W)) - val exe_reg_rs2_data = RegInit(0.U(WORD_LEN.W)) + val exe_reg_rs_data = RegInit(0.U(WORD_LEN.W)) + val exe_reg_rt_data = RegInit(0.U(WORD_LEN.W)) val exe_reg_exe_fun = RegInit(0.U(EXE_FUN_LEN.W)) val exe_reg_mem_wen = RegInit(0.U(MEN_LEN.W)) val exe_reg_rf_wen = RegInit(0.U(REN_LEN.W)) val exe_reg_wb_sel = RegInit(0.U(WB_SEL_LEN.W)) val exe_reg_imm_i_sext = RegInit(0.U(WORD_LEN.W)) - val exe_reg_imm_s_sext = RegInit(0.U(WORD_LEN.W)) - val exe_reg_imm_b_sext = RegInit(0.U(WORD_LEN.W)) - val exe_reg_imm_u_shifted = RegInit(0.U(WORD_LEN.W)) + val exe_reg_imm_j = RegInit(0.U(WORD_LEN.W)) - // EX/MEM state + // EX/MEM stage val mem_reg_pc = RegInit(0.U(WORD_LEN.W)) val mem_reg_wb_addr = RegInit(0.U(ADDR_LEN.W)) - val mem_reg_op1_data = RegInit(0.U(WORD_LEN.W)) - val mem_reg_rs2_data = RegInit(0.U(WORD_LEN.W)) + val mem_reg_alu_out = RegInit(0.U(WORD_LEN.W)) + val mem_reg_rt_data = RegInit(0.U(WORD_LEN.W)) val mem_reg_mem_wen = RegInit(0.U(MEN_LEN.W)) val mem_reg_rf_wen = RegInit(0.U(REN_LEN.W)) val mem_reg_wb_sel = RegInit(0.U(WB_SEL_LEN.W)) - val mem_reg_alu_out = RegInit(0.U(WORD_LEN.W)) - // MEM/WB state + // MEM/WB stage val wb_reg_wb_addr = RegInit(0.U(ADDR_LEN.W)) val wb_reg_rf_wen = RegInit(0.U(REN_LEN.W)) val wb_reg_wb_data = RegInit(0.U(WORD_LEN.W)) @@ -82,90 +80,64 @@ class Core extends Module { ) // ********* Decode (ID) Stage ********* - val id_rs1_addr_b = id_reg_inst(25, 21) - val id_rs2_addr_b = id_reg_inst(20, 16) + val id_rs_addr = id_reg_inst(25, 21) + val id_rt_addr = id_reg_inst(20, 16) + val id_rd_addr = id_reg_inst(15, 11) - // 与EX数据冒险 -> stall - val id_rs1_data_hazard = - (exe_reg_rf_wen === REN_S) && (id_rs1_addr_b =/= 0.U) && (id_rs1_addr_b === exe_reg_wb_addr) - val id_rs2_data_hazard = - (exe_reg_rf_wen === REN_S) && (id_rs2_addr_b =/= 0.U) && (id_rs2_addr_b === exe_reg_wb_addr) - stall_flg := (id_rs1_data_hazard || id_rs2_data_hazard) + // Hazard detection + val id_rs_data_hazard = + (exe_reg_rf_wen === REN_S) && (id_rs_addr =/= 0.U) && (id_rs_addr === exe_reg_wb_addr) + val id_rt_data_hazard = + (exe_reg_rf_wen === REN_S) && (id_rt_addr =/= 0.U) && (id_rt_addr === exe_reg_wb_addr) + stall_flg := (id_rs_data_hazard || id_rt_data_hazard) && !(exe_reg_wb_sel === WB_MEM) + // stall_flg := 0.U(1.W) val id_inst = Mux((exe_br_flg || exe_jmp_flg || stall_flg), BUBBLE, id_reg_inst) - val id_rs1_addr = id_inst(25, 21) - val id_rs2_addr = id_inst(20, 16) - // val id_wb_addr = id_inst(15, 11) - val id_wb_addr = MuxCase( - id_inst(20, 16), // 默认是 rt_addr + val id_rs_data = MuxCase( + regfile(id_rs_addr), Seq( - (id_inst(31, 26) === "b000000".U) -> id_inst( - 15, - 11 - ), // R型指令,目标寄存器是 rd_addr - (id_inst === JAL) -> 31.U // JAL指令,目标寄存器是 $ra (寄存器31) + (id_rs_addr === 0.U) -> 0.U(WORD_LEN.W), + ((id_rs_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_reg_alu_out, // Forwarding from MEM + ((id_rs_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // Forwarding from WB ) ) - - val mem_wb_data = Wire(UInt(WORD_LEN.W)) - val id_rs1_data = MuxCase( - regfile(id_rs1_addr), + val id_rt_data = MuxCase( + regfile(id_rt_addr), Seq( - (id_rs1_addr === 0.U) -> 0.U(WORD_LEN.W), - ((id_rs1_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_wb_data, // 从MEN直通 - ((id_rs1_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // 从WB直通 - ) - ) - val id_rs2_data = MuxCase( - regfile(id_rs2_addr), - Seq( - (id_rs2_addr === 0.U) -> 0.U(WORD_LEN.W), - ((id_rs2_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_wb_data, // 从MEN直通 - ((id_rs2_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // 从WB直通 + (id_rt_addr === 0.U) -> 0.U(WORD_LEN.W), + ((id_rt_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_reg_alu_out, // Forwarding from MEM + ((id_rt_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // Forwarding from WB ) ) val id_imm_i = id_inst(15, 0) val id_imm_i_sext = Cat(Fill(16, id_imm_i(15)), id_imm_i) - val id_imm_b = Cat( - id_inst(15, 0), - 0.U(2.W) - ) - val id_imm_b_sext = Cat(Fill(14, id_imm_b(17)), id_imm_b) - val id_imm_j = Cat( - id_inst(25, 0), - 0.U(2.W) - ) - val id_imm_j_sext = Cat(Fill(6, id_imm_j(25)), id_imm_j) - val id_imm_u = id_inst(15, 0) - val id_imm_u_shifted = Cat(id_imm_u, Fill(16, 0.U)) - val id_imm_shamt = id_inst(10, 6) + val id_imm_j = Cat(id_inst(25, 0), Fill(2, 0.U(1.W))) val csignals = ListLookup( id_inst, List(ALU_X, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_X), Array( - LW -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_S, REN_S, WB_MEM), - SW -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_S, REN_S, WB_MEM), - ADD -> List(ALU_ADD, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - ADDI -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_X, REN_X, WB_ALU), - SUB -> List(ALU_SUB, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - AND -> List(ALU_AND, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - OR -> List(ALU_OR, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - XOR -> List(ALU_XOR, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - ANDI -> List(ALU_AND, OP1_RS1, OP2_IMI, MEN_X, REN_X, WB_ALU), - ORI -> List(ALU_OR, OP1_RS1, OP2_IMI, MEN_X, REN_X, WB_ALU), - SLT -> List(ALU_SLT, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), + LW -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_MEM), + SW -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_S, REN_X, WB_X), + ADD -> List(ALU_ADD, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + ADDI -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_ALU), + SUB -> List(ALU_SUB, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + AND -> List(ALU_AND, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + OR -> List(ALU_OR, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + XOR -> List(ALU_XOR, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + ANDI -> List(ALU_AND, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_ALU), + ORI -> List(ALU_OR, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_ALU), + SLT -> List(ALU_SLT, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), BEQ -> List(BR_BEQ, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_X), BNE -> List(BR_BNE, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_X), - SLL -> List(ALU_SLL, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - SRL -> List(ALU_SRL, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - SRA -> List(ALU_SRA, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_ALU), - JR -> List(ALU_X, OP1_RS1, OP2_X, MEN_X, REN_X, WB_X), - JAL -> List(ALU_X, OP1_PC, OP2_X, MEN_X, REN_X, WB_X), - NOP -> List(ALU_X, OP1_X, OP2_X, MEN_X, REN_X, WB_X) + SLL -> List(ALU_SLL, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + SRL -> List(ALU_SRL, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + SRA -> List(ALU_SRA, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), + JAL -> List(ALU_ADD, OP1_PC, OP2_IMJ, MEN_X, REN_S, WB_PC), + JR -> List(ALU_COPY1, OP1_RS1, OP2_X, MEN_X, REN_X, WB_X) ) ) @@ -175,7 +147,7 @@ class Core extends Module { val id_op1_data = MuxCase( 0.U(WORD_LEN.W), Seq( - (id_op1_sel === OP1_RS1) -> id_rs1_data, + (id_op1_sel === OP1_RS1) -> id_rs_data, (id_op1_sel === OP1_PC) -> id_reg_pc ) ) @@ -183,10 +155,9 @@ class Core extends Module { val id_op2_data = MuxCase( 0.U(WORD_LEN.W), Seq( - (id_op2_sel === OP2_RS2) -> id_rs2_data, + (id_op2_sel === OP2_RS2) -> id_rt_data, (id_op2_sel === OP2_IMI) -> id_imm_i_sext, - (id_op2_sel === OP2_IMJ) -> id_imm_j_sext, - (id_op2_sel === OP2_IMU) -> id_imm_u_shifted + (id_op2_sel === OP2_IMJ) -> id_imm_j ) ) @@ -194,14 +165,23 @@ class Core extends Module { exe_reg_pc := id_reg_pc exe_reg_op1_data := id_op1_data exe_reg_op2_data := id_op2_data - exe_reg_rs2_data := id_rs2_data - exe_reg_wb_addr := id_wb_addr + exe_reg_rs_data := id_rs_data + exe_reg_rt_data := id_rt_data + exe_reg_wb_addr := MuxCase( + id_rt_addr, + Seq( + (id_wb_sel === WB_ALU && id_inst( + 31, + 26 + ) === "b000000".U) -> id_rd_addr, // R-type + (id_inst === JAL) -> 31.U + ) + ) exe_reg_wb_sel := id_wb_sel exe_reg_mem_wen := id_mem_wen exe_reg_rf_wen := id_rf_wen exe_reg_imm_i_sext := id_imm_i_sext - exe_reg_imm_b_sext := id_imm_b_sext - exe_reg_imm_u_shifted := id_imm_u_shifted + exe_reg_imm_j := id_imm_j exe_reg_exe_fun := id_exe_fun // ********* Execute (EX) Stage ********* @@ -226,7 +206,7 @@ class Core extends Module { 0 )).asUInt, (exe_reg_exe_fun === ALU_SLT) -> (exe_reg_op1_data.asSInt < exe_reg_op2_data.asSInt).asUInt, - (exe_reg_exe_fun === ALU_SLTU) -> (exe_reg_op1_data < exe_reg_op2_data).asUInt + (exe_reg_exe_fun === ALU_COPY1) -> exe_reg_op1_data ) ) @@ -238,26 +218,24 @@ class Core extends Module { ) ) - exe_br_target := exe_reg_pc + exe_reg_imm_b_sext - + exe_br_target := exe_reg_pc + (exe_reg_imm_i_sext << 2.U(5.W)) exe_jmp_flg := (exe_reg_wb_sel === WB_PC) - // ********** Execute/Memory (EX/MEM) Stage *********** + // ********* Execute/Memory (EX/MEM) Stage ********* mem_reg_pc := exe_reg_pc - mem_reg_op1_data := exe_reg_op1_data - mem_reg_rs2_data := exe_reg_rs2_data mem_reg_wb_addr := exe_reg_wb_addr mem_reg_alu_out := exe_alu_out + mem_reg_rt_data := exe_reg_rt_data + mem_reg_mem_wen := exe_reg_mem_wen mem_reg_rf_wen := exe_reg_rf_wen mem_reg_wb_sel := exe_reg_wb_sel - mem_reg_mem_wen := exe_reg_mem_wen // ********* Memory (MEM) Stage ********* io.dmem.addr := mem_reg_alu_out io.dmem.wen := mem_reg_mem_wen - io.dmem.wdata := mem_reg_rs2_data + io.dmem.wdata := mem_reg_rt_data - mem_wb_data := MuxCase( + val mem_wb_data = MuxCase( mem_reg_alu_out, Seq( (mem_reg_wb_sel === WB_MEM) -> io.dmem.rdata, @@ -265,35 +243,303 @@ class Core extends Module { ) ) - // ********** Memory/Write Back (MEM/WB) Stage *********** - wb_reg_wb_data := mem_wb_data - wb_reg_rf_wen := mem_reg_rf_wen + // ********* Memory/Write Back (MEM/WB) Stage ********* wb_reg_wb_addr := mem_reg_wb_addr + wb_reg_rf_wen := mem_reg_rf_wen + wb_reg_wb_data := mem_wb_data // ********* Write Back (WB) Stage ********* - // when(wb_reg_rf_wen === REN_S) { regfile(wb_reg_wb_addr) := wb_reg_wb_data } when(wb_reg_rf_wen === REN_S && wb_reg_wb_addr =/= 0.U) { regfile(wb_reg_wb_addr) := wb_reg_wb_data } - // ********* Debugging ********* io.exit := (id_reg_inst === UNIMP) - printf(p"---------------------\n") + + // ********* Debugging ********* + printf(p"---------------\n") printf(p"if_reg_pc: 0x${Hexadecimal(if_reg_pc)}\n") printf(p"id_reg_pc: 0x${Hexadecimal(id_reg_pc)}\n") printf(p"id_reg_inst: 0x${Hexadecimal(id_reg_inst)}\n") - printf(p"id_inst: 0x${Hexadecimal(id_inst)}\n") - printf(p"id_rs1_data: 0x${Hexadecimal(id_rs1_data)}\n") - printf(p"id_rs2_data: 0x${Hexadecimal(id_rs2_data)}\n") - printf(p"id_exe_fun: 0x${Hexadecimal(id_exe_fun)}\n") - printf(p"id_op1_sel: 0x${Hexadecimal(id_op1_sel)}\n") - printf(p"id_op2_sel: 0x${Hexadecimal(id_op2_sel)}\n") printf(p"exe_reg_pc: 0x${Hexadecimal(exe_reg_pc)}\n") - printf(p"exe_reg_op1_data: 0x${Hexadecimal(id_op1_data)}\n") - printf(p"exe_reg_op2_data: 0x${Hexadecimal(id_op2_data)}\n") printf(p"exe_alu_out: 0x${Hexadecimal(exe_alu_out)}\n") printf(p"mem_reg_pc: 0x${Hexadecimal(mem_reg_pc)}\n") printf(p"mem_wb_data: 0x${Hexadecimal(mem_wb_data)}\n") printf(p"wb_reg_wb_data: 0x${Hexadecimal(wb_reg_wb_data)}\n") - printf(p"---------------------\n") + printf(p"---------------\n") } +// package micore + +// import chisel3._ +// import chisel3.util._ +// import common.Consts._ +// import common.Instructions._ + +// class Core extends Module { +// val io = IO(new Bundle { +// val imem = Flipped(new ImemPortIo()) +// val dmem = Flipped(new DmemPortIo()) +// val exit = Output(Bool()) +// }) + +// val regfile = Mem(32, UInt(WORD_LEN.W)) + +// // ********* Pipeline Registers ********* +// // IF/ID state +// val id_reg_pc = RegInit(0.U(WORD_LEN.W)) +// val id_reg_inst = RegInit(0.U(WORD_LEN.W)) + +// // ID/EX state +// val exe_reg_pc = RegInit(0.U(WORD_LEN.W)) +// val exe_reg_wb_addr = RegInit(0.U(ADDR_LEN.W)) +// val exe_reg_op1_data = RegInit(0.U(WORD_LEN.W)) +// val exe_reg_op2_data = RegInit(0.U(WORD_LEN.W)) +// val exe_reg_rt_data = RegInit(0.U(WORD_LEN.W)) +// val exe_reg_exe_fun = RegInit(0.U(EXE_FUN_LEN.W)) +// val exe_reg_mem_wen = RegInit(0.U(MEN_LEN.W)) +// val exe_reg_rf_wen = RegInit(0.U(REN_LEN.W)) +// val exe_reg_wb_sel = RegInit(0.U(WB_SEL_LEN.W)) +// val exe_reg_imm_i_sext = RegInit(0.U(WORD_LEN.W)) +// val exe_reg_imm_j = RegInit(0.U(WORD_LEN.W)) + +// // EX/MEM state +// val mem_reg_pc = RegInit(0.U(WORD_LEN.W)) +// val mem_reg_wb_addr = RegInit(0.U(ADDR_LEN.W)) +// val mem_reg_rt_data = RegInit(0.U(WORD_LEN.W)) +// val mem_reg_mem_wen = RegInit(0.U(MEN_LEN.W)) +// val mem_reg_rf_wen = RegInit(0.U(REN_LEN.W)) +// val mem_reg_wb_sel = RegInit(0.U(WB_SEL_LEN.W)) +// val mem_reg_alu_out = RegInit(0.U(WORD_LEN.W)) + +// // MEM/WB state +// val wb_reg_wb_addr = RegInit(0.U(ADDR_LEN.W)) +// val wb_reg_rf_wen = RegInit(0.U(REN_LEN.W)) +// val wb_reg_wb_data = RegInit(0.U(WORD_LEN.W)) + +// // ********* Instruction Fetch (IF) Stage ********* +// val if_reg_pc = RegInit(START_ADDR) +// io.imem.addr := if_reg_pc +// val if_inst = io.imem.inst + +// val stall_flg = Wire(Bool()) +// val exe_br_flg = Wire(Bool()) +// val exe_br_target = Wire(UInt(WORD_LEN.W)) +// val exe_jmp_flg = Wire(Bool()) +// val exe_alu_out = Wire(UInt(WORD_LEN.W)) + +// val if_pc_plus4 = if_reg_pc + 4.U(WORD_LEN.W) +// val if_pc_next = MuxCase( +// if_pc_plus4, +// Seq( +// exe_br_flg -> exe_br_target, +// exe_jmp_flg -> exe_alu_out, +// stall_flg -> if_reg_pc // stall +// ) +// ) +// if_reg_pc := if_pc_next + +// // ********* IF/ID Stage ********* +// id_reg_pc := Mux(stall_flg, id_reg_pc, if_reg_pc) +// id_reg_inst := MuxCase( +// if_inst, +// Seq( +// (exe_br_flg || exe_jmp_flg) -> BUBBLE, +// stall_flg -> id_reg_inst +// ) +// ) + +// // ********* Decode (ID) Stage ********* +// val id_rs_addr = id_reg_inst(25, 21) +// val id_rt_addr = id_reg_inst(20, 16) +// val id_rd_addr = id_reg_inst(15, 11) + +// // Data hazard detection +// val id_rs_data_hazard = +// (exe_reg_rf_wen === REN_S) && (id_rs_addr =/= 0.U) && (id_rs_addr === exe_reg_wb_addr) +// val id_rt_data_hazard = +// (exe_reg_rf_wen === REN_S) && (id_rt_addr =/= 0.U) && (id_rt_addr === exe_reg_wb_addr) +// stall_flg := 0.U(1.W) +// // stall_flg := (id_rs_data_hazard || id_rt_data_hazard) + +// val id_inst = +// Mux((exe_br_flg || exe_jmp_flg || stall_flg), BUBBLE, id_reg_inst) + +// val mem_wb_data = Wire(UInt(WORD_LEN.W)) +// val id_rs_data = MuxCase( +// regfile(id_rs_addr), +// Seq( +// (id_rs_addr === 0.U) -> 0.U(WORD_LEN.W), +// ((id_rs_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_wb_data, // Forward from MEM +// ((id_rs_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // Forward from WB +// ) +// ) +// val id_rt_data = MuxCase( +// regfile(id_rt_addr), +// Seq( +// (id_rt_addr === 0.U) -> 0.U(WORD_LEN.W), +// ((id_rt_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_wb_data, // Forward from MEM +// ((id_rt_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // Forward from WB +// ) +// ) + +// val id_imm_i = id_inst(15, 0) +// val id_imm_i_sext = Cat(Fill(16, id_imm_i(15)), id_imm_i) +// val id_imm_j = Cat(id_inst(25, 0), Fill(2, 0.U(1.W))) + +// val csignals = ListLookup( +// id_inst, +// List(ALU_X, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_X), +// Array( +// LW -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_MEM), +// SW -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_S, REN_X, WB_X), +// ADD -> List(ALU_ADD, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// ADDI -> List(ALU_ADD, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_ALU), +// SUB -> List(ALU_SUB, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// AND -> List(ALU_AND, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// OR -> List(ALU_OR, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// XOR -> List(ALU_XOR, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// ANDI -> List(ALU_AND, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_ALU), +// ORI -> List(ALU_OR, OP1_RS1, OP2_IMI, MEN_X, REN_S, WB_ALU), +// SLT -> List(ALU_SLT, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// BEQ -> List(BR_BEQ, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_X), +// BNE -> List(BR_BNE, OP1_RS1, OP2_RS2, MEN_X, REN_X, WB_X), +// SLL -> List(ALU_SLL, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// SRL -> List(ALU_SRL, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// SRA -> List(ALU_SRA, OP1_RS1, OP2_RS2, MEN_X, REN_S, WB_ALU), +// JAL -> List(ALU_ADD, OP1_PC, OP2_IMJ, MEN_X, REN_S, WB_PC), +// JR -> List(ALU_COPY1, OP1_RS1, OP2_X, MEN_X, REN_X, WB_X) +// ) +// ) + +// val id_exe_fun :: id_op1_sel :: id_op2_sel :: id_mem_wen :: id_rf_wen :: id_wb_sel :: Nil = +// csignals + +// val id_op1_data = MuxCase( +// 0.U(WORD_LEN.W), +// Seq( +// (id_op1_sel === OP1_RS1) -> id_rs_data, +// (id_op1_sel === OP1_PC) -> id_reg_pc +// ) +// ) + +// val id_op2_data = MuxCase( +// 0.U(WORD_LEN.W), +// Seq( +// (id_op2_sel === OP2_RS2) -> id_rt_data, +// (id_op2_sel === OP2_IMI) -> id_imm_i_sext, +// (id_op2_sel === OP2_IMJ) -> id_imm_j +// ) +// ) + +// // ********* Decode/Execute (ID/EX) Stage ********* +// exe_reg_pc := id_reg_pc +// exe_reg_op1_data := id_op1_data +// exe_reg_op2_data := id_op2_data +// exe_reg_rt_data := id_rt_data +// exe_reg_wb_addr := MuxCase( +// id_rt_addr, +// Seq( +// (id_wb_sel === WB_ALU && id_inst( +// 31, +// 26 +// ) === "b000000".U) -> id_rd_addr, // R-type +// (id_inst === JAL) -> 31.U +// ) +// ) +// exe_reg_wb_sel := id_wb_sel +// exe_reg_mem_wen := id_mem_wen +// exe_reg_rf_wen := id_rf_wen +// exe_reg_imm_i_sext := id_imm_i_sext +// exe_reg_imm_j := id_imm_j +// exe_reg_exe_fun := id_exe_fun + +// // ********* Execute (EX) Stage ********* +// exe_alu_out := MuxCase( +// 0.U(WORD_LEN.W), +// Seq( +// (exe_reg_exe_fun === ALU_ADD) -> (exe_reg_op1_data + exe_reg_op2_data), +// (exe_reg_exe_fun === ALU_SUB) -> (exe_reg_op1_data - exe_reg_op2_data), +// (exe_reg_exe_fun === ALU_AND) -> (exe_reg_op1_data & exe_reg_op2_data), +// (exe_reg_exe_fun === ALU_OR) -> (exe_reg_op1_data | exe_reg_op2_data), +// (exe_reg_exe_fun === ALU_XOR) -> (exe_reg_op1_data ^ exe_reg_op2_data), +// (exe_reg_exe_fun === ALU_SLL) -> (exe_reg_op1_data << exe_reg_op2_data( +// 4, +// 0 +// ))(31, 0), +// (exe_reg_exe_fun === ALU_SRL) -> (exe_reg_op1_data >> exe_reg_op2_data( +// 4, +// 0 +// )).asUInt, +// (exe_reg_exe_fun === ALU_SRA) -> (exe_reg_op1_data.asSInt >> exe_reg_op2_data( +// 4, +// 0 +// )).asUInt, +// (exe_reg_exe_fun === ALU_SLT) -> (exe_reg_op1_data.asSInt < exe_reg_op2_data.asSInt).asUInt, +// (exe_reg_exe_fun === ALU_COPY1) -> exe_reg_op1_data +// ) +// ) + +// exe_br_flg := MuxCase( +// false.B, +// Seq( +// (exe_reg_exe_fun === BR_BEQ) -> (exe_reg_op1_data === exe_reg_op2_data), +// (exe_reg_exe_fun === BR_BNE) -> !(exe_reg_op1_data === exe_reg_op2_data) +// ) +// ) + +// exe_br_target := exe_reg_pc + (exe_reg_imm_i_sext << 2.U(5.W)) +// exe_jmp_flg := (exe_reg_wb_sel === WB_PC) + +// // ********* Execute/Memory (EX/MEM) Stage ********* +// mem_reg_pc := exe_reg_pc +// mem_reg_rt_data := exe_reg_rt_data +// mem_reg_wb_addr := exe_reg_wb_addr +// mem_reg_alu_out := exe_alu_out +// mem_reg_rf_wen := exe_reg_rf_wen +// mem_reg_wb_sel := exe_reg_wb_sel +// mem_reg_mem_wen := exe_reg_mem_wen + +// // ********* Memory (MEM) Stage ********* +// io.dmem.addr := mem_reg_alu_out +// io.dmem.wen := mem_reg_mem_wen +// io.dmem.wdata := mem_reg_rt_data + +// mem_wb_data := MuxCase( +// mem_reg_alu_out, +// Seq( +// (mem_reg_wb_sel === WB_MEM) -> io.dmem.rdata, +// (mem_reg_wb_sel === WB_PC) -> (mem_reg_pc + 4.U(WORD_LEN.W)) +// ) +// ) + +// // ********* Memory/Write Back (MEM/WB) Stage ********* +// wb_reg_wb_data := mem_wb_data +// wb_reg_rf_wen := mem_reg_rf_wen +// wb_reg_wb_addr := mem_reg_wb_addr + +// // ********* Write Back (WB) Stage ********* +// when(wb_reg_rf_wen === REN_S && wb_reg_wb_addr =/= 0.U) { +// regfile(wb_reg_wb_addr) := wb_reg_wb_data +// } + +// io.exit := (id_reg_inst === UNIMP) + +// // ********* Debugging ********* +// printf(p"---------------\n") +// printf(p"if_reg_pc: 0x${Hexadecimal(if_reg_pc)}\n") +// printf(p"id_reg_pc: 0x${Hexadecimal(id_reg_pc)}\n") +// printf(p"id_reg_inst: 0x${Hexadecimal(id_reg_inst)}\n") +// printf(p"id_inst: 0x${Hexadecimal(id_inst)}\n") +// printf(p"id_rs_data: 0x${Hexadecimal(id_rs_data)}\n") +// printf(p"id_rt_data: 0x${Hexadecimal(id_rt_data)}\n") +// printf(p"exe_br_flg: 0x${Hexadecimal(exe_br_flg)}\n") +// printf(p"exe_jmp_flg: 0x${Hexadecimal(exe_jmp_flg)}\n") +// printf(p"stall_flg: 0x${Hexadecimal(stall_flg)}\n") +// printf(p"exe_reg_pc: 0x${Hexadecimal(exe_reg_pc)}\n") +// printf(p"exe_reg_op1_data: 0x${Hexadecimal(exe_reg_op1_data)}\n") +// printf(p"exe_reg_op2_data: 0x${Hexadecimal(exe_reg_op2_data)}\n") +// printf(p"exe_alu_out: 0x${Hexadecimal(exe_alu_out)}\n") +// printf(p"mem_reg_pc: 0x${Hexadecimal(mem_reg_pc)}\n") +// printf(p"mem_wb_data: 0x${Hexadecimal(mem_wb_data)}\n") +// printf(p"wb_reg_wb_data: 0x${Hexadecimal(wb_reg_wb_data)}\n") +// printf(p"---------------\n") +// } diff --git a/src/main/scala/micore/Memory.scala b/src/main/scala/micore/Memory.scala index 40d003d..aaf7b97 100755 --- a/src/main/scala/micore/Memory.scala +++ b/src/main/scala/micore/Memory.scala @@ -5,15 +5,11 @@ import chisel3.util._ import common.Consts._ import chisel3.util.experimental.loadMemoryFromFileInline -/** 表示一个指令内存端口接口的类 - */ class ImemPortIo extends Bundle { val addr = Input(UInt(WORD_LEN.W)) val inst = Output(UInt(WORD_LEN.W)) } -/** 表示一个数据内存端口接口的类 - */ class DmemPortIo extends Bundle { val addr = Input(UInt(WORD_LEN.W)) val rdata = Output(UInt(WORD_LEN.W)) @@ -27,13 +23,10 @@ class Memory extends Module { val dmem = new DmemPortIo() }) - // 生成八位宽x4096(4KB)寄存器的存储器。 val mem = Mem(4096, UInt(8.W)) - // 加载存储器的初始值。 loadMemoryFromFileInline(mem, "src/hex/mem.hex") - // 连接四个地址存储的八位数据形成一个32位的指令。 io.imem.inst := Cat( mem(io.imem.addr + 3.U(WORD_LEN.W)), mem(io.imem.addr + 2.U(WORD_LEN.W)), @@ -41,7 +34,6 @@ class Memory extends Module { mem(io.imem.addr) ) - // 连接四个地址存储的八位数据形成一个32位的数据。 io.dmem.rdata := Cat( mem(io.dmem.addr + 3.U(WORD_LEN.W)), mem(io.dmem.addr + 2.U(WORD_LEN.W)), @@ -49,7 +41,6 @@ class Memory extends Module { mem(io.dmem.addr) ) - // 写数据到存储器。 when(io.dmem.wen) { mem(io.dmem.addr) := io.dmem.wdata(7, 0) mem(io.dmem.addr + 1.U(WORD_LEN.W)) := io.dmem.wdata(15, 8) diff --git a/target/scala-2.13/zinc/inc_compile_2.13.zip b/target/scala-2.13/zinc/inc_compile_2.13.zip index ab2e92457e34098c4dd6081eac275feeefe7a1ad..d09a03b19f3dface2c8a7f58af4c3883ce55d668 100644 GIT binary patch literal 21767 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 J2V4C+`X7ds7j*yt literal 21895 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 p_zNpjL>LK*+L2gu3zXHK?aw?+B{y6hTK=m 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 ZwEv$HPD>T@`M);kPc!Igy#W8a`yYNcpQQi* diff --git a/target/streams/compile/compileIncremental/_global/streams/out b/target/streams/compile/compileIncremental/_global/streams/out index 1af0b06..599b2be 100755 --- a/target/streams/compile/compileIncremental/_global/streams/out +++ b/target/streams/compile/compileIncremental/_global/streams/out @@ -22,7 +22,7 @@ [debug] compilation cycle 1 [info] compiling 1 Scala source to /home/gh0s7/project/ddca/micore/target/scala-2.13/classes ... [debug] Returning already retrieved and compiled bridge: /home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala2-sbt-bridge/2.13.12/scala2-sbt-bridge-2.13.12.jar. -[debug] [zinc] Running cached compiler 26d066fe for Scala compiler version 2.13.12 +[debug] [zinc] Running cached compiler 205a4be3 for Scala compiler version 2.13.12 [debug] [zinc] The Scala compiler is invoked with: [debug]  -language:reflectiveCalls [debug]  -deprecation @@ -40,5 +40,5 @@ [debug] Final step, transitive dependencies: [debug]  Set() [debug] No classes were invalidated. -[debug] Scala compilation took 3.12228093 s +[debug] Scala compilation took 3.173580205 s [debug] done compiling diff --git a/test_run_dir/Micore_should_run_the_C_program/TopOrigin.lo.fir b/test_run_dir/Micore_should_run_the_C_program/TopOrigin.lo.fir index b40fce7..878b1f0 100755 --- a/test_run_dir/Micore_should_run_the_C_program/TopOrigin.lo.fir +++ b/test_run_dir/Micore_should_run_the_C_program/TopOrigin.lo.fir @@ -16,8 +16,8 @@ circuit TopOrigin : depth => 32 read-latency => 0 write-latency => 1 - reader => id_rs1_data_MPORT - reader => id_rs2_data_MPORT + reader => id_rs_data_MPORT + reader => id_rt_data_MPORT writer => MPORT read-under-write => undefined reg id_reg_pc : UInt<32>, clock with : @@ -32,183 +32,151 @@ circuit TopOrigin : reset => (UInt<1>("h0"), exe_reg_op1_data) @[src/main/scala/micore/Core.scala 25:33] reg exe_reg_op2_data : UInt<32>, clock with : reset => (UInt<1>("h0"), exe_reg_op2_data) @[src/main/scala/micore/Core.scala 26:33] - reg exe_reg_rs2_data : UInt<32>, clock with : - reset => (UInt<1>("h0"), exe_reg_rs2_data) @[src/main/scala/micore/Core.scala 27:33] + reg exe_reg_rs_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_rs_data) @[src/main/scala/micore/Core.scala 27:32] + reg exe_reg_rt_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_rt_data) @[src/main/scala/micore/Core.scala 28:32] reg exe_reg_exe_fun : UInt<5>, clock with : - reset => (UInt<1>("h0"), exe_reg_exe_fun) @[src/main/scala/micore/Core.scala 28:32] + reset => (UInt<1>("h0"), exe_reg_exe_fun) @[src/main/scala/micore/Core.scala 29:32] reg exe_reg_mem_wen : UInt<2>, clock with : - reset => (UInt<1>("h0"), exe_reg_mem_wen) @[src/main/scala/micore/Core.scala 29:32] + reset => (UInt<1>("h0"), exe_reg_mem_wen) @[src/main/scala/micore/Core.scala 30:32] reg exe_reg_rf_wen : UInt<2>, clock with : - reset => (UInt<1>("h0"), exe_reg_rf_wen) @[src/main/scala/micore/Core.scala 30:31] + reset => (UInt<1>("h0"), exe_reg_rf_wen) @[src/main/scala/micore/Core.scala 31:31] reg exe_reg_wb_sel : UInt<3>, clock with : - reset => (UInt<1>("h0"), exe_reg_wb_sel) @[src/main/scala/micore/Core.scala 31:31] + reset => (UInt<1>("h0"), exe_reg_wb_sel) @[src/main/scala/micore/Core.scala 32:31] reg exe_reg_imm_i_sext : UInt<32>, clock with : - reset => (UInt<1>("h0"), exe_reg_imm_i_sext) @[src/main/scala/micore/Core.scala 32:35] - reg exe_reg_imm_s_sext : UInt<32>, clock with : - reset => (UInt<1>("h0"), exe_reg_imm_s_sext) @[src/main/scala/micore/Core.scala 33:35] - reg exe_reg_imm_b_sext : UInt<32>, clock with : - reset => (UInt<1>("h0"), exe_reg_imm_b_sext) @[src/main/scala/micore/Core.scala 34:35] - reg exe_reg_imm_u_shifted : UInt<32>, clock with : - reset => (UInt<1>("h0"), exe_reg_imm_u_shifted) @[src/main/scala/micore/Core.scala 35:38] + reset => (UInt<1>("h0"), exe_reg_imm_i_sext) @[src/main/scala/micore/Core.scala 33:35] + reg exe_reg_imm_j : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_imm_j) @[src/main/scala/micore/Core.scala 34:30] reg mem_reg_pc : UInt<32>, clock with : - reset => (UInt<1>("h0"), mem_reg_pc) @[src/main/scala/micore/Core.scala 38:27] + reset => (UInt<1>("h0"), mem_reg_pc) @[src/main/scala/micore/Core.scala 37:27] reg mem_reg_wb_addr : UInt<5>, clock with : - reset => (UInt<1>("h0"), mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 39:32] - reg mem_reg_op1_data : UInt<32>, clock with : - reset => (UInt<1>("h0"), mem_reg_op1_data) @[src/main/scala/micore/Core.scala 40:33] - reg mem_reg_rs2_data : UInt<32>, clock with : - reset => (UInt<1>("h0"), mem_reg_rs2_data) @[src/main/scala/micore/Core.scala 41:33] - reg mem_reg_mem_wen : UInt<2>, clock with : - reset => (UInt<1>("h0"), mem_reg_mem_wen) @[src/main/scala/micore/Core.scala 42:32] - reg mem_reg_rf_wen : UInt<2>, clock with : - reset => (UInt<1>("h0"), mem_reg_rf_wen) @[src/main/scala/micore/Core.scala 43:31] - reg mem_reg_wb_sel : UInt<3>, clock with : - reset => (UInt<1>("h0"), mem_reg_wb_sel) @[src/main/scala/micore/Core.scala 44:31] + reset => (UInt<1>("h0"), mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 38:32] reg mem_reg_alu_out : UInt<32>, clock with : - reset => (UInt<1>("h0"), mem_reg_alu_out) @[src/main/scala/micore/Core.scala 45:32] + reset => (UInt<1>("h0"), mem_reg_alu_out) @[src/main/scala/micore/Core.scala 39:32] + reg mem_reg_rt_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), mem_reg_rt_data) @[src/main/scala/micore/Core.scala 40:32] + reg mem_reg_mem_wen : UInt<2>, clock with : + reset => (UInt<1>("h0"), mem_reg_mem_wen) @[src/main/scala/micore/Core.scala 41:32] + reg mem_reg_rf_wen : UInt<2>, clock with : + reset => (UInt<1>("h0"), mem_reg_rf_wen) @[src/main/scala/micore/Core.scala 42:31] + reg mem_reg_wb_sel : UInt<3>, clock with : + reset => (UInt<1>("h0"), mem_reg_wb_sel) @[src/main/scala/micore/Core.scala 43:31] reg wb_reg_wb_addr : UInt<5>, clock with : - reset => (UInt<1>("h0"), wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 48:31] + reset => (UInt<1>("h0"), wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 46:31] reg wb_reg_rf_wen : UInt<2>, clock with : - reset => (UInt<1>("h0"), wb_reg_rf_wen) @[src/main/scala/micore/Core.scala 49:30] + reset => (UInt<1>("h0"), wb_reg_rf_wen) @[src/main/scala/micore/Core.scala 47:30] reg wb_reg_wb_data : UInt<32>, clock with : - reset => (UInt<1>("h0"), wb_reg_wb_data) @[src/main/scala/micore/Core.scala 50:31] + reset => (UInt<1>("h0"), wb_reg_wb_data) @[src/main/scala/micore/Core.scala 48:31] reg if_reg_pc : UInt<32>, clock with : - reset => (UInt<1>("h0"), if_reg_pc) @[src/main/scala/micore/Core.scala 53:26] - node _if_pc_plus4_T = add(if_reg_pc, UInt<32>("h4")) @[src/main/scala/micore/Core.scala 63:31] - node if_pc_plus4 = tail(_if_pc_plus4_T, 1) @[src/main/scala/micore/Core.scala 63:31] - node _id_rs1_data_hazard_T = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 90:21] - node id_rs1_addr_b = bits(id_reg_inst, 25, 21) @[src/main/scala/micore/Core.scala 85:34] - node _id_rs1_data_hazard_T_1 = neq(id_rs1_addr_b, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 90:50] - node _id_rs1_data_hazard_T_2 = and(_id_rs1_data_hazard_T, _id_rs1_data_hazard_T_1) @[src/main/scala/micore/Core.scala 90:32] - node _id_rs1_data_hazard_T_3 = eq(id_rs1_addr_b, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 90:77] - node id_rs1_data_hazard = and(_id_rs1_data_hazard_T_2, _id_rs1_data_hazard_T_3) @[src/main/scala/micore/Core.scala 90:59] - node _id_rs2_data_hazard_T = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 92:21] - node id_rs2_addr_b = bits(id_reg_inst, 20, 16) @[src/main/scala/micore/Core.scala 86:34] - node _id_rs2_data_hazard_T_1 = neq(id_rs2_addr_b, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 92:50] - node _id_rs2_data_hazard_T_2 = and(_id_rs2_data_hazard_T, _id_rs2_data_hazard_T_1) @[src/main/scala/micore/Core.scala 92:32] - node _id_rs2_data_hazard_T_3 = eq(id_rs2_addr_b, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 92:77] - node id_rs2_data_hazard = and(_id_rs2_data_hazard_T_2, _id_rs2_data_hazard_T_3) @[src/main/scala/micore/Core.scala 92:59] - node _stall_flg_T = or(id_rs1_data_hazard, id_rs2_data_hazard) @[src/main/scala/micore/Core.scala 93:36] - node stall_flg = _stall_flg_T @[src/main/scala/micore/Core.scala 57:23 93:13] + reset => (UInt<1>("h0"), if_reg_pc) @[src/main/scala/micore/Core.scala 51:26] + node _if_pc_plus4_T = add(if_reg_pc, UInt<32>("h4")) @[src/main/scala/micore/Core.scala 61:31] + node if_pc_plus4 = tail(_if_pc_plus4_T, 1) @[src/main/scala/micore/Core.scala 61:31] + node stall_flg = UInt<1>("h0") @[src/main/scala/micore/Core.scala 55:23 93:13] node _if_pc_next_T = mux(stall_flg, if_reg_pc, if_pc_plus4) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_jmp_flg_T = eq(exe_reg_wb_sel, UInt<3>("h3")) @[src/main/scala/micore/Core.scala 243:34] - node exe_jmp_flg = _exe_jmp_flg_T @[src/main/scala/micore/Core.scala 243:15 60:25] - node _exe_alu_out_T = eq(exe_reg_exe_fun, UInt<5>("h1")) @[src/main/scala/micore/Core.scala 211:24] - node _exe_alu_out_T_1 = add(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 211:58] - node _exe_alu_out_T_2 = tail(_exe_alu_out_T_1, 1) @[src/main/scala/micore/Core.scala 211:58] - node _exe_alu_out_T_3 = eq(exe_reg_exe_fun, UInt<5>("h2")) @[src/main/scala/micore/Core.scala 212:24] - node _exe_alu_out_T_4 = sub(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 212:58] - node _exe_alu_out_T_5 = tail(_exe_alu_out_T_4, 1) @[src/main/scala/micore/Core.scala 212:58] - node _exe_alu_out_T_6 = eq(exe_reg_exe_fun, UInt<5>("h3")) @[src/main/scala/micore/Core.scala 213:24] - node _exe_alu_out_T_7 = and(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 213:58] - node _exe_alu_out_T_8 = eq(exe_reg_exe_fun, UInt<5>("h4")) @[src/main/scala/micore/Core.scala 214:24] - node _exe_alu_out_T_9 = or(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 214:57] - node _exe_alu_out_T_10 = eq(exe_reg_exe_fun, UInt<5>("h5")) @[src/main/scala/micore/Core.scala 215:24] - node _exe_alu_out_T_11 = xor(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 215:58] - node _exe_alu_out_T_12 = eq(exe_reg_exe_fun, UInt<5>("h6")) @[src/main/scala/micore/Core.scala 216:24] - node _exe_alu_out_T_13 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 216:77] - node _exe_alu_out_T_14 = dshl(exe_reg_op1_data, _exe_alu_out_T_13) @[src/main/scala/micore/Core.scala 216:58] - node _exe_alu_out_T_15 = bits(_exe_alu_out_T_14, 31, 0) @[src/main/scala/micore/Core.scala 219:9] - node _exe_alu_out_T_16 = eq(exe_reg_exe_fun, UInt<5>("h7")) @[src/main/scala/micore/Core.scala 220:24] - node _exe_alu_out_T_17 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 220:77] - node _exe_alu_out_T_18 = dshr(exe_reg_op1_data, _exe_alu_out_T_17) @[src/main/scala/micore/Core.scala 220:58] - node _exe_alu_out_T_19 = eq(exe_reg_exe_fun, UInt<5>("h8")) @[src/main/scala/micore/Core.scala 224:24] - node _exe_alu_out_T_20 = asSInt(exe_reg_op1_data) @[src/main/scala/micore/Core.scala 224:58] - node _exe_alu_out_T_21 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 224:84] - node _exe_alu_out_T_22 = dshr(_exe_alu_out_T_20, _exe_alu_out_T_21) @[src/main/scala/micore/Core.scala 224:65] - node _exe_alu_out_T_23 = asUInt(_exe_alu_out_T_22) @[src/main/scala/micore/Core.scala 227:10] - node _exe_alu_out_T_24 = eq(exe_reg_exe_fun, UInt<5>("h9")) @[src/main/scala/micore/Core.scala 228:24] - node _exe_alu_out_T_25 = asSInt(exe_reg_op1_data) @[src/main/scala/micore/Core.scala 228:58] - node _exe_alu_out_T_26 = asSInt(exe_reg_op2_data) @[src/main/scala/micore/Core.scala 228:84] - node _exe_alu_out_T_27 = lt(_exe_alu_out_T_25, _exe_alu_out_T_26) @[src/main/scala/micore/Core.scala 228:65] - node _exe_alu_out_T_28 = eq(exe_reg_exe_fun, UInt<5>("ha")) @[src/main/scala/micore/Core.scala 229:24] - node _exe_alu_out_T_29 = lt(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 229:59] - node _exe_alu_out_T_30 = mux(_exe_alu_out_T_28, _exe_alu_out_T_29, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_31 = mux(_exe_alu_out_T_24, _exe_alu_out_T_27, _exe_alu_out_T_30) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_32 = mux(_exe_alu_out_T_19, _exe_alu_out_T_23, _exe_alu_out_T_31) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_33 = mux(_exe_alu_out_T_16, _exe_alu_out_T_18, _exe_alu_out_T_32) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_34 = mux(_exe_alu_out_T_12, _exe_alu_out_T_15, _exe_alu_out_T_33) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_35 = mux(_exe_alu_out_T_10, _exe_alu_out_T_11, _exe_alu_out_T_34) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_36 = mux(_exe_alu_out_T_8, _exe_alu_out_T_9, _exe_alu_out_T_35) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_37 = mux(_exe_alu_out_T_6, _exe_alu_out_T_7, _exe_alu_out_T_36) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_38 = mux(_exe_alu_out_T_3, _exe_alu_out_T_5, _exe_alu_out_T_37) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_alu_out_T_39 = mux(_exe_alu_out_T, _exe_alu_out_T_2, _exe_alu_out_T_38) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node exe_alu_out = _exe_alu_out_T_39 @[src/main/scala/micore/Core.scala 208:15 61:25] + node _exe_jmp_flg_T = eq(exe_reg_wb_sel, UInt<3>("h3")) @[src/main/scala/micore/Core.scala 222:34] + node exe_jmp_flg = _exe_jmp_flg_T @[src/main/scala/micore/Core.scala 222:15 58:25] + node _exe_alu_out_T = eq(exe_reg_exe_fun, UInt<5>("h1")) @[src/main/scala/micore/Core.scala 191:24] + node _exe_alu_out_T_1 = add(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 191:58] + node _exe_alu_out_T_2 = tail(_exe_alu_out_T_1, 1) @[src/main/scala/micore/Core.scala 191:58] + node _exe_alu_out_T_3 = eq(exe_reg_exe_fun, UInt<5>("h2")) @[src/main/scala/micore/Core.scala 192:24] + node _exe_alu_out_T_4 = sub(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 192:58] + node _exe_alu_out_T_5 = tail(_exe_alu_out_T_4, 1) @[src/main/scala/micore/Core.scala 192:58] + node _exe_alu_out_T_6 = eq(exe_reg_exe_fun, UInt<5>("h3")) @[src/main/scala/micore/Core.scala 193:24] + node _exe_alu_out_T_7 = and(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 193:58] + node _exe_alu_out_T_8 = eq(exe_reg_exe_fun, UInt<5>("h4")) @[src/main/scala/micore/Core.scala 194:24] + node _exe_alu_out_T_9 = or(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 194:57] + node _exe_alu_out_T_10 = eq(exe_reg_exe_fun, UInt<5>("h5")) @[src/main/scala/micore/Core.scala 195:24] + node _exe_alu_out_T_11 = xor(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 195:58] + node _exe_alu_out_T_12 = eq(exe_reg_exe_fun, UInt<5>("h6")) @[src/main/scala/micore/Core.scala 196:24] + node _exe_alu_out_T_13 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 196:77] + node _exe_alu_out_T_14 = dshl(exe_reg_op1_data, _exe_alu_out_T_13) @[src/main/scala/micore/Core.scala 196:58] + node _exe_alu_out_T_15 = bits(_exe_alu_out_T_14, 31, 0) @[src/main/scala/micore/Core.scala 199:9] + node _exe_alu_out_T_16 = eq(exe_reg_exe_fun, UInt<5>("h7")) @[src/main/scala/micore/Core.scala 200:24] + node _exe_alu_out_T_17 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 200:77] + node _exe_alu_out_T_18 = dshr(exe_reg_op1_data, _exe_alu_out_T_17) @[src/main/scala/micore/Core.scala 200:58] + node _exe_alu_out_T_19 = eq(exe_reg_exe_fun, UInt<5>("h8")) @[src/main/scala/micore/Core.scala 204:24] + node _exe_alu_out_T_20 = asSInt(exe_reg_op1_data) @[src/main/scala/micore/Core.scala 204:58] + node _exe_alu_out_T_21 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 204:84] + node _exe_alu_out_T_22 = dshr(_exe_alu_out_T_20, _exe_alu_out_T_21) @[src/main/scala/micore/Core.scala 204:65] + node _exe_alu_out_T_23 = asUInt(_exe_alu_out_T_22) @[src/main/scala/micore/Core.scala 207:10] + node _exe_alu_out_T_24 = eq(exe_reg_exe_fun, UInt<5>("h9")) @[src/main/scala/micore/Core.scala 208:24] + node _exe_alu_out_T_25 = asSInt(exe_reg_op1_data) @[src/main/scala/micore/Core.scala 208:58] + node _exe_alu_out_T_26 = asSInt(exe_reg_op2_data) @[src/main/scala/micore/Core.scala 208:84] + node _exe_alu_out_T_27 = lt(_exe_alu_out_T_25, _exe_alu_out_T_26) @[src/main/scala/micore/Core.scala 208:65] + node _exe_alu_out_T_28 = eq(exe_reg_exe_fun, UInt<5>("hd")) @[src/main/scala/micore/Core.scala 209:24] + node _exe_alu_out_T_29 = mux(_exe_alu_out_T_28, exe_reg_op1_data, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_30 = mux(_exe_alu_out_T_24, _exe_alu_out_T_27, _exe_alu_out_T_29) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_31 = mux(_exe_alu_out_T_19, _exe_alu_out_T_23, _exe_alu_out_T_30) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_32 = mux(_exe_alu_out_T_16, _exe_alu_out_T_18, _exe_alu_out_T_31) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_33 = mux(_exe_alu_out_T_12, _exe_alu_out_T_15, _exe_alu_out_T_32) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_34 = mux(_exe_alu_out_T_10, _exe_alu_out_T_11, _exe_alu_out_T_33) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_35 = mux(_exe_alu_out_T_8, _exe_alu_out_T_9, _exe_alu_out_T_34) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_36 = mux(_exe_alu_out_T_6, _exe_alu_out_T_7, _exe_alu_out_T_35) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_37 = mux(_exe_alu_out_T_3, _exe_alu_out_T_5, _exe_alu_out_T_36) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_38 = mux(_exe_alu_out_T, _exe_alu_out_T_2, _exe_alu_out_T_37) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node exe_alu_out = _exe_alu_out_T_38 @[src/main/scala/micore/Core.scala 188:15 59:25] node _if_pc_next_T_1 = mux(exe_jmp_flg, exe_alu_out, _if_pc_next_T) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _exe_br_flg_T = eq(exe_reg_exe_fun, UInt<5>("hb")) @[src/main/scala/micore/Core.scala 236:24] - node _exe_br_flg_T_1 = eq(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 236:57] - node _exe_br_flg_T_2 = eq(exe_reg_exe_fun, UInt<5>("hc")) @[src/main/scala/micore/Core.scala 237:24] - node _exe_br_flg_T_3 = eq(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 237:58] - node _exe_br_flg_T_4 = eq(_exe_br_flg_T_3, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 237:39] + node _exe_br_flg_T = eq(exe_reg_exe_fun, UInt<5>("hb")) @[src/main/scala/micore/Core.scala 216:24] + node _exe_br_flg_T_1 = eq(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 216:57] + node _exe_br_flg_T_2 = eq(exe_reg_exe_fun, UInt<5>("hc")) @[src/main/scala/micore/Core.scala 217:24] + node _exe_br_flg_T_3 = eq(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 217:58] + node _exe_br_flg_T_4 = eq(_exe_br_flg_T_3, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 217:39] node _exe_br_flg_T_5 = mux(_exe_br_flg_T_2, _exe_br_flg_T_4, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _exe_br_flg_T_6 = mux(_exe_br_flg_T, _exe_br_flg_T_1, _exe_br_flg_T_5) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node exe_br_flg = _exe_br_flg_T_6 @[src/main/scala/micore/Core.scala 233:14 58:24] - node _exe_br_target_T = add(exe_reg_pc, exe_reg_imm_b_sext) @[src/main/scala/micore/Core.scala 241:31] - node _exe_br_target_T_1 = tail(_exe_br_target_T, 1) @[src/main/scala/micore/Core.scala 241:31] - node exe_br_target = _exe_br_target_T_1 @[src/main/scala/micore/Core.scala 241:17 59:27] + node exe_br_flg = _exe_br_flg_T_6 @[src/main/scala/micore/Core.scala 213:14 56:24] + node _exe_br_target_T = dshl(exe_reg_imm_i_sext, UInt<5>("h2")) @[src/main/scala/micore/Core.scala 221:53] + node _exe_br_target_T_1 = add(exe_reg_pc, _exe_br_target_T) @[src/main/scala/micore/Core.scala 221:31] + node _exe_br_target_T_2 = tail(_exe_br_target_T_1, 1) @[src/main/scala/micore/Core.scala 221:31] + node exe_br_target = bits(_exe_br_target_T_2, 31, 0) @[src/main/scala/micore/Core.scala 221:17 57:27] node if_pc_next = mux(exe_br_flg, exe_br_target, _if_pc_next_T_1) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_reg_pc_T = mux(stall_flg, id_reg_pc, if_reg_pc) @[src/main/scala/micore/Core.scala 75:19] - node _id_reg_inst_T = or(exe_br_flg, exe_jmp_flg) @[src/main/scala/micore/Core.scala 79:19] + node _id_reg_pc_T = mux(stall_flg, id_reg_pc, if_reg_pc) @[src/main/scala/micore/Core.scala 73:19] + node _id_reg_inst_T = or(exe_br_flg, exe_jmp_flg) @[src/main/scala/micore/Core.scala 77:19] node _id_reg_inst_T_1 = mux(stall_flg, id_reg_inst, io_imem_inst) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_reg_inst_T_2 = mux(_id_reg_inst_T, UInt<32>("h20000000"), _id_reg_inst_T_1) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_reg_inst_T_2 = mux(_id_reg_inst_T, UInt<32>("h20090000"), _id_reg_inst_T_1) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_rs_addr = bits(id_reg_inst, 25, 21) @[src/main/scala/micore/Core.scala 83:31] + node id_rt_addr = bits(id_reg_inst, 20, 16) @[src/main/scala/micore/Core.scala 84:31] + node id_rd_addr = bits(id_reg_inst, 15, 11) @[src/main/scala/micore/Core.scala 85:31] + node _id_rs_data_hazard_T = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 89:21] + node _id_rs_data_hazard_T_1 = neq(id_rs_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 89:47] + node _id_rs_data_hazard_T_2 = and(_id_rs_data_hazard_T, _id_rs_data_hazard_T_1) @[src/main/scala/micore/Core.scala 89:32] + node _id_rs_data_hazard_T_3 = eq(id_rs_addr, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 89:71] + node id_rs_data_hazard = and(_id_rs_data_hazard_T_2, _id_rs_data_hazard_T_3) @[src/main/scala/micore/Core.scala 89:56] + node _id_rt_data_hazard_T = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 91:21] + node _id_rt_data_hazard_T_1 = neq(id_rt_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 91:47] + node _id_rt_data_hazard_T_2 = and(_id_rt_data_hazard_T, _id_rt_data_hazard_T_1) @[src/main/scala/micore/Core.scala 91:32] + node _id_rt_data_hazard_T_3 = eq(id_rt_addr, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 91:71] + node id_rt_data_hazard = and(_id_rt_data_hazard_T_2, _id_rt_data_hazard_T_3) @[src/main/scala/micore/Core.scala 91:56] node _id_inst_T = or(exe_br_flg, exe_jmp_flg) @[src/main/scala/micore/Core.scala 96:21] node _id_inst_T_1 = or(_id_inst_T, stall_flg) @[src/main/scala/micore/Core.scala 96:36] - node id_inst = mux(_id_inst_T_1, UInt<32>("h20000000"), id_reg_inst) @[src/main/scala/micore/Core.scala 96:8] - node id_rs1_addr = bits(id_inst, 25, 21) @[src/main/scala/micore/Core.scala 98:28] - node id_rs2_addr = bits(id_inst, 20, 16) @[src/main/scala/micore/Core.scala 99:28] - node _id_wb_addr_T = bits(id_inst, 20, 16) @[src/main/scala/micore/Core.scala 102:12] - node _id_wb_addr_T_1 = bits(id_inst, 31, 26) @[src/main/scala/micore/Core.scala 104:15] - node _id_wb_addr_T_2 = eq(_id_wb_addr_T_1, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 104:24] - node _id_wb_addr_T_3 = bits(id_inst, 15, 11) @[src/main/scala/micore/Core.scala 104:51] - node _id_wb_addr_T_4 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/micore/Core.scala 108:16] - node _id_wb_addr_T_5 = eq(UInt<28>("hc000000"), _id_wb_addr_T_4) @[src/main/scala/micore/Core.scala 108:16] - node _id_wb_addr_T_6 = mux(_id_wb_addr_T_5, UInt<5>("h1f"), _id_wb_addr_T) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node id_wb_addr = mux(_id_wb_addr_T_2, _id_wb_addr_T_3, _id_wb_addr_T_6) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_rs1_data_T = eq(id_rs1_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 116:20] - node _id_rs1_data_T_1 = eq(id_rs1_addr, mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 117:21] - node _id_rs1_data_T_2 = eq(mem_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 117:61] - node _id_rs1_data_T_3 = and(_id_rs1_data_T_1, _id_rs1_data_T_2) @[src/main/scala/micore/Core.scala 117:42] - node _id_rs1_data_T_4 = eq(id_rs1_addr, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 118:21] - node _id_rs1_data_T_5 = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 118:59] - node _id_rs1_data_T_6 = and(_id_rs1_data_T_4, _id_rs1_data_T_5) @[src/main/scala/micore/Core.scala 118:41] - node _id_rs1_data_T_7 = mux(_id_rs1_data_T_6, wb_reg_wb_data, regfile.id_rs1_data_MPORT.data) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _mem_wb_data_T = eq(mem_reg_wb_sel, UInt<3>("h2")) @[src/main/scala/micore/Core.scala 263:23] - node _mem_wb_data_T_1 = eq(mem_reg_wb_sel, UInt<3>("h3")) @[src/main/scala/micore/Core.scala 264:23] - node _mem_wb_data_T_2 = add(mem_reg_pc, UInt<32>("h4")) @[src/main/scala/micore/Core.scala 264:49] - node _mem_wb_data_T_3 = tail(_mem_wb_data_T_2, 1) @[src/main/scala/micore/Core.scala 264:49] - node _mem_wb_data_T_4 = mux(_mem_wb_data_T_1, _mem_wb_data_T_3, mem_reg_alu_out) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _mem_wb_data_T_5 = mux(_mem_wb_data_T, io_dmem_rdata, _mem_wb_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node mem_wb_data = _mem_wb_data_T_5 @[src/main/scala/micore/Core.scala 112:25 260:15] - node _id_rs1_data_T_8 = mux(_id_rs1_data_T_3, mem_wb_data, _id_rs1_data_T_7) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node id_rs1_data = mux(_id_rs1_data_T, UInt<32>("h0"), _id_rs1_data_T_8) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_rs2_data_T = eq(id_rs2_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 124:20] - node _id_rs2_data_T_1 = eq(id_rs2_addr, mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 125:21] - node _id_rs2_data_T_2 = eq(mem_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 125:61] - node _id_rs2_data_T_3 = and(_id_rs2_data_T_1, _id_rs2_data_T_2) @[src/main/scala/micore/Core.scala 125:42] - node _id_rs2_data_T_4 = eq(id_rs2_addr, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 126:21] - node _id_rs2_data_T_5 = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 126:59] - node _id_rs2_data_T_6 = and(_id_rs2_data_T_4, _id_rs2_data_T_5) @[src/main/scala/micore/Core.scala 126:41] - node _id_rs2_data_T_7 = mux(_id_rs2_data_T_6, wb_reg_wb_data, regfile.id_rs2_data_MPORT.data) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_rs2_data_T_8 = mux(_id_rs2_data_T_3, mem_wb_data, _id_rs2_data_T_7) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node id_rs2_data = mux(_id_rs2_data_T, UInt<32>("h0"), _id_rs2_data_T_8) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node id_imm_i = bits(id_inst, 15, 0) @[src/main/scala/micore/Core.scala 130:25] - node _id_imm_i_sext_T = bits(id_imm_i, 15, 15) @[src/main/scala/micore/Core.scala 131:44] - node _id_imm_i_sext_T_1 = mux(_id_imm_i_sext_T, UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/micore/Core.scala 131:31] - node id_imm_i_sext = cat(_id_imm_i_sext_T_1, id_imm_i) @[src/main/scala/micore/Core.scala 131:26] - node _id_imm_b_T = bits(id_inst, 15, 0) @[src/main/scala/micore/Core.scala 133:12] - node id_imm_b = cat(_id_imm_b_T, UInt<2>("h0")) @[src/main/scala/micore/Core.scala 132:21] - node _id_imm_b_sext_T = bits(id_imm_b, 17, 17) @[src/main/scala/micore/Core.scala 136:44] - node _id_imm_b_sext_T_1 = mux(_id_imm_b_sext_T, UInt<14>("h3fff"), UInt<14>("h0")) @[src/main/scala/micore/Core.scala 136:31] - node id_imm_b_sext = cat(_id_imm_b_sext_T_1, id_imm_b) @[src/main/scala/micore/Core.scala 136:26] - node _id_imm_j_T = bits(id_inst, 25, 0) @[src/main/scala/micore/Core.scala 138:12] - node id_imm_j = cat(_id_imm_j_T, UInt<2>("h0")) @[src/main/scala/micore/Core.scala 137:21] - node _id_imm_j_sext_T = bits(id_imm_j, 25, 25) @[src/main/scala/micore/Core.scala 141:43] - node _id_imm_j_sext_T_1 = mux(_id_imm_j_sext_T, UInt<6>("h3f"), UInt<6>("h0")) @[src/main/scala/micore/Core.scala 141:31] - node id_imm_j_sext = cat(_id_imm_j_sext_T_1, id_imm_j) @[src/main/scala/micore/Core.scala 141:26] - node id_imm_u = bits(id_inst, 15, 0) @[src/main/scala/micore/Core.scala 142:25] - node _id_imm_u_shifted_T = mux(UInt<1>("h0"), UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/micore/Core.scala 143:44] - node id_imm_u_shifted = cat(id_imm_u, _id_imm_u_shifted_T) @[src/main/scala/micore/Core.scala 143:29] - node id_imm_shamt = bits(id_inst, 10, 6) @[src/main/scala/micore/Core.scala 144:29] + node id_inst = mux(_id_inst_T_1, UInt<32>("h20090000"), id_reg_inst) @[src/main/scala/micore/Core.scala 96:8] + node _id_rs_data_T = eq(id_rs_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 101:19] + node _id_rs_data_T_1 = eq(id_rs_addr, mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 102:20] + node _id_rs_data_T_2 = eq(mem_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 102:60] + node _id_rs_data_T_3 = and(_id_rs_data_T_1, _id_rs_data_T_2) @[src/main/scala/micore/Core.scala 102:41] + node _id_rs_data_T_4 = eq(id_rs_addr, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 103:20] + node _id_rs_data_T_5 = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 103:58] + node _id_rs_data_T_6 = and(_id_rs_data_T_4, _id_rs_data_T_5) @[src/main/scala/micore/Core.scala 103:40] + node _id_rs_data_T_7 = mux(_id_rs_data_T_6, wb_reg_wb_data, regfile.id_rs_data_MPORT.data) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_rs_data_T_8 = mux(_id_rs_data_T_3, mem_reg_alu_out, _id_rs_data_T_7) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_rs_data = mux(_id_rs_data_T, UInt<32>("h0"), _id_rs_data_T_8) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_rt_data_T = eq(id_rt_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 109:19] + node _id_rt_data_T_1 = eq(id_rt_addr, mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 110:20] + node _id_rt_data_T_2 = eq(mem_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 110:60] + node _id_rt_data_T_3 = and(_id_rt_data_T_1, _id_rt_data_T_2) @[src/main/scala/micore/Core.scala 110:41] + node _id_rt_data_T_4 = eq(id_rt_addr, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 111:20] + node _id_rt_data_T_5 = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 111:58] + node _id_rt_data_T_6 = and(_id_rt_data_T_4, _id_rt_data_T_5) @[src/main/scala/micore/Core.scala 111:40] + node _id_rt_data_T_7 = mux(_id_rt_data_T_6, wb_reg_wb_data, regfile.id_rt_data_MPORT.data) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_rt_data_T_8 = mux(_id_rt_data_T_3, mem_reg_alu_out, _id_rt_data_T_7) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_rt_data = mux(_id_rt_data_T, UInt<32>("h0"), _id_rt_data_T_8) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_imm_i = bits(id_inst, 15, 0) @[src/main/scala/micore/Core.scala 115:25] + node _id_imm_i_sext_T = bits(id_imm_i, 15, 15) @[src/main/scala/micore/Core.scala 116:44] + node _id_imm_i_sext_T_1 = mux(_id_imm_i_sext_T, UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/micore/Core.scala 116:31] + node id_imm_i_sext = cat(_id_imm_i_sext_T_1, id_imm_i) @[src/main/scala/micore/Core.scala 116:26] + node _id_imm_j_T = bits(id_inst, 25, 0) @[src/main/scala/micore/Core.scala 117:29] + node _id_imm_j_T_1 = mux(UInt<1>("h0"), UInt<2>("h3"), UInt<2>("h0")) @[src/main/scala/micore/Core.scala 117:42] + node id_imm_j = cat(_id_imm_j_T, _id_imm_j_T_1) @[src/main/scala/micore/Core.scala 117:21] node _csignals_T = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] node _csignals_T_1 = eq(UInt<32>("h8c000000"), _csignals_T) @[src/main/scala/chisel3/util/Lookup.scala 31:38] node _csignals_T_2 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] @@ -241,256 +209,234 @@ circuit TopOrigin : node _csignals_T_29 = eq(UInt<2>("h2"), _csignals_T_28) @[src/main/scala/chisel3/util/Lookup.scala 31:38] node _csignals_T_30 = and(id_inst, UInt<32>("hffe0003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] node _csignals_T_31 = eq(UInt<2>("h3"), _csignals_T_30) @[src/main/scala/chisel3/util/Lookup.scala 31:38] - node _csignals_T_32 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] - node _csignals_T_33 = eq(UInt<4>("h8"), _csignals_T_32) @[src/main/scala/chisel3/util/Lookup.scala 31:38] - node _csignals_T_34 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] - node _csignals_T_35 = eq(UInt<28>("hc000000"), _csignals_T_34) @[src/main/scala/chisel3/util/Lookup.scala 31:38] - node _csignals_T_36 = and(id_inst, UInt<32>("hffffffff")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] - node _csignals_T_37 = eq(UInt<30>("h20000000"), _csignals_T_36) @[src/main/scala/chisel3/util/Lookup.scala 31:38] - node _csignals_T_38 = mux(_csignals_T_37, UInt<5>("h0"), UInt<5>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_39 = mux(_csignals_T_35, UInt<5>("h0"), _csignals_T_38) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_40 = mux(_csignals_T_33, UInt<5>("h0"), _csignals_T_39) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_41 = mux(_csignals_T_31, UInt<5>("h8"), _csignals_T_40) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_42 = mux(_csignals_T_29, UInt<5>("h7"), _csignals_T_41) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_43 = mux(_csignals_T_27, UInt<5>("h6"), _csignals_T_42) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_44 = mux(_csignals_T_25, UInt<5>("hc"), _csignals_T_43) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_45 = mux(_csignals_T_23, UInt<5>("hb"), _csignals_T_44) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_46 = mux(_csignals_T_21, UInt<5>("h9"), _csignals_T_45) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_47 = mux(_csignals_T_19, UInt<5>("h4"), _csignals_T_46) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_48 = mux(_csignals_T_17, UInt<5>("h3"), _csignals_T_47) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_49 = mux(_csignals_T_15, UInt<5>("h5"), _csignals_T_48) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_50 = mux(_csignals_T_13, UInt<5>("h4"), _csignals_T_49) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_51 = mux(_csignals_T_11, UInt<5>("h3"), _csignals_T_50) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_52 = mux(_csignals_T_9, UInt<5>("h2"), _csignals_T_51) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_53 = mux(_csignals_T_7, UInt<5>("h1"), _csignals_T_52) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_54 = mux(_csignals_T_5, UInt<5>("h1"), _csignals_T_53) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_55 = mux(_csignals_T_3, UInt<5>("h1"), _csignals_T_54) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node csignals_0 = mux(_csignals_T_1, UInt<5>("h1"), _csignals_T_55) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_56 = mux(_csignals_T_37, UInt<2>("h0"), UInt<2>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_57 = mux(_csignals_T_35, UInt<2>("h2"), _csignals_T_56) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_58 = mux(_csignals_T_33, UInt<2>("h1"), _csignals_T_57) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_59 = mux(_csignals_T_31, UInt<2>("h1"), _csignals_T_58) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_60 = mux(_csignals_T_29, UInt<2>("h1"), _csignals_T_59) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_61 = mux(_csignals_T_27, UInt<2>("h1"), _csignals_T_60) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_62 = mux(_csignals_T_25, UInt<2>("h1"), _csignals_T_61) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_63 = mux(_csignals_T_23, UInt<2>("h1"), _csignals_T_62) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_64 = mux(_csignals_T_21, UInt<2>("h1"), _csignals_T_63) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_65 = mux(_csignals_T_19, UInt<2>("h1"), _csignals_T_64) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_66 = mux(_csignals_T_17, UInt<2>("h1"), _csignals_T_65) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_67 = mux(_csignals_T_15, UInt<2>("h1"), _csignals_T_66) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_68 = mux(_csignals_T_13, UInt<2>("h1"), _csignals_T_67) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_69 = mux(_csignals_T_11, UInt<2>("h1"), _csignals_T_68) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_70 = mux(_csignals_T_9, UInt<2>("h1"), _csignals_T_69) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_71 = mux(_csignals_T_7, UInt<2>("h1"), _csignals_T_70) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_72 = mux(_csignals_T_5, UInt<2>("h1"), _csignals_T_71) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_73 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_72) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node csignals_1 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_73) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_74 = mux(_csignals_T_37, UInt<3>("h0"), UInt<3>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_75 = mux(_csignals_T_35, UInt<3>("h0"), _csignals_T_74) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_76 = mux(_csignals_T_33, UInt<3>("h0"), _csignals_T_75) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_77 = mux(_csignals_T_31, UInt<3>("h1"), _csignals_T_76) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_78 = mux(_csignals_T_29, UInt<3>("h1"), _csignals_T_77) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_79 = mux(_csignals_T_27, UInt<3>("h1"), _csignals_T_78) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_80 = mux(_csignals_T_25, UInt<3>("h1"), _csignals_T_79) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_81 = mux(_csignals_T_23, UInt<3>("h1"), _csignals_T_80) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_82 = mux(_csignals_T_21, UInt<3>("h1"), _csignals_T_81) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_83 = mux(_csignals_T_19, UInt<3>("h2"), _csignals_T_82) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_84 = mux(_csignals_T_17, UInt<3>("h2"), _csignals_T_83) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_85 = mux(_csignals_T_15, UInt<3>("h1"), _csignals_T_84) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_86 = mux(_csignals_T_13, UInt<3>("h1"), _csignals_T_85) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_87 = mux(_csignals_T_11, UInt<3>("h1"), _csignals_T_86) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_88 = mux(_csignals_T_9, UInt<3>("h1"), _csignals_T_87) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_89 = mux(_csignals_T_7, UInt<3>("h2"), _csignals_T_88) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_90 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_89) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_91 = mux(_csignals_T_3, UInt<3>("h2"), _csignals_T_90) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node csignals_2 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_91) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_92 = mux(_csignals_T_37, UInt<2>("h0"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_93 = mux(_csignals_T_35, UInt<2>("h0"), _csignals_T_92) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_94 = mux(_csignals_T_33, UInt<2>("h0"), _csignals_T_93) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_95 = mux(_csignals_T_31, UInt<2>("h0"), _csignals_T_94) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_96 = mux(_csignals_T_29, UInt<2>("h0"), _csignals_T_95) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_97 = mux(_csignals_T_27, UInt<2>("h0"), _csignals_T_96) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_98 = mux(_csignals_T_25, UInt<2>("h0"), _csignals_T_97) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_99 = mux(_csignals_T_23, UInt<2>("h0"), _csignals_T_98) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_100 = mux(_csignals_T_21, UInt<2>("h0"), _csignals_T_99) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_101 = mux(_csignals_T_19, UInt<2>("h0"), _csignals_T_100) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_102 = mux(_csignals_T_17, UInt<2>("h0"), _csignals_T_101) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_103 = mux(_csignals_T_15, UInt<2>("h0"), _csignals_T_102) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_104 = mux(_csignals_T_13, UInt<2>("h0"), _csignals_T_103) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_105 = mux(_csignals_T_11, UInt<2>("h0"), _csignals_T_104) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_106 = mux(_csignals_T_9, UInt<2>("h0"), _csignals_T_105) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_107 = mux(_csignals_T_7, UInt<2>("h0"), _csignals_T_106) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_108 = mux(_csignals_T_5, UInt<2>("h0"), _csignals_T_107) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_109 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_108) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node csignals_3 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_109) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_110 = mux(_csignals_T_37, UInt<2>("h0"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_111 = mux(_csignals_T_35, UInt<2>("h0"), _csignals_T_110) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_112 = mux(_csignals_T_33, UInt<2>("h0"), _csignals_T_111) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_113 = mux(_csignals_T_31, UInt<2>("h0"), _csignals_T_112) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_114 = mux(_csignals_T_29, UInt<2>("h0"), _csignals_T_113) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_115 = mux(_csignals_T_27, UInt<2>("h0"), _csignals_T_114) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_116 = mux(_csignals_T_25, UInt<2>("h0"), _csignals_T_115) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_117 = mux(_csignals_T_23, UInt<2>("h0"), _csignals_T_116) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_118 = mux(_csignals_T_21, UInt<2>("h0"), _csignals_T_117) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_119 = mux(_csignals_T_19, UInt<2>("h0"), _csignals_T_118) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_120 = mux(_csignals_T_17, UInt<2>("h0"), _csignals_T_119) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_121 = mux(_csignals_T_15, UInt<2>("h0"), _csignals_T_120) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_122 = mux(_csignals_T_13, UInt<2>("h0"), _csignals_T_121) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_123 = mux(_csignals_T_11, UInt<2>("h0"), _csignals_T_122) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_124 = mux(_csignals_T_9, UInt<2>("h0"), _csignals_T_123) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_125 = mux(_csignals_T_7, UInt<2>("h0"), _csignals_T_124) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_126 = mux(_csignals_T_5, UInt<2>("h0"), _csignals_T_125) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_127 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_126) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node csignals_4 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_127) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_128 = mux(_csignals_T_37, UInt<3>("h0"), UInt<3>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_129 = mux(_csignals_T_35, UInt<3>("h0"), _csignals_T_128) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_130 = mux(_csignals_T_33, UInt<3>("h0"), _csignals_T_129) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_131 = mux(_csignals_T_31, UInt<3>("h1"), _csignals_T_130) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_132 = mux(_csignals_T_29, UInt<3>("h1"), _csignals_T_131) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_133 = mux(_csignals_T_27, UInt<3>("h1"), _csignals_T_132) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_134 = mux(_csignals_T_25, UInt<3>("h0"), _csignals_T_133) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_135 = mux(_csignals_T_23, UInt<3>("h0"), _csignals_T_134) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_136 = mux(_csignals_T_21, UInt<3>("h1"), _csignals_T_135) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_137 = mux(_csignals_T_19, UInt<3>("h1"), _csignals_T_136) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_138 = mux(_csignals_T_17, UInt<3>("h1"), _csignals_T_137) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_139 = mux(_csignals_T_15, UInt<3>("h1"), _csignals_T_138) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_140 = mux(_csignals_T_13, UInt<3>("h1"), _csignals_T_139) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_141 = mux(_csignals_T_11, UInt<3>("h1"), _csignals_T_140) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_142 = mux(_csignals_T_9, UInt<3>("h1"), _csignals_T_141) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_143 = mux(_csignals_T_7, UInt<3>("h1"), _csignals_T_142) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_144 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_143) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _csignals_T_145 = mux(_csignals_T_3, UInt<3>("h2"), _csignals_T_144) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node csignals_5 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_145) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _id_op1_data_T = eq(csignals_1, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 178:19] - node _id_op1_data_T_1 = eq(csignals_1, UInt<2>("h2")) @[src/main/scala/micore/Core.scala 179:19] + node _csignals_T_32 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_33 = eq(UInt<28>("hc000000"), _csignals_T_32) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_34 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_35 = eq(UInt<4>("h8"), _csignals_T_34) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_36 = mux(_csignals_T_35, UInt<5>("hd"), UInt<5>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_37 = mux(_csignals_T_33, UInt<5>("h1"), _csignals_T_36) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_38 = mux(_csignals_T_31, UInt<5>("h8"), _csignals_T_37) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_39 = mux(_csignals_T_29, UInt<5>("h7"), _csignals_T_38) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_40 = mux(_csignals_T_27, UInt<5>("h6"), _csignals_T_39) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_41 = mux(_csignals_T_25, UInt<5>("hc"), _csignals_T_40) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_42 = mux(_csignals_T_23, UInt<5>("hb"), _csignals_T_41) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_43 = mux(_csignals_T_21, UInt<5>("h9"), _csignals_T_42) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_44 = mux(_csignals_T_19, UInt<5>("h4"), _csignals_T_43) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_45 = mux(_csignals_T_17, UInt<5>("h3"), _csignals_T_44) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_46 = mux(_csignals_T_15, UInt<5>("h5"), _csignals_T_45) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_47 = mux(_csignals_T_13, UInt<5>("h4"), _csignals_T_46) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_48 = mux(_csignals_T_11, UInt<5>("h3"), _csignals_T_47) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_49 = mux(_csignals_T_9, UInt<5>("h2"), _csignals_T_48) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_50 = mux(_csignals_T_7, UInt<5>("h1"), _csignals_T_49) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_51 = mux(_csignals_T_5, UInt<5>("h1"), _csignals_T_50) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_52 = mux(_csignals_T_3, UInt<5>("h1"), _csignals_T_51) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_0 = mux(_csignals_T_1, UInt<5>("h1"), _csignals_T_52) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_53 = mux(_csignals_T_35, UInt<2>("h1"), UInt<2>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_54 = mux(_csignals_T_33, UInt<2>("h2"), _csignals_T_53) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_55 = mux(_csignals_T_31, UInt<2>("h1"), _csignals_T_54) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_56 = mux(_csignals_T_29, UInt<2>("h1"), _csignals_T_55) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_57 = mux(_csignals_T_27, UInt<2>("h1"), _csignals_T_56) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_58 = mux(_csignals_T_25, UInt<2>("h1"), _csignals_T_57) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_59 = mux(_csignals_T_23, UInt<2>("h1"), _csignals_T_58) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_60 = mux(_csignals_T_21, UInt<2>("h1"), _csignals_T_59) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_61 = mux(_csignals_T_19, UInt<2>("h1"), _csignals_T_60) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_62 = mux(_csignals_T_17, UInt<2>("h1"), _csignals_T_61) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_63 = mux(_csignals_T_15, UInt<2>("h1"), _csignals_T_62) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_64 = mux(_csignals_T_13, UInt<2>("h1"), _csignals_T_63) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_65 = mux(_csignals_T_11, UInt<2>("h1"), _csignals_T_64) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_66 = mux(_csignals_T_9, UInt<2>("h1"), _csignals_T_65) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_67 = mux(_csignals_T_7, UInt<2>("h1"), _csignals_T_66) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_68 = mux(_csignals_T_5, UInt<2>("h1"), _csignals_T_67) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_69 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_68) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_1 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_69) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_70 = mux(_csignals_T_35, UInt<3>("h0"), UInt<3>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_71 = mux(_csignals_T_33, UInt<3>("h4"), _csignals_T_70) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_72 = mux(_csignals_T_31, UInt<3>("h1"), _csignals_T_71) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_73 = mux(_csignals_T_29, UInt<3>("h1"), _csignals_T_72) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_74 = mux(_csignals_T_27, UInt<3>("h1"), _csignals_T_73) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_75 = mux(_csignals_T_25, UInt<3>("h1"), _csignals_T_74) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_76 = mux(_csignals_T_23, UInt<3>("h1"), _csignals_T_75) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_77 = mux(_csignals_T_21, UInt<3>("h1"), _csignals_T_76) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_78 = mux(_csignals_T_19, UInt<3>("h2"), _csignals_T_77) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_79 = mux(_csignals_T_17, UInt<3>("h2"), _csignals_T_78) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_80 = mux(_csignals_T_15, UInt<3>("h1"), _csignals_T_79) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_81 = mux(_csignals_T_13, UInt<3>("h1"), _csignals_T_80) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_82 = mux(_csignals_T_11, UInt<3>("h1"), _csignals_T_81) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_83 = mux(_csignals_T_9, UInt<3>("h1"), _csignals_T_82) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_84 = mux(_csignals_T_7, UInt<3>("h2"), _csignals_T_83) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_85 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_84) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_86 = mux(_csignals_T_3, UInt<3>("h2"), _csignals_T_85) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_2 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_86) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_87 = mux(_csignals_T_35, UInt<2>("h0"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_88 = mux(_csignals_T_33, UInt<2>("h0"), _csignals_T_87) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_89 = mux(_csignals_T_31, UInt<2>("h0"), _csignals_T_88) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_90 = mux(_csignals_T_29, UInt<2>("h0"), _csignals_T_89) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_91 = mux(_csignals_T_27, UInt<2>("h0"), _csignals_T_90) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_92 = mux(_csignals_T_25, UInt<2>("h0"), _csignals_T_91) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_93 = mux(_csignals_T_23, UInt<2>("h0"), _csignals_T_92) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_94 = mux(_csignals_T_21, UInt<2>("h0"), _csignals_T_93) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_95 = mux(_csignals_T_19, UInt<2>("h0"), _csignals_T_94) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_96 = mux(_csignals_T_17, UInt<2>("h0"), _csignals_T_95) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_97 = mux(_csignals_T_15, UInt<2>("h0"), _csignals_T_96) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_98 = mux(_csignals_T_13, UInt<2>("h0"), _csignals_T_97) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_99 = mux(_csignals_T_11, UInt<2>("h0"), _csignals_T_98) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_100 = mux(_csignals_T_9, UInt<2>("h0"), _csignals_T_99) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_101 = mux(_csignals_T_7, UInt<2>("h0"), _csignals_T_100) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_102 = mux(_csignals_T_5, UInt<2>("h0"), _csignals_T_101) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_103 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_102) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_3 = mux(_csignals_T_1, UInt<2>("h0"), _csignals_T_103) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_104 = mux(_csignals_T_35, UInt<2>("h0"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_105 = mux(_csignals_T_33, UInt<2>("h1"), _csignals_T_104) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_106 = mux(_csignals_T_31, UInt<2>("h1"), _csignals_T_105) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_107 = mux(_csignals_T_29, UInt<2>("h1"), _csignals_T_106) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_108 = mux(_csignals_T_27, UInt<2>("h1"), _csignals_T_107) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_109 = mux(_csignals_T_25, UInt<2>("h0"), _csignals_T_108) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_110 = mux(_csignals_T_23, UInt<2>("h0"), _csignals_T_109) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_111 = mux(_csignals_T_21, UInt<2>("h1"), _csignals_T_110) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_112 = mux(_csignals_T_19, UInt<2>("h1"), _csignals_T_111) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_113 = mux(_csignals_T_17, UInt<2>("h1"), _csignals_T_112) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_114 = mux(_csignals_T_15, UInt<2>("h1"), _csignals_T_113) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_115 = mux(_csignals_T_13, UInt<2>("h1"), _csignals_T_114) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_116 = mux(_csignals_T_11, UInt<2>("h1"), _csignals_T_115) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_117 = mux(_csignals_T_9, UInt<2>("h1"), _csignals_T_116) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_118 = mux(_csignals_T_7, UInt<2>("h1"), _csignals_T_117) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_119 = mux(_csignals_T_5, UInt<2>("h1"), _csignals_T_118) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_120 = mux(_csignals_T_3, UInt<2>("h0"), _csignals_T_119) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_4 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_120) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_121 = mux(_csignals_T_35, UInt<3>("h0"), UInt<3>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_122 = mux(_csignals_T_33, UInt<3>("h3"), _csignals_T_121) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_123 = mux(_csignals_T_31, UInt<3>("h1"), _csignals_T_122) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_124 = mux(_csignals_T_29, UInt<3>("h1"), _csignals_T_123) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_125 = mux(_csignals_T_27, UInt<3>("h1"), _csignals_T_124) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_126 = mux(_csignals_T_25, UInt<3>("h0"), _csignals_T_125) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_127 = mux(_csignals_T_23, UInt<3>("h0"), _csignals_T_126) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_128 = mux(_csignals_T_21, UInt<3>("h1"), _csignals_T_127) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_129 = mux(_csignals_T_19, UInt<3>("h1"), _csignals_T_128) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_130 = mux(_csignals_T_17, UInt<3>("h1"), _csignals_T_129) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_131 = mux(_csignals_T_15, UInt<3>("h1"), _csignals_T_130) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_132 = mux(_csignals_T_13, UInt<3>("h1"), _csignals_T_131) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_133 = mux(_csignals_T_11, UInt<3>("h1"), _csignals_T_132) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_134 = mux(_csignals_T_9, UInt<3>("h1"), _csignals_T_133) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_135 = mux(_csignals_T_7, UInt<3>("h1"), _csignals_T_134) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_136 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_135) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_137 = mux(_csignals_T_3, UInt<3>("h0"), _csignals_T_136) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_5 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_137) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _id_op1_data_T = eq(csignals_1, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 150:19] + node _id_op1_data_T_1 = eq(csignals_1, UInt<2>("h2")) @[src/main/scala/micore/Core.scala 151:19] node _id_op1_data_T_2 = mux(_id_op1_data_T_1, id_reg_pc, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node id_op1_data = mux(_id_op1_data_T, id_rs1_data, _id_op1_data_T_2) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_op2_data_T = eq(csignals_2, UInt<3>("h1")) @[src/main/scala/micore/Core.scala 186:19] - node _id_op2_data_T_1 = eq(csignals_2, UInt<3>("h2")) @[src/main/scala/micore/Core.scala 187:19] - node _id_op2_data_T_2 = eq(csignals_2, UInt<3>("h4")) @[src/main/scala/micore/Core.scala 188:19] - node _id_op2_data_T_3 = eq(csignals_2, UInt<3>("h5")) @[src/main/scala/micore/Core.scala 189:19] - node _id_op2_data_T_4 = mux(_id_op2_data_T_3, id_imm_u_shifted, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_op2_data_T_5 = mux(_id_op2_data_T_2, id_imm_j_sext, _id_op2_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _id_op2_data_T_6 = mux(_id_op2_data_T_1, id_imm_i_sext, _id_op2_data_T_5) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node id_op2_data = mux(_id_op2_data_T, id_rs2_data, _id_op2_data_T_6) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _T = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 275:22] - node _T_1 = neq(wb_reg_wb_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 275:50] - node _T_2 = and(_T, _T_1) @[src/main/scala/micore/Core.scala 275:32] - node _GEN_0 = validif(_T_2, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 275:59 276:12] - node _GEN_1 = validif(_T_2, clock) @[src/main/scala/micore/Core.scala 275:59 276:12] - node _GEN_2 = mux(_T_2, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/micore/Core.scala 275:59 276:12 15:20] - node _GEN_3 = validif(_T_2, UInt<1>("h1")) @[src/main/scala/micore/Core.scala 275:59 276:29] - node _GEN_4 = validif(_T_2, wb_reg_wb_data) @[src/main/scala/micore/Core.scala 275:59 276:29] - node _io_exit_T = eq(id_reg_inst, UInt<32>("h114514")) @[src/main/scala/micore/Core.scala 280:27] - node _T_3 = asUInt(reset) @[src/main/scala/micore/Core.scala 281:9] - node _T_4 = eq(_T_3, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 281:9] - node _T_5 = asUInt(reset) @[src/main/scala/micore/Core.scala 282:9] - node _T_6 = eq(_T_5, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 282:9] - node _T_7 = asUInt(reset) @[src/main/scala/micore/Core.scala 283:9] - node _T_8 = eq(_T_7, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 283:9] - node _T_9 = asUInt(reset) @[src/main/scala/micore/Core.scala 284:9] - node _T_10 = eq(_T_9, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 284:9] - node _T_11 = asUInt(reset) @[src/main/scala/micore/Core.scala 285:9] - node _T_12 = eq(_T_11, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 285:9] - node _T_13 = asUInt(reset) @[src/main/scala/micore/Core.scala 286:9] - node _T_14 = eq(_T_13, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 286:9] - node _T_15 = asUInt(reset) @[src/main/scala/micore/Core.scala 287:9] - node _T_16 = eq(_T_15, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 287:9] - node _T_17 = asUInt(reset) @[src/main/scala/micore/Core.scala 288:9] - node _T_18 = eq(_T_17, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 288:9] - node _T_19 = asUInt(reset) @[src/main/scala/micore/Core.scala 289:9] - node _T_20 = eq(_T_19, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 289:9] - node _T_21 = asUInt(reset) @[src/main/scala/micore/Core.scala 290:9] - node _T_22 = eq(_T_21, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 290:9] - node _T_23 = asUInt(reset) @[src/main/scala/micore/Core.scala 291:9] - node _T_24 = eq(_T_23, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 291:9] - node _T_25 = asUInt(reset) @[src/main/scala/micore/Core.scala 292:9] - node _T_26 = eq(_T_25, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 292:9] - node _T_27 = asUInt(reset) @[src/main/scala/micore/Core.scala 293:9] - node _T_28 = eq(_T_27, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 293:9] - node _T_29 = asUInt(reset) @[src/main/scala/micore/Core.scala 294:9] - node _T_30 = eq(_T_29, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 294:9] - node _T_31 = asUInt(reset) @[src/main/scala/micore/Core.scala 295:9] - node _T_32 = eq(_T_31, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 295:9] - node _T_33 = asUInt(reset) @[src/main/scala/micore/Core.scala 296:9] - node _T_34 = eq(_T_33, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 296:9] - node _T_35 = asUInt(reset) @[src/main/scala/micore/Core.scala 297:9] - node _T_36 = eq(_T_35, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 297:9] - node _T_37 = asUInt(reset) @[src/main/scala/micore/Core.scala 298:9] - node _T_38 = eq(_T_37, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 298:9] - io_imem_addr <= if_reg_pc @[src/main/scala/micore/Core.scala 54:16] - io_dmem_addr <= mem_reg_alu_out @[src/main/scala/micore/Core.scala 256:16] - io_dmem_wen <= bits(mem_reg_mem_wen, 0, 0) @[src/main/scala/micore/Core.scala 257:15] - io_dmem_wdata <= mem_reg_rs2_data @[src/main/scala/micore/Core.scala 258:17] - io_exit <= _io_exit_T @[src/main/scala/micore/Core.scala 280:11] - regfile.id_rs1_data_MPORT.addr <= id_rs1_addr @[src/main/scala/micore/Core.scala 114:12] - regfile.id_rs1_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 114:12] - regfile.id_rs1_data_MPORT.clk <= clock @[src/main/scala/micore/Core.scala 114:12] - regfile.id_rs2_data_MPORT.addr <= id_rs2_addr @[src/main/scala/micore/Core.scala 122:12] - regfile.id_rs2_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 122:12] - regfile.id_rs2_data_MPORT.clk <= clock @[src/main/scala/micore/Core.scala 122:12] + node id_op1_data = mux(_id_op1_data_T, id_rs_data, _id_op1_data_T_2) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_op2_data_T = eq(csignals_2, UInt<3>("h1")) @[src/main/scala/micore/Core.scala 158:19] + node _id_op2_data_T_1 = eq(csignals_2, UInt<3>("h2")) @[src/main/scala/micore/Core.scala 159:19] + node _id_op2_data_T_2 = eq(csignals_2, UInt<3>("h4")) @[src/main/scala/micore/Core.scala 160:19] + node _id_op2_data_T_3 = mux(_id_op2_data_T_2, id_imm_j, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_op2_data_T_4 = mux(_id_op2_data_T_1, id_imm_i_sext, _id_op2_data_T_3) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_op2_data = mux(_id_op2_data_T, id_rt_data, _id_op2_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_reg_wb_addr_T = eq(csignals_5, UInt<3>("h1")) @[src/main/scala/micore/Core.scala 173:18] + node _exe_reg_wb_addr_T_1 = bits(id_inst, 31, 26) @[src/main/scala/micore/Core.scala 173:39] + node _exe_reg_wb_addr_T_2 = eq(_exe_reg_wb_addr_T_1, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 176:9] + node _exe_reg_wb_addr_T_3 = and(_exe_reg_wb_addr_T, _exe_reg_wb_addr_T_2) @[src/main/scala/micore/Core.scala 173:29] + node _exe_reg_wb_addr_T_4 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/micore/Core.scala 177:16] + node _exe_reg_wb_addr_T_5 = eq(UInt<28>("hc000000"), _exe_reg_wb_addr_T_4) @[src/main/scala/micore/Core.scala 177:16] + node _exe_reg_wb_addr_T_6 = mux(_exe_reg_wb_addr_T_5, UInt<5>("h1f"), id_rt_addr) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_reg_wb_addr_T_7 = mux(_exe_reg_wb_addr_T_3, id_rd_addr, _exe_reg_wb_addr_T_6) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _mem_wb_data_T = eq(mem_reg_wb_sel, UInt<3>("h2")) @[src/main/scala/micore/Core.scala 241:23] + node _mem_wb_data_T_1 = eq(mem_reg_wb_sel, UInt<3>("h3")) @[src/main/scala/micore/Core.scala 242:23] + node _mem_wb_data_T_2 = add(mem_reg_pc, UInt<32>("h4")) @[src/main/scala/micore/Core.scala 242:49] + node _mem_wb_data_T_3 = tail(_mem_wb_data_T_2, 1) @[src/main/scala/micore/Core.scala 242:49] + node _mem_wb_data_T_4 = mux(_mem_wb_data_T_1, _mem_wb_data_T_3, mem_reg_alu_out) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node mem_wb_data = mux(_mem_wb_data_T, io_dmem_rdata, _mem_wb_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _T = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 252:22] + node _T_1 = neq(wb_reg_wb_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 252:50] + node _T_2 = and(_T, _T_1) @[src/main/scala/micore/Core.scala 252:32] + node _GEN_0 = validif(_T_2, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 252:59 253:12] + node _GEN_1 = validif(_T_2, clock) @[src/main/scala/micore/Core.scala 252:59 253:12] + node _GEN_2 = mux(_T_2, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/micore/Core.scala 252:59 253:12 15:20] + node _GEN_3 = validif(_T_2, UInt<1>("h1")) @[src/main/scala/micore/Core.scala 252:59 253:29] + node _GEN_4 = validif(_T_2, wb_reg_wb_data) @[src/main/scala/micore/Core.scala 252:59 253:29] + node _io_exit_T = eq(id_reg_inst, UInt<32>("h114514")) @[src/main/scala/micore/Core.scala 256:27] + node _T_3 = asUInt(reset) @[src/main/scala/micore/Core.scala 259:9] + node _T_4 = eq(_T_3, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 259:9] + node _T_5 = asUInt(reset) @[src/main/scala/micore/Core.scala 260:9] + node _T_6 = eq(_T_5, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 260:9] + node _T_7 = asUInt(reset) @[src/main/scala/micore/Core.scala 261:9] + node _T_8 = eq(_T_7, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 261:9] + node _T_9 = asUInt(reset) @[src/main/scala/micore/Core.scala 262:9] + node _T_10 = eq(_T_9, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 262:9] + node _T_11 = asUInt(reset) @[src/main/scala/micore/Core.scala 263:9] + node _T_12 = eq(_T_11, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 263:9] + node _T_13 = asUInt(reset) @[src/main/scala/micore/Core.scala 264:9] + node _T_14 = eq(_T_13, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 264:9] + node _T_15 = asUInt(reset) @[src/main/scala/micore/Core.scala 265:9] + node _T_16 = eq(_T_15, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 265:9] + node _T_17 = asUInt(reset) @[src/main/scala/micore/Core.scala 266:9] + node _T_18 = eq(_T_17, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 266:9] + node _T_19 = asUInt(reset) @[src/main/scala/micore/Core.scala 267:9] + node _T_20 = eq(_T_19, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 267:9] + node _T_21 = asUInt(reset) @[src/main/scala/micore/Core.scala 268:9] + node _T_22 = eq(_T_21, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 268:9] + io_imem_addr <= if_reg_pc @[src/main/scala/micore/Core.scala 52:16] + io_dmem_addr <= mem_reg_alu_out @[src/main/scala/micore/Core.scala 234:16] + io_dmem_wen <= bits(mem_reg_mem_wen, 0, 0) @[src/main/scala/micore/Core.scala 235:15] + io_dmem_wdata <= mem_reg_rt_data @[src/main/scala/micore/Core.scala 236:17] + io_exit <= _io_exit_T @[src/main/scala/micore/Core.scala 256:11] + regfile.id_rs_data_MPORT.addr <= id_rs_addr @[src/main/scala/micore/Core.scala 99:12] + regfile.id_rs_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 99:12] + regfile.id_rs_data_MPORT.clk <= clock @[src/main/scala/micore/Core.scala 99:12] + regfile.id_rt_data_MPORT.addr <= id_rt_addr @[src/main/scala/micore/Core.scala 107:12] + regfile.id_rt_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 107:12] + regfile.id_rt_data_MPORT.clk <= clock @[src/main/scala/micore/Core.scala 107:12] regfile.MPORT.addr <= _GEN_0 regfile.MPORT.en <= _GEN_2 regfile.MPORT.clk <= _GEN_1 regfile.MPORT.data <= _GEN_4 regfile.MPORT.mask <= _GEN_3 - id_reg_pc <= mux(reset, UInt<32>("h0"), _id_reg_pc_T) @[src/main/scala/micore/Core.scala 19:{26,26} 75:13] - id_reg_inst <= mux(reset, UInt<32>("h0"), _id_reg_inst_T_2) @[src/main/scala/micore/Core.scala 20:{28,28} 76:15] - exe_reg_pc <= mux(reset, UInt<32>("h0"), id_reg_pc) @[src/main/scala/micore/Core.scala 194:14 23:{27,27}] - exe_reg_wb_addr <= mux(reset, UInt<5>("h0"), id_wb_addr) @[src/main/scala/micore/Core.scala 198:19 24:{32,32}] - exe_reg_op1_data <= mux(reset, UInt<32>("h0"), id_op1_data) @[src/main/scala/micore/Core.scala 195:20 25:{33,33}] - exe_reg_op2_data <= bits(mux(reset, UInt<32>("h0"), id_op2_data), 31, 0) @[src/main/scala/micore/Core.scala 196:20 26:{33,33}] - exe_reg_rs2_data <= mux(reset, UInt<32>("h0"), id_rs2_data) @[src/main/scala/micore/Core.scala 197:20 27:{33,33}] - exe_reg_exe_fun <= mux(reset, UInt<5>("h0"), csignals_0) @[src/main/scala/micore/Core.scala 205:19 28:{32,32}] - exe_reg_mem_wen <= mux(reset, UInt<2>("h0"), csignals_3) @[src/main/scala/micore/Core.scala 200:19 29:{32,32}] - exe_reg_rf_wen <= mux(reset, UInt<2>("h0"), csignals_4) @[src/main/scala/micore/Core.scala 201:18 30:{31,31}] - exe_reg_wb_sel <= mux(reset, UInt<3>("h0"), csignals_5) @[src/main/scala/micore/Core.scala 199:18 31:{31,31}] - exe_reg_imm_i_sext <= mux(reset, UInt<32>("h0"), id_imm_i_sext) @[src/main/scala/micore/Core.scala 202:22 32:{35,35}] - exe_reg_imm_s_sext <= mux(reset, UInt<32>("h0"), exe_reg_imm_s_sext) @[src/main/scala/micore/Core.scala 33:{35,35,35}] - exe_reg_imm_b_sext <= mux(reset, UInt<32>("h0"), id_imm_b_sext) @[src/main/scala/micore/Core.scala 203:22 34:{35,35}] - exe_reg_imm_u_shifted <= mux(reset, UInt<32>("h0"), id_imm_u_shifted) @[src/main/scala/micore/Core.scala 204:25 35:{38,38}] - mem_reg_pc <= mux(reset, UInt<32>("h0"), exe_reg_pc) @[src/main/scala/micore/Core.scala 246:14 38:{27,27}] - mem_reg_wb_addr <= mux(reset, UInt<5>("h0"), exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 249:19 39:{32,32}] - mem_reg_op1_data <= mux(reset, UInt<32>("h0"), exe_reg_op1_data) @[src/main/scala/micore/Core.scala 247:20 40:{33,33}] - mem_reg_rs2_data <= mux(reset, UInt<32>("h0"), exe_reg_rs2_data) @[src/main/scala/micore/Core.scala 248:20 41:{33,33}] - mem_reg_mem_wen <= mux(reset, UInt<2>("h0"), exe_reg_mem_wen) @[src/main/scala/micore/Core.scala 253:19 42:{32,32}] - mem_reg_rf_wen <= mux(reset, UInt<2>("h0"), exe_reg_rf_wen) @[src/main/scala/micore/Core.scala 251:18 43:{31,31}] - mem_reg_wb_sel <= mux(reset, UInt<3>("h0"), exe_reg_wb_sel) @[src/main/scala/micore/Core.scala 252:18 44:{31,31}] - mem_reg_alu_out <= mux(reset, UInt<32>("h0"), exe_alu_out) @[src/main/scala/micore/Core.scala 250:19 45:{32,32}] - wb_reg_wb_addr <= mux(reset, UInt<5>("h0"), mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 271:18 48:{31,31}] - wb_reg_rf_wen <= mux(reset, UInt<2>("h0"), mem_reg_rf_wen) @[src/main/scala/micore/Core.scala 270:17 49:{30,30}] - wb_reg_wb_data <= mux(reset, UInt<32>("h0"), mem_wb_data) @[src/main/scala/micore/Core.scala 269:18 50:{31,31}] - if_reg_pc <= mux(reset, UInt<32>("h0"), if_pc_next) @[src/main/scala/micore/Core.scala 53:{26,26} 72:13] - printf(clock, and(and(UInt<1>("h1"), _T_4), UInt<1>("h1")), "---------------------\n") : printf @[src/main/scala/micore/Core.scala 281:9] - printf(clock, and(and(UInt<1>("h1"), _T_6), UInt<1>("h1")), "if_reg_pc: 0x%x\n", if_reg_pc) : printf_1 @[src/main/scala/micore/Core.scala 282:9] - printf(clock, and(and(UInt<1>("h1"), _T_8), UInt<1>("h1")), "id_reg_pc: 0x%x\n", id_reg_pc) : printf_2 @[src/main/scala/micore/Core.scala 283:9] - printf(clock, and(and(UInt<1>("h1"), _T_10), UInt<1>("h1")), "id_reg_inst: 0x%x\n", id_reg_inst) : printf_3 @[src/main/scala/micore/Core.scala 284:9] - printf(clock, and(and(UInt<1>("h1"), _T_12), UInt<1>("h1")), "id_inst: 0x%x\n", id_inst) : printf_4 @[src/main/scala/micore/Core.scala 285:9] - printf(clock, and(and(UInt<1>("h1"), _T_14), UInt<1>("h1")), "id_rs1_data: 0x%x\n", id_rs1_data) : printf_5 @[src/main/scala/micore/Core.scala 286:9] - printf(clock, and(and(UInt<1>("h1"), _T_16), UInt<1>("h1")), "id_rs2_data: 0x%x\n", id_rs2_data) : printf_6 @[src/main/scala/micore/Core.scala 287:9] - printf(clock, and(and(UInt<1>("h1"), _T_18), UInt<1>("h1")), "id_exe_fun: 0x%x\n", csignals_0) : printf_7 @[src/main/scala/micore/Core.scala 288:9] - printf(clock, and(and(UInt<1>("h1"), _T_20), UInt<1>("h1")), "id_op1_sel: 0x%x\n", csignals_1) : printf_8 @[src/main/scala/micore/Core.scala 289:9] - printf(clock, and(and(UInt<1>("h1"), _T_22), UInt<1>("h1")), "id_op2_sel: 0x%x\n", csignals_2) : printf_9 @[src/main/scala/micore/Core.scala 290:9] - printf(clock, and(and(UInt<1>("h1"), _T_24), UInt<1>("h1")), "exe_reg_pc: 0x%x\n", exe_reg_pc) : printf_10 @[src/main/scala/micore/Core.scala 291:9] - printf(clock, and(and(UInt<1>("h1"), _T_26), UInt<1>("h1")), "exe_reg_op1_data: 0x%x\n", id_op1_data) : printf_11 @[src/main/scala/micore/Core.scala 292:9] - printf(clock, and(and(UInt<1>("h1"), _T_28), UInt<1>("h1")), "exe_reg_op2_data: 0x%x\n", id_op2_data) : printf_12 @[src/main/scala/micore/Core.scala 293:9] - printf(clock, and(and(UInt<1>("h1"), _T_30), UInt<1>("h1")), "exe_alu_out: 0x%x\n", exe_alu_out) : printf_13 @[src/main/scala/micore/Core.scala 294:9] - printf(clock, and(and(UInt<1>("h1"), _T_32), UInt<1>("h1")), "mem_reg_pc: 0x%x\n", mem_reg_pc) : printf_14 @[src/main/scala/micore/Core.scala 295:9] - printf(clock, and(and(UInt<1>("h1"), _T_34), UInt<1>("h1")), "mem_wb_data: 0x%x\n", mem_wb_data) : printf_15 @[src/main/scala/micore/Core.scala 296:9] - printf(clock, and(and(UInt<1>("h1"), _T_36), UInt<1>("h1")), "wb_reg_wb_data: 0x%x\n", wb_reg_wb_data) : printf_16 @[src/main/scala/micore/Core.scala 297:9] - printf(clock, and(and(UInt<1>("h1"), _T_38), UInt<1>("h1")), "---------------------\n") : printf_17 @[src/main/scala/micore/Core.scala 298:9] + id_reg_pc <= mux(reset, UInt<32>("h0"), _id_reg_pc_T) @[src/main/scala/micore/Core.scala 19:{26,26} 73:13] + id_reg_inst <= mux(reset, UInt<32>("h0"), _id_reg_inst_T_2) @[src/main/scala/micore/Core.scala 20:{28,28} 74:15] + exe_reg_pc <= mux(reset, UInt<32>("h0"), id_reg_pc) @[src/main/scala/micore/Core.scala 165:14 23:{27,27}] + exe_reg_wb_addr <= mux(reset, UInt<5>("h0"), _exe_reg_wb_addr_T_7) @[src/main/scala/micore/Core.scala 170:19 24:{32,32}] + exe_reg_op1_data <= mux(reset, UInt<32>("h0"), id_op1_data) @[src/main/scala/micore/Core.scala 166:20 25:{33,33}] + exe_reg_op2_data <= mux(reset, UInt<32>("h0"), id_op2_data) @[src/main/scala/micore/Core.scala 167:20 26:{33,33}] + exe_reg_rs_data <= mux(reset, UInt<32>("h0"), id_rs_data) @[src/main/scala/micore/Core.scala 168:19 27:{32,32}] + exe_reg_rt_data <= mux(reset, UInt<32>("h0"), id_rt_data) @[src/main/scala/micore/Core.scala 169:19 28:{32,32}] + exe_reg_exe_fun <= mux(reset, UInt<5>("h0"), csignals_0) @[src/main/scala/micore/Core.scala 185:19 29:{32,32}] + exe_reg_mem_wen <= mux(reset, UInt<2>("h0"), csignals_3) @[src/main/scala/micore/Core.scala 181:19 30:{32,32}] + exe_reg_rf_wen <= mux(reset, UInt<2>("h0"), csignals_4) @[src/main/scala/micore/Core.scala 182:18 31:{31,31}] + exe_reg_wb_sel <= mux(reset, UInt<3>("h0"), csignals_5) @[src/main/scala/micore/Core.scala 180:18 32:{31,31}] + exe_reg_imm_i_sext <= mux(reset, UInt<32>("h0"), id_imm_i_sext) @[src/main/scala/micore/Core.scala 183:22 33:{35,35}] + exe_reg_imm_j <= mux(reset, UInt<32>("h0"), id_imm_j) @[src/main/scala/micore/Core.scala 184:17 34:{30,30}] + mem_reg_pc <= mux(reset, UInt<32>("h0"), exe_reg_pc) @[src/main/scala/micore/Core.scala 225:14 37:{27,27}] + mem_reg_wb_addr <= mux(reset, UInt<5>("h0"), exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 226:19 38:{32,32}] + mem_reg_alu_out <= mux(reset, UInt<32>("h0"), exe_alu_out) @[src/main/scala/micore/Core.scala 227:19 39:{32,32}] + mem_reg_rt_data <= mux(reset, UInt<32>("h0"), exe_reg_rt_data) @[src/main/scala/micore/Core.scala 228:19 40:{32,32}] + mem_reg_mem_wen <= mux(reset, UInt<2>("h0"), exe_reg_mem_wen) @[src/main/scala/micore/Core.scala 229:19 41:{32,32}] + mem_reg_rf_wen <= mux(reset, UInt<2>("h0"), exe_reg_rf_wen) @[src/main/scala/micore/Core.scala 230:18 42:{31,31}] + mem_reg_wb_sel <= mux(reset, UInt<3>("h0"), exe_reg_wb_sel) @[src/main/scala/micore/Core.scala 231:18 43:{31,31}] + wb_reg_wb_addr <= mux(reset, UInt<5>("h0"), mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 247:18 46:{31,31}] + wb_reg_rf_wen <= mux(reset, UInt<2>("h0"), mem_reg_rf_wen) @[src/main/scala/micore/Core.scala 248:17 47:{30,30}] + wb_reg_wb_data <= mux(reset, UInt<32>("h0"), mem_wb_data) @[src/main/scala/micore/Core.scala 249:18 48:{31,31}] + if_reg_pc <= mux(reset, UInt<32>("h0"), if_pc_next) @[src/main/scala/micore/Core.scala 51:{26,26} 70:13] + printf(clock, and(and(UInt<1>("h1"), _T_4), UInt<1>("h1")), "---------------\n") : printf @[src/main/scala/micore/Core.scala 259:9] + printf(clock, and(and(UInt<1>("h1"), _T_6), UInt<1>("h1")), "if_reg_pc: 0x%x\n", if_reg_pc) : printf_1 @[src/main/scala/micore/Core.scala 260:9] + printf(clock, and(and(UInt<1>("h1"), _T_8), UInt<1>("h1")), "id_reg_pc: 0x%x\n", id_reg_pc) : printf_2 @[src/main/scala/micore/Core.scala 261:9] + printf(clock, and(and(UInt<1>("h1"), _T_10), UInt<1>("h1")), "id_reg_inst: 0x%x\n", id_reg_inst) : printf_3 @[src/main/scala/micore/Core.scala 262:9] + printf(clock, and(and(UInt<1>("h1"), _T_12), UInt<1>("h1")), "exe_reg_pc: 0x%x\n", exe_reg_pc) : printf_4 @[src/main/scala/micore/Core.scala 263:9] + printf(clock, and(and(UInt<1>("h1"), _T_14), UInt<1>("h1")), "exe_alu_out: 0x%x\n", exe_alu_out) : printf_5 @[src/main/scala/micore/Core.scala 264:9] + printf(clock, and(and(UInt<1>("h1"), _T_16), UInt<1>("h1")), "mem_reg_pc: 0x%x\n", mem_reg_pc) : printf_6 @[src/main/scala/micore/Core.scala 265:9] + printf(clock, and(and(UInt<1>("h1"), _T_18), UInt<1>("h1")), "mem_wb_data: 0x%x\n", mem_wb_data) : printf_7 @[src/main/scala/micore/Core.scala 266:9] + printf(clock, and(and(UInt<1>("h1"), _T_20), UInt<1>("h1")), "wb_reg_wb_data: 0x%x\n", wb_reg_wb_data) : printf_8 @[src/main/scala/micore/Core.scala 267:9] + printf(clock, and(and(UInt<1>("h1"), _T_22), UInt<1>("h1")), "---------------\n") : printf_9 @[src/main/scala/micore/Core.scala 268:9] - module Memory : @[src/main/scala/micore/Memory.scala 24:7] - input clock : Clock @[src/main/scala/micore/Memory.scala 24:7] - input reset : UInt<1> @[src/main/scala/micore/Memory.scala 24:7] - input io_imem_addr : UInt<32> @[src/main/scala/micore/Memory.scala 25:14] - output io_imem_inst : UInt<32> @[src/main/scala/micore/Memory.scala 25:14] - input io_dmem_addr : UInt<32> @[src/main/scala/micore/Memory.scala 25:14] - output io_dmem_rdata : UInt<32> @[src/main/scala/micore/Memory.scala 25:14] - input io_dmem_wen : UInt<1> @[src/main/scala/micore/Memory.scala 25:14] - input io_dmem_wdata : UInt<32> @[src/main/scala/micore/Memory.scala 25:14] + module Memory : @[src/main/scala/micore/Memory.scala 20:7] + input clock : Clock @[src/main/scala/micore/Memory.scala 20:7] + input reset : UInt<1> @[src/main/scala/micore/Memory.scala 20:7] + input io_imem_addr : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + output io_imem_inst : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + input io_dmem_addr : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + output io_dmem_rdata : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + input io_dmem_wen : UInt<1> @[src/main/scala/micore/Memory.scala 21:14] + input io_dmem_wdata : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] - mem mem : @[src/main/scala/micore/Memory.scala 31:16] + mem mem : @[src/main/scala/micore/Memory.scala 26:16] data-type => UInt<8> depth => 4096 read-latency => 0 @@ -508,83 +454,83 @@ circuit TopOrigin : writer => MPORT_2 writer => MPORT_3 read-under-write => undefined - node _io_imem_inst_T = add(io_imem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 38:22] - node _io_imem_inst_T_1 = tail(_io_imem_inst_T, 1) @[src/main/scala/micore/Memory.scala 38:22] - node _io_imem_inst_T_2 = bits(_io_imem_inst_T_1, 11, 0) @[src/main/scala/micore/Memory.scala 38:8] - node _io_imem_inst_T_3 = add(io_imem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 39:22] - node _io_imem_inst_T_4 = tail(_io_imem_inst_T_3, 1) @[src/main/scala/micore/Memory.scala 39:22] - node _io_imem_inst_T_5 = bits(_io_imem_inst_T_4, 11, 0) @[src/main/scala/micore/Memory.scala 39:8] - node _io_imem_inst_T_6 = add(io_imem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 40:22] - node _io_imem_inst_T_7 = tail(_io_imem_inst_T_6, 1) @[src/main/scala/micore/Memory.scala 40:22] - node _io_imem_inst_T_8 = bits(_io_imem_inst_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 40:8] - node _io_imem_inst_T_9 = bits(io_imem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 41:8] - node io_imem_inst_lo = cat(mem.io_imem_inst_MPORT_2.data, mem.io_imem_inst_MPORT_3.data) @[src/main/scala/micore/Memory.scala 37:22] - node io_imem_inst_hi = cat(mem.io_imem_inst_MPORT.data, mem.io_imem_inst_MPORT_1.data) @[src/main/scala/micore/Memory.scala 37:22] - node _io_imem_inst_T_10 = cat(io_imem_inst_hi, io_imem_inst_lo) @[src/main/scala/micore/Memory.scala 37:22] - node _io_dmem_rdata_T = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 46:22] - node _io_dmem_rdata_T_1 = tail(_io_dmem_rdata_T, 1) @[src/main/scala/micore/Memory.scala 46:22] - node _io_dmem_rdata_T_2 = bits(_io_dmem_rdata_T_1, 11, 0) @[src/main/scala/micore/Memory.scala 46:8] - node _io_dmem_rdata_T_3 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 47:22] - node _io_dmem_rdata_T_4 = tail(_io_dmem_rdata_T_3, 1) @[src/main/scala/micore/Memory.scala 47:22] - node _io_dmem_rdata_T_5 = bits(_io_dmem_rdata_T_4, 11, 0) @[src/main/scala/micore/Memory.scala 47:8] - node _io_dmem_rdata_T_6 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 48:22] - node _io_dmem_rdata_T_7 = tail(_io_dmem_rdata_T_6, 1) @[src/main/scala/micore/Memory.scala 48:22] - node _io_dmem_rdata_T_8 = bits(_io_dmem_rdata_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 48:8] - node _io_dmem_rdata_T_9 = bits(io_dmem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 49:8] - node io_dmem_rdata_lo = cat(mem.io_dmem_rdata_MPORT_2.data, mem.io_dmem_rdata_MPORT_3.data) @[src/main/scala/micore/Memory.scala 45:23] - node io_dmem_rdata_hi = cat(mem.io_dmem_rdata_MPORT.data, mem.io_dmem_rdata_MPORT_1.data) @[src/main/scala/micore/Memory.scala 45:23] - node _io_dmem_rdata_T_10 = cat(io_dmem_rdata_hi, io_dmem_rdata_lo) @[src/main/scala/micore/Memory.scala 45:23] - node _T = bits(io_dmem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 54:8] - node _T_1 = bits(io_dmem_wdata, 7, 0) @[src/main/scala/micore/Memory.scala 54:39] - node _T_2 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 55:22] - node _T_3 = tail(_T_2, 1) @[src/main/scala/micore/Memory.scala 55:22] - node _T_4 = bits(_T_3, 11, 0) @[src/main/scala/micore/Memory.scala 55:8] - node _T_5 = bits(io_dmem_wdata, 15, 8) @[src/main/scala/micore/Memory.scala 55:57] - node _T_6 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 56:22] - node _T_7 = tail(_T_6, 1) @[src/main/scala/micore/Memory.scala 56:22] - node _T_8 = bits(_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 56:8] - node _T_9 = bits(io_dmem_wdata, 23, 16) @[src/main/scala/micore/Memory.scala 56:57] - node _T_10 = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 57:22] - node _T_11 = tail(_T_10, 1) @[src/main/scala/micore/Memory.scala 57:22] - node _T_12 = bits(_T_11, 11, 0) @[src/main/scala/micore/Memory.scala 57:8] - node _T_13 = bits(io_dmem_wdata, 31, 24) @[src/main/scala/micore/Memory.scala 57:57] - node _GEN_0 = validif(io_dmem_wen, _T) @[src/main/scala/micore/Memory.scala 53:21 54:8] - node _GEN_1 = validif(io_dmem_wen, clock) @[src/main/scala/micore/Memory.scala 53:21 54:8] - node _GEN_2 = mux(io_dmem_wen, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/micore/Memory.scala 31:16 53:21 54:8] - node _GEN_3 = validif(io_dmem_wen, UInt<1>("h1")) @[src/main/scala/micore/Memory.scala 53:21 54:23] - node _GEN_4 = validif(io_dmem_wen, _T_1) @[src/main/scala/micore/Memory.scala 53:21 54:23] - node _GEN_5 = validif(io_dmem_wen, _T_4) @[src/main/scala/micore/Memory.scala 53:21 55:8] - node _GEN_6 = validif(io_dmem_wen, _T_5) @[src/main/scala/micore/Memory.scala 53:21 55:41] - node _GEN_7 = validif(io_dmem_wen, _T_8) @[src/main/scala/micore/Memory.scala 53:21 56:8] - node _GEN_8 = validif(io_dmem_wen, _T_9) @[src/main/scala/micore/Memory.scala 53:21 56:41] - node _GEN_9 = validif(io_dmem_wen, _T_12) @[src/main/scala/micore/Memory.scala 53:21 57:8] - node _GEN_10 = validif(io_dmem_wen, _T_13) @[src/main/scala/micore/Memory.scala 53:21 57:41] - io_imem_inst <= _io_imem_inst_T_10 @[src/main/scala/micore/Memory.scala 37:16] - io_dmem_rdata <= _io_dmem_rdata_T_10 @[src/main/scala/micore/Memory.scala 45:17] - mem.io_imem_inst_MPORT.addr <= _io_imem_inst_T_2 @[src/main/scala/micore/Memory.scala 38:8] - mem.io_imem_inst_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 38:8] - mem.io_imem_inst_MPORT.clk <= clock @[src/main/scala/micore/Memory.scala 38:8] - mem.io_imem_inst_MPORT_1.addr <= _io_imem_inst_T_5 @[src/main/scala/micore/Memory.scala 39:8] - mem.io_imem_inst_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 39:8] - mem.io_imem_inst_MPORT_1.clk <= clock @[src/main/scala/micore/Memory.scala 39:8] - mem.io_imem_inst_MPORT_2.addr <= _io_imem_inst_T_8 @[src/main/scala/micore/Memory.scala 40:8] - mem.io_imem_inst_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 40:8] - mem.io_imem_inst_MPORT_2.clk <= clock @[src/main/scala/micore/Memory.scala 40:8] - mem.io_imem_inst_MPORT_3.addr <= _io_imem_inst_T_9 @[src/main/scala/micore/Memory.scala 41:8] - mem.io_imem_inst_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 41:8] - mem.io_imem_inst_MPORT_3.clk <= clock @[src/main/scala/micore/Memory.scala 41:8] - mem.io_dmem_rdata_MPORT.addr <= _io_dmem_rdata_T_2 @[src/main/scala/micore/Memory.scala 46:8] - mem.io_dmem_rdata_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 46:8] - mem.io_dmem_rdata_MPORT.clk <= clock @[src/main/scala/micore/Memory.scala 46:8] - mem.io_dmem_rdata_MPORT_1.addr <= _io_dmem_rdata_T_5 @[src/main/scala/micore/Memory.scala 47:8] - mem.io_dmem_rdata_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 47:8] - mem.io_dmem_rdata_MPORT_1.clk <= clock @[src/main/scala/micore/Memory.scala 47:8] - mem.io_dmem_rdata_MPORT_2.addr <= _io_dmem_rdata_T_8 @[src/main/scala/micore/Memory.scala 48:8] - mem.io_dmem_rdata_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 48:8] - mem.io_dmem_rdata_MPORT_2.clk <= clock @[src/main/scala/micore/Memory.scala 48:8] - mem.io_dmem_rdata_MPORT_3.addr <= _io_dmem_rdata_T_9 @[src/main/scala/micore/Memory.scala 49:8] - mem.io_dmem_rdata_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 49:8] - mem.io_dmem_rdata_MPORT_3.clk <= clock @[src/main/scala/micore/Memory.scala 49:8] + node _io_imem_inst_T = add(io_imem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 31:22] + node _io_imem_inst_T_1 = tail(_io_imem_inst_T, 1) @[src/main/scala/micore/Memory.scala 31:22] + node _io_imem_inst_T_2 = bits(_io_imem_inst_T_1, 11, 0) @[src/main/scala/micore/Memory.scala 31:8] + node _io_imem_inst_T_3 = add(io_imem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 32:22] + node _io_imem_inst_T_4 = tail(_io_imem_inst_T_3, 1) @[src/main/scala/micore/Memory.scala 32:22] + node _io_imem_inst_T_5 = bits(_io_imem_inst_T_4, 11, 0) @[src/main/scala/micore/Memory.scala 32:8] + node _io_imem_inst_T_6 = add(io_imem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 33:22] + node _io_imem_inst_T_7 = tail(_io_imem_inst_T_6, 1) @[src/main/scala/micore/Memory.scala 33:22] + node _io_imem_inst_T_8 = bits(_io_imem_inst_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 33:8] + node _io_imem_inst_T_9 = bits(io_imem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 34:8] + node io_imem_inst_lo = cat(mem.io_imem_inst_MPORT_2.data, mem.io_imem_inst_MPORT_3.data) @[src/main/scala/micore/Memory.scala 30:22] + node io_imem_inst_hi = cat(mem.io_imem_inst_MPORT.data, mem.io_imem_inst_MPORT_1.data) @[src/main/scala/micore/Memory.scala 30:22] + node _io_imem_inst_T_10 = cat(io_imem_inst_hi, io_imem_inst_lo) @[src/main/scala/micore/Memory.scala 30:22] + node _io_dmem_rdata_T = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 38:22] + node _io_dmem_rdata_T_1 = tail(_io_dmem_rdata_T, 1) @[src/main/scala/micore/Memory.scala 38:22] + node _io_dmem_rdata_T_2 = bits(_io_dmem_rdata_T_1, 11, 0) @[src/main/scala/micore/Memory.scala 38:8] + node _io_dmem_rdata_T_3 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 39:22] + node _io_dmem_rdata_T_4 = tail(_io_dmem_rdata_T_3, 1) @[src/main/scala/micore/Memory.scala 39:22] + node _io_dmem_rdata_T_5 = bits(_io_dmem_rdata_T_4, 11, 0) @[src/main/scala/micore/Memory.scala 39:8] + node _io_dmem_rdata_T_6 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 40:22] + node _io_dmem_rdata_T_7 = tail(_io_dmem_rdata_T_6, 1) @[src/main/scala/micore/Memory.scala 40:22] + node _io_dmem_rdata_T_8 = bits(_io_dmem_rdata_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 40:8] + node _io_dmem_rdata_T_9 = bits(io_dmem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 41:8] + node io_dmem_rdata_lo = cat(mem.io_dmem_rdata_MPORT_2.data, mem.io_dmem_rdata_MPORT_3.data) @[src/main/scala/micore/Memory.scala 37:23] + node io_dmem_rdata_hi = cat(mem.io_dmem_rdata_MPORT.data, mem.io_dmem_rdata_MPORT_1.data) @[src/main/scala/micore/Memory.scala 37:23] + node _io_dmem_rdata_T_10 = cat(io_dmem_rdata_hi, io_dmem_rdata_lo) @[src/main/scala/micore/Memory.scala 37:23] + node _T = bits(io_dmem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 45:8] + node _T_1 = bits(io_dmem_wdata, 7, 0) @[src/main/scala/micore/Memory.scala 45:39] + node _T_2 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 46:22] + node _T_3 = tail(_T_2, 1) @[src/main/scala/micore/Memory.scala 46:22] + node _T_4 = bits(_T_3, 11, 0) @[src/main/scala/micore/Memory.scala 46:8] + node _T_5 = bits(io_dmem_wdata, 15, 8) @[src/main/scala/micore/Memory.scala 46:57] + node _T_6 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 47:22] + node _T_7 = tail(_T_6, 1) @[src/main/scala/micore/Memory.scala 47:22] + node _T_8 = bits(_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 47:8] + node _T_9 = bits(io_dmem_wdata, 23, 16) @[src/main/scala/micore/Memory.scala 47:57] + node _T_10 = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 48:22] + node _T_11 = tail(_T_10, 1) @[src/main/scala/micore/Memory.scala 48:22] + node _T_12 = bits(_T_11, 11, 0) @[src/main/scala/micore/Memory.scala 48:8] + node _T_13 = bits(io_dmem_wdata, 31, 24) @[src/main/scala/micore/Memory.scala 48:57] + node _GEN_0 = validif(io_dmem_wen, _T) @[src/main/scala/micore/Memory.scala 44:21 45:8] + node _GEN_1 = validif(io_dmem_wen, clock) @[src/main/scala/micore/Memory.scala 44:21 45:8] + node _GEN_2 = mux(io_dmem_wen, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/micore/Memory.scala 26:16 44:21 45:8] + node _GEN_3 = validif(io_dmem_wen, UInt<1>("h1")) @[src/main/scala/micore/Memory.scala 44:21 45:23] + node _GEN_4 = validif(io_dmem_wen, _T_1) @[src/main/scala/micore/Memory.scala 44:21 45:23] + node _GEN_5 = validif(io_dmem_wen, _T_4) @[src/main/scala/micore/Memory.scala 44:21 46:8] + node _GEN_6 = validif(io_dmem_wen, _T_5) @[src/main/scala/micore/Memory.scala 44:21 46:41] + node _GEN_7 = validif(io_dmem_wen, _T_8) @[src/main/scala/micore/Memory.scala 44:21 47:8] + node _GEN_8 = validif(io_dmem_wen, _T_9) @[src/main/scala/micore/Memory.scala 44:21 47:41] + node _GEN_9 = validif(io_dmem_wen, _T_12) @[src/main/scala/micore/Memory.scala 44:21 48:8] + node _GEN_10 = validif(io_dmem_wen, _T_13) @[src/main/scala/micore/Memory.scala 44:21 48:41] + io_imem_inst <= _io_imem_inst_T_10 @[src/main/scala/micore/Memory.scala 30:16] + io_dmem_rdata <= _io_dmem_rdata_T_10 @[src/main/scala/micore/Memory.scala 37:17] + mem.io_imem_inst_MPORT.addr <= _io_imem_inst_T_2 @[src/main/scala/micore/Memory.scala 31:8] + mem.io_imem_inst_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 31:8] + mem.io_imem_inst_MPORT.clk <= clock @[src/main/scala/micore/Memory.scala 31:8] + mem.io_imem_inst_MPORT_1.addr <= _io_imem_inst_T_5 @[src/main/scala/micore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_1.clk <= clock @[src/main/scala/micore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_2.addr <= _io_imem_inst_T_8 @[src/main/scala/micore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_2.clk <= clock @[src/main/scala/micore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_3.addr <= _io_imem_inst_T_9 @[src/main/scala/micore/Memory.scala 34:8] + mem.io_imem_inst_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 34:8] + mem.io_imem_inst_MPORT_3.clk <= clock @[src/main/scala/micore/Memory.scala 34:8] + mem.io_dmem_rdata_MPORT.addr <= _io_dmem_rdata_T_2 @[src/main/scala/micore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT.clk <= clock @[src/main/scala/micore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT_1.addr <= _io_dmem_rdata_T_5 @[src/main/scala/micore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_1.clk <= clock @[src/main/scala/micore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_2.addr <= _io_dmem_rdata_T_8 @[src/main/scala/micore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_2.clk <= clock @[src/main/scala/micore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_3.addr <= _io_dmem_rdata_T_9 @[src/main/scala/micore/Memory.scala 41:8] + mem.io_dmem_rdata_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 41:8] + mem.io_dmem_rdata_MPORT_3.clk <= clock @[src/main/scala/micore/Memory.scala 41:8] mem.MPORT.addr <= _GEN_0 mem.MPORT.en <= _GEN_2 mem.MPORT.clk <= _GEN_1 diff --git a/test_run_dir/Sicore_should_run_the_C_program/TopOrigin.lo.fir b/test_run_dir/Sicore_should_run_the_C_program/TopOrigin.lo.fir index 366d2f3..27a8fe7 100755 --- a/test_run_dir/Sicore_should_run_the_C_program/TopOrigin.lo.fir +++ b/test_run_dir/Sicore_should_run_the_C_program/TopOrigin.lo.fir @@ -11,7 +11,7 @@ circuit TopOrigin : output io_dmem_wdata : UInt<32> @[src/main/scala/sicore/Core.scala 10:14] output io_exit : UInt<1> @[src/main/scala/sicore/Core.scala 10:14] - mem regfile : @[src/main/scala/sicore/Core.scala 17:20] + mem regfile : @[src/main/scala/sicore/Core.scala 16:20] data-type => UInt<32> depth => 32 read-latency => 0 @@ -22,14 +22,14 @@ circuit TopOrigin : writer => MPORT read-under-write => undefined reg pc_reg : UInt<32>, clock with : - reset => (UInt<1>("h0"), pc_reg) @[src/main/scala/sicore/Core.scala 20:23] - node _pc_plus4_T = add(pc_reg, UInt<32>("h4")) @[src/main/scala/sicore/Core.scala 23:25] - node pc_plus4 = tail(_pc_plus4_T, 1) @[src/main/scala/sicore/Core.scala 23:25] - node _jmp_flg_T = and(io_imem_inst, UInt<32>("hfc000000")) @[src/main/scala/sicore/Core.scala 26:23] - node _jmp_flg_T_1 = eq(UInt<28>("hc000000"), _jmp_flg_T) @[src/main/scala/sicore/Core.scala 26:23] - node _jmp_flg_T_2 = and(io_imem_inst, UInt<32>("hfc00003f")) @[src/main/scala/sicore/Core.scala 26:39] - node _jmp_flg_T_3 = eq(UInt<4>("h8"), _jmp_flg_T_2) @[src/main/scala/sicore/Core.scala 26:39] - node jmp_flg = or(_jmp_flg_T_1, _jmp_flg_T_3) @[src/main/scala/sicore/Core.scala 26:31] + reset => (UInt<1>("h0"), pc_reg) @[src/main/scala/sicore/Core.scala 19:23] + node _pc_plus4_T = add(pc_reg, UInt<32>("h4")) @[src/main/scala/sicore/Core.scala 22:25] + node pc_plus4 = tail(_pc_plus4_T, 1) @[src/main/scala/sicore/Core.scala 22:25] + node _jmp_flg_T = and(io_imem_inst, UInt<32>("hfc000000")) @[src/main/scala/sicore/Core.scala 25:23] + node _jmp_flg_T_1 = eq(UInt<28>("hc000000"), _jmp_flg_T) @[src/main/scala/sicore/Core.scala 25:23] + node _jmp_flg_T_2 = and(io_imem_inst, UInt<32>("hfc00003f")) @[src/main/scala/sicore/Core.scala 25:39] + node _jmp_flg_T_3 = eq(UInt<4>("h8"), _jmp_flg_T_2) @[src/main/scala/sicore/Core.scala 25:39] + node jmp_flg = or(_jmp_flg_T_1, _jmp_flg_T_3) @[src/main/scala/sicore/Core.scala 25:31] node _csignals_T = and(io_imem_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] node _csignals_T_1 = eq(UInt<32>("h8c000000"), _csignals_T) @[src/main/scala/chisel3/util/Lookup.scala 31:38] node _csignals_T_2 = and(io_imem_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] @@ -84,7 +84,7 @@ circuit TopOrigin : node _csignals_T_51 = mux(_csignals_T_5, UInt<5>("h1"), _csignals_T_50) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_52 = mux(_csignals_T_3, UInt<5>("h1"), _csignals_T_51) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node csignals_0 = mux(_csignals_T_1, UInt<5>("h1"), _csignals_T_52) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _alu_out_T = eq(csignals_0, UInt<5>("h1")) @[src/main/scala/sicore/Core.scala 98:16] + node _alu_out_T = eq(csignals_0, UInt<5>("h1")) @[src/main/scala/sicore/Core.scala 97:16] node _csignals_T_53 = mux(_csignals_T_35, UInt<2>("h1"), UInt<2>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_54 = mux(_csignals_T_33, UInt<2>("h2"), _csignals_T_53) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_55 = mux(_csignals_T_31, UInt<2>("h1"), _csignals_T_54) @[src/main/scala/chisel3/util/Lookup.scala 34:39] @@ -103,11 +103,11 @@ circuit TopOrigin : node _csignals_T_68 = mux(_csignals_T_5, UInt<2>("h1"), _csignals_T_67) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_69 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_68) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node csignals_1 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_69) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _op1_data_T = eq(csignals_1, UInt<2>("h1")) @[src/main/scala/sicore/Core.scala 80:16] - node rs_addr = bits(io_imem_inst, 25, 21) @[src/main/scala/sicore/Core.scala 40:21] - node _rs_data_T = neq(rs_addr, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 43:30] - node rs_data = mux(_rs_data_T, regfile.rs_data_MPORT.data, UInt<32>("h0")) @[src/main/scala/sicore/Core.scala 43:20] - node _op1_data_T_1 = eq(csignals_1, UInt<2>("h2")) @[src/main/scala/sicore/Core.scala 81:16] + node _op1_data_T = eq(csignals_1, UInt<2>("h1")) @[src/main/scala/sicore/Core.scala 79:16] + node rs_addr = bits(io_imem_inst, 25, 21) @[src/main/scala/sicore/Core.scala 39:21] + node _rs_data_T = neq(rs_addr, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 42:30] + node rs_data = mux(_rs_data_T, regfile.rs_data_MPORT.data, UInt<32>("h0")) @[src/main/scala/sicore/Core.scala 42:20] + node _op1_data_T_1 = eq(csignals_1, UInt<2>("h2")) @[src/main/scala/sicore/Core.scala 80:16] node _op1_data_T_2 = mux(_op1_data_T_1, pc_reg, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] node op1_data = mux(_op1_data_T, rs_data, _op1_data_T_2) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _csignals_T_70 = mux(_csignals_T_35, UInt<3>("h0"), UInt<3>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] @@ -128,50 +128,50 @@ circuit TopOrigin : node _csignals_T_85 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_84) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_86 = mux(_csignals_T_3, UInt<3>("h2"), _csignals_T_85) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node csignals_2 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_86) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _op2_data_T = eq(csignals_2, UInt<3>("h1")) @[src/main/scala/sicore/Core.scala 88:16] - node rt_addr = bits(io_imem_inst, 20, 16) @[src/main/scala/sicore/Core.scala 41:21] - node _rt_data_T = neq(rt_addr, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 44:30] - node rt_data = mux(_rt_data_T, regfile.rt_data_MPORT.data, UInt<32>("h0")) @[src/main/scala/sicore/Core.scala 44:20] - node _op2_data_T_1 = eq(csignals_2, UInt<3>("h2")) @[src/main/scala/sicore/Core.scala 89:16] - node imm_i = bits(io_imem_inst, 15, 0) @[src/main/scala/sicore/Core.scala 45:19] - node _imm_i_sext_T = bits(imm_i, 15, 15) @[src/main/scala/sicore/Core.scala 46:38] - node _imm_i_sext_T_1 = mux(_imm_i_sext_T, UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/sicore/Core.scala 46:28] - node imm_i_sext = cat(_imm_i_sext_T_1, imm_i) @[src/main/scala/sicore/Core.scala 46:23] - node _op2_data_T_2 = eq(csignals_2, UInt<3>("h4")) @[src/main/scala/sicore/Core.scala 90:16] - node _imm_j_T = bits(io_imem_inst, 25, 0) @[src/main/scala/sicore/Core.scala 47:23] - node _imm_j_T_1 = mux(UInt<1>("h0"), UInt<2>("h3"), UInt<2>("h0")) @[src/main/scala/sicore/Core.scala 47:36] - node imm_j = cat(_imm_j_T, _imm_j_T_1) @[src/main/scala/sicore/Core.scala 47:18] + node _op2_data_T = eq(csignals_2, UInt<3>("h1")) @[src/main/scala/sicore/Core.scala 87:16] + node rt_addr = bits(io_imem_inst, 20, 16) @[src/main/scala/sicore/Core.scala 40:21] + node _rt_data_T = neq(rt_addr, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 43:30] + node rt_data = mux(_rt_data_T, regfile.rt_data_MPORT.data, UInt<32>("h0")) @[src/main/scala/sicore/Core.scala 43:20] + node _op2_data_T_1 = eq(csignals_2, UInt<3>("h2")) @[src/main/scala/sicore/Core.scala 88:16] + node imm_i = bits(io_imem_inst, 15, 0) @[src/main/scala/sicore/Core.scala 44:19] + node _imm_i_sext_T = bits(imm_i, 15, 15) @[src/main/scala/sicore/Core.scala 45:38] + node _imm_i_sext_T_1 = mux(_imm_i_sext_T, UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/sicore/Core.scala 45:28] + node imm_i_sext = cat(_imm_i_sext_T_1, imm_i) @[src/main/scala/sicore/Core.scala 45:23] + node _op2_data_T_2 = eq(csignals_2, UInt<3>("h4")) @[src/main/scala/sicore/Core.scala 89:16] + node _imm_j_T = bits(io_imem_inst, 25, 0) @[src/main/scala/sicore/Core.scala 46:23] + node _imm_j_T_1 = mux(UInt<1>("h0"), UInt<2>("h3"), UInt<2>("h0")) @[src/main/scala/sicore/Core.scala 46:36] + node imm_j = cat(_imm_j_T, _imm_j_T_1) @[src/main/scala/sicore/Core.scala 46:18] node _op2_data_T_3 = mux(_op2_data_T_2, imm_j, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _op2_data_T_4 = mux(_op2_data_T_1, imm_i_sext, _op2_data_T_3) @[src/main/scala/chisel3/util/Mux.scala 126:16] node op2_data = mux(_op2_data_T, rt_data, _op2_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _alu_out_T_1 = add(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 98:42] - node _alu_out_T_2 = tail(_alu_out_T_1, 1) @[src/main/scala/sicore/Core.scala 98:42] - node _alu_out_T_3 = eq(csignals_0, UInt<5>("h2")) @[src/main/scala/sicore/Core.scala 99:16] - node _alu_out_T_4 = sub(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 99:42] - node _alu_out_T_5 = tail(_alu_out_T_4, 1) @[src/main/scala/sicore/Core.scala 99:42] - node _alu_out_T_6 = eq(csignals_0, UInt<5>("h3")) @[src/main/scala/sicore/Core.scala 100:16] - node _alu_out_T_7 = and(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 100:42] - node _alu_out_T_8 = eq(csignals_0, UInt<5>("h4")) @[src/main/scala/sicore/Core.scala 101:16] - node _alu_out_T_9 = or(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 101:41] - node _alu_out_T_10 = eq(csignals_0, UInt<5>("h5")) @[src/main/scala/sicore/Core.scala 102:16] - node _alu_out_T_11 = xor(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 102:42] - node _alu_out_T_12 = eq(csignals_0, UInt<5>("h6")) @[src/main/scala/sicore/Core.scala 103:16] - node _alu_out_T_13 = bits(op2_data, 4, 0) @[src/main/scala/sicore/Core.scala 103:53] - node _alu_out_T_14 = dshl(op1_data, _alu_out_T_13) @[src/main/scala/sicore/Core.scala 103:42] - node _alu_out_T_15 = bits(_alu_out_T_14, 31, 0) @[src/main/scala/sicore/Core.scala 103:60] - node _alu_out_T_16 = eq(csignals_0, UInt<5>("h7")) @[src/main/scala/sicore/Core.scala 104:16] - node _alu_out_T_17 = bits(op2_data, 4, 0) @[src/main/scala/sicore/Core.scala 104:53] - node _alu_out_T_18 = dshr(op1_data, _alu_out_T_17) @[src/main/scala/sicore/Core.scala 104:42] - node _alu_out_T_19 = eq(csignals_0, UInt<5>("h8")) @[src/main/scala/sicore/Core.scala 105:16] - node _alu_out_T_20 = asSInt(op1_data) @[src/main/scala/sicore/Core.scala 105:42] - node _alu_out_T_21 = bits(op2_data, 4, 0) @[src/main/scala/sicore/Core.scala 105:60] - node _alu_out_T_22 = dshr(_alu_out_T_20, _alu_out_T_21) @[src/main/scala/sicore/Core.scala 105:49] - node _alu_out_T_23 = asUInt(_alu_out_T_22) @[src/main/scala/sicore/Core.scala 105:68] - node _alu_out_T_24 = eq(csignals_0, UInt<5>("h9")) @[src/main/scala/sicore/Core.scala 106:16] - node _alu_out_T_25 = asSInt(op1_data) @[src/main/scala/sicore/Core.scala 106:42] - node _alu_out_T_26 = asSInt(op2_data) @[src/main/scala/sicore/Core.scala 106:60] - node _alu_out_T_27 = lt(_alu_out_T_25, _alu_out_T_26) @[src/main/scala/sicore/Core.scala 106:49] - node _alu_out_T_28 = eq(csignals_0, UInt<5>("hd")) @[src/main/scala/sicore/Core.scala 107:16] + node _alu_out_T_1 = add(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 97:42] + node _alu_out_T_2 = tail(_alu_out_T_1, 1) @[src/main/scala/sicore/Core.scala 97:42] + node _alu_out_T_3 = eq(csignals_0, UInt<5>("h2")) @[src/main/scala/sicore/Core.scala 98:16] + node _alu_out_T_4 = sub(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 98:42] + node _alu_out_T_5 = tail(_alu_out_T_4, 1) @[src/main/scala/sicore/Core.scala 98:42] + node _alu_out_T_6 = eq(csignals_0, UInt<5>("h3")) @[src/main/scala/sicore/Core.scala 99:16] + node _alu_out_T_7 = and(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 99:42] + node _alu_out_T_8 = eq(csignals_0, UInt<5>("h4")) @[src/main/scala/sicore/Core.scala 100:16] + node _alu_out_T_9 = or(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 100:41] + node _alu_out_T_10 = eq(csignals_0, UInt<5>("h5")) @[src/main/scala/sicore/Core.scala 101:16] + node _alu_out_T_11 = xor(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 101:42] + node _alu_out_T_12 = eq(csignals_0, UInt<5>("h6")) @[src/main/scala/sicore/Core.scala 102:16] + node _alu_out_T_13 = bits(op2_data, 4, 0) @[src/main/scala/sicore/Core.scala 102:53] + node _alu_out_T_14 = dshl(op1_data, _alu_out_T_13) @[src/main/scala/sicore/Core.scala 102:42] + node _alu_out_T_15 = bits(_alu_out_T_14, 31, 0) @[src/main/scala/sicore/Core.scala 102:60] + node _alu_out_T_16 = eq(csignals_0, UInt<5>("h7")) @[src/main/scala/sicore/Core.scala 103:16] + node _alu_out_T_17 = bits(op2_data, 4, 0) @[src/main/scala/sicore/Core.scala 103:53] + node _alu_out_T_18 = dshr(op1_data, _alu_out_T_17) @[src/main/scala/sicore/Core.scala 103:42] + node _alu_out_T_19 = eq(csignals_0, UInt<5>("h8")) @[src/main/scala/sicore/Core.scala 104:16] + node _alu_out_T_20 = asSInt(op1_data) @[src/main/scala/sicore/Core.scala 104:42] + node _alu_out_T_21 = bits(op2_data, 4, 0) @[src/main/scala/sicore/Core.scala 104:60] + node _alu_out_T_22 = dshr(_alu_out_T_20, _alu_out_T_21) @[src/main/scala/sicore/Core.scala 104:49] + node _alu_out_T_23 = asUInt(_alu_out_T_22) @[src/main/scala/sicore/Core.scala 104:68] + node _alu_out_T_24 = eq(csignals_0, UInt<5>("h9")) @[src/main/scala/sicore/Core.scala 105:16] + node _alu_out_T_25 = asSInt(op1_data) @[src/main/scala/sicore/Core.scala 105:42] + node _alu_out_T_26 = asSInt(op2_data) @[src/main/scala/sicore/Core.scala 105:60] + node _alu_out_T_27 = lt(_alu_out_T_25, _alu_out_T_26) @[src/main/scala/sicore/Core.scala 105:49] + node _alu_out_T_28 = eq(csignals_0, UInt<5>("hd")) @[src/main/scala/sicore/Core.scala 106:16] node _alu_out_T_29 = mux(_alu_out_T_28, op1_data, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _alu_out_T_30 = mux(_alu_out_T_24, _alu_out_T_27, _alu_out_T_29) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _alu_out_T_31 = mux(_alu_out_T_19, _alu_out_T_23, _alu_out_T_30) @[src/main/scala/chisel3/util/Mux.scala 126:16] @@ -182,22 +182,22 @@ circuit TopOrigin : node _alu_out_T_36 = mux(_alu_out_T_6, _alu_out_T_7, _alu_out_T_35) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _alu_out_T_37 = mux(_alu_out_T_3, _alu_out_T_5, _alu_out_T_36) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _alu_out_T_38 = mux(_alu_out_T, _alu_out_T_2, _alu_out_T_37) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node alu_out = _alu_out_T_38 @[src/main/scala/sicore/Core.scala 27:21 95:11] + node alu_out = _alu_out_T_38 @[src/main/scala/sicore/Core.scala 26:21 94:11] node _pc_next_T = mux(jmp_flg, alu_out, pc_plus4) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _br_flg_T = eq(csignals_0, UInt<5>("hb")) @[src/main/scala/sicore/Core.scala 114:16] - node _br_flg_T_1 = eq(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 114:41] - node _br_flg_T_2 = eq(csignals_0, UInt<5>("hc")) @[src/main/scala/sicore/Core.scala 115:16] - node _br_flg_T_3 = eq(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 115:42] - node _br_flg_T_4 = eq(_br_flg_T_3, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 115:31] + node _br_flg_T = eq(csignals_0, UInt<5>("hb")) @[src/main/scala/sicore/Core.scala 113:16] + node _br_flg_T_1 = eq(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 113:41] + node _br_flg_T_2 = eq(csignals_0, UInt<5>("hc")) @[src/main/scala/sicore/Core.scala 114:16] + node _br_flg_T_3 = eq(op1_data, op2_data) @[src/main/scala/sicore/Core.scala 114:42] + node _br_flg_T_4 = eq(_br_flg_T_3, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 114:31] node _br_flg_T_5 = mux(_br_flg_T_2, _br_flg_T_4, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] node _br_flg_T_6 = mux(_br_flg_T, _br_flg_T_1, _br_flg_T_5) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node br_flg = _br_flg_T_6 @[src/main/scala/sicore/Core.scala 111:10 24:20] - node _br_target_T = dshl(imm_i_sext, UInt<5>("h2")) @[src/main/scala/sicore/Core.scala 120:37] - node _br_target_T_1 = add(pc_reg, _br_target_T) @[src/main/scala/sicore/Core.scala 120:23] - node _br_target_T_2 = tail(_br_target_T_1, 1) @[src/main/scala/sicore/Core.scala 120:23] - node br_target = bits(_br_target_T_2, 31, 0) @[src/main/scala/sicore/Core.scala 120:13 25:23] + node br_flg = _br_flg_T_6 @[src/main/scala/sicore/Core.scala 110:10 23:20] + node _br_target_T = dshl(imm_i_sext, UInt<5>("h2")) @[src/main/scala/sicore/Core.scala 119:37] + node _br_target_T_1 = add(pc_reg, _br_target_T) @[src/main/scala/sicore/Core.scala 119:23] + node _br_target_T_2 = tail(_br_target_T_1, 1) @[src/main/scala/sicore/Core.scala 119:23] + node br_target = bits(_br_target_T_2, 31, 0) @[src/main/scala/sicore/Core.scala 119:13 24:23] node pc_next = mux(br_flg, br_target, _pc_next_T) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node rd_addr = bits(io_imem_inst, 15, 11) @[src/main/scala/sicore/Core.scala 42:21] + node rd_addr = bits(io_imem_inst, 15, 11) @[src/main/scala/sicore/Core.scala 41:21] node _csignals_T_87 = mux(_csignals_T_35, UInt<2>("h0"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_88 = mux(_csignals_T_33, UInt<2>("h0"), _csignals_T_87) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_89 = mux(_csignals_T_31, UInt<2>("h0"), _csignals_T_88) @[src/main/scala/chisel3/util/Lookup.scala 34:39] @@ -252,101 +252,101 @@ circuit TopOrigin : node _csignals_T_136 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_135) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node _csignals_T_137 = mux(_csignals_T_3, UInt<3>("h0"), _csignals_T_136) @[src/main/scala/chisel3/util/Lookup.scala 34:39] node csignals_5 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_137) @[src/main/scala/chisel3/util/Lookup.scala 34:39] - node _wb_data_T = eq(csignals_5, UInt<3>("h2")) @[src/main/scala/sicore/Core.scala 131:15] - node _wb_data_T_1 = eq(csignals_5, UInt<3>("h3")) @[src/main/scala/sicore/Core.scala 132:15] + node _wb_data_T = eq(csignals_5, UInt<3>("h2")) @[src/main/scala/sicore/Core.scala 130:15] + node _wb_data_T_1 = eq(csignals_5, UInt<3>("h3")) @[src/main/scala/sicore/Core.scala 131:15] node _wb_data_T_2 = mux(_wb_data_T_1, pc_plus4, alu_out) @[src/main/scala/chisel3/util/Mux.scala 126:16] node wb_data = mux(_wb_data_T, io_dmem_rdata, _wb_data_T_2) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _wb_addr_T = eq(csignals_5, UInt<3>("h1")) @[src/main/scala/sicore/Core.scala 140:15] - node _wb_addr_T_1 = bits(io_imem_inst, 31, 26) @[src/main/scala/sicore/Core.scala 140:33] - node _wb_addr_T_2 = eq(_wb_addr_T_1, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 140:42] - node _wb_addr_T_3 = and(_wb_addr_T, _wb_addr_T_2) @[src/main/scala/sicore/Core.scala 140:26] - node _wb_addr_T_4 = and(io_imem_inst, UInt<32>("hfc000000")) @[src/main/scala/sicore/Core.scala 141:13] - node _wb_addr_T_5 = eq(UInt<28>("hc000000"), _wb_addr_T_4) @[src/main/scala/sicore/Core.scala 141:13] + node _wb_addr_T = eq(csignals_5, UInt<3>("h1")) @[src/main/scala/sicore/Core.scala 138:15] + node _wb_addr_T_1 = bits(io_imem_inst, 31, 26) @[src/main/scala/sicore/Core.scala 138:33] + node _wb_addr_T_2 = eq(_wb_addr_T_1, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 138:42] + node _wb_addr_T_3 = and(_wb_addr_T, _wb_addr_T_2) @[src/main/scala/sicore/Core.scala 138:26] + node _wb_addr_T_4 = and(io_imem_inst, UInt<32>("hfc000000")) @[src/main/scala/sicore/Core.scala 139:13] + node _wb_addr_T_5 = eq(UInt<28>("hc000000"), _wb_addr_T_4) @[src/main/scala/sicore/Core.scala 139:13] node _wb_addr_T_6 = mux(_wb_addr_T_5, UInt<5>("h1f"), rt_addr) @[src/main/scala/chisel3/util/Mux.scala 126:16] node wb_addr = mux(_wb_addr_T_3, rd_addr, _wb_addr_T_6) @[src/main/scala/chisel3/util/Mux.scala 126:16] - node _T = eq(csignals_4, UInt<2>("h1")) @[src/main/scala/sicore/Core.scala 146:15] - node _T_1 = neq(wb_addr, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 146:36] - node _T_2 = and(_T, _T_1) @[src/main/scala/sicore/Core.scala 146:25] - node _GEN_0 = validif(_T_2, wb_addr) @[src/main/scala/sicore/Core.scala 146:45 147:12] - node _GEN_1 = validif(_T_2, clock) @[src/main/scala/sicore/Core.scala 146:45 147:12] - node _GEN_2 = mux(_T_2, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 146:45 147:12 17:20] - node _GEN_3 = validif(_T_2, UInt<1>("h1")) @[src/main/scala/sicore/Core.scala 146:45 147:22] - node _GEN_4 = validif(_T_2, wb_data) @[src/main/scala/sicore/Core.scala 146:45 147:22] - node _io_exit_T = eq(io_imem_inst, UInt<32>("h114514")) @[src/main/scala/sicore/Core.scala 150:20] - node _T_3 = asUInt(reset) @[src/main/scala/sicore/Core.scala 153:9] - node _T_4 = eq(_T_3, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 153:9] - node _T_5 = asUInt(reset) @[src/main/scala/sicore/Core.scala 154:9] - node _T_6 = eq(_T_5, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 154:9] - node _T_7 = asUInt(reset) @[src/main/scala/sicore/Core.scala 155:9] - node _T_8 = eq(_T_7, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 155:9] - node _T_9 = asUInt(reset) @[src/main/scala/sicore/Core.scala 156:9] - node _T_10 = eq(_T_9, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 156:9] - node _T_11 = asUInt(reset) @[src/main/scala/sicore/Core.scala 157:9] - node _T_12 = eq(_T_11, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 157:9] - node _T_13 = asUInt(reset) @[src/main/scala/sicore/Core.scala 158:9] - node _T_14 = eq(_T_13, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 158:9] - node _T_15 = asUInt(reset) @[src/main/scala/sicore/Core.scala 159:9] - node _T_16 = eq(_T_15, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 159:9] - node _T_17 = asUInt(reset) @[src/main/scala/sicore/Core.scala 160:9] - node _T_18 = eq(_T_17, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 160:9] - node _T_19 = asUInt(reset) @[src/main/scala/sicore/Core.scala 161:9] - node _T_20 = eq(_T_19, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 161:9] - node _T_21 = asUInt(reset) @[src/main/scala/sicore/Core.scala 162:9] - node _T_22 = eq(_T_21, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 162:9] - node _T_23 = asUInt(reset) @[src/main/scala/sicore/Core.scala 164:9] - node _T_24 = eq(_T_23, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 164:9] - node _T_25 = asUInt(reset) @[src/main/scala/sicore/Core.scala 165:9] - node _T_26 = eq(_T_25, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 165:9] - node _T_27 = asUInt(reset) @[src/main/scala/sicore/Core.scala 166:9] - node _T_28 = eq(_T_27, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 166:9] - node _T_29 = asUInt(reset) @[src/main/scala/sicore/Core.scala 167:9] - node _T_30 = eq(_T_29, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 167:9] - io_imem_addr <= pc_reg @[src/main/scala/sicore/Core.scala 21:16] - io_dmem_addr <= alu_out @[src/main/scala/sicore/Core.scala 123:16] - io_dmem_wen <= bits(csignals_3, 0, 0) @[src/main/scala/sicore/Core.scala 124:15] - io_dmem_wdata <= rt_data @[src/main/scala/sicore/Core.scala 125:17] - io_exit <= _io_exit_T @[src/main/scala/sicore/Core.scala 150:11] - regfile.rs_data_MPORT.addr <= rs_addr @[src/main/scala/sicore/Core.scala 43:47] - regfile.rs_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Core.scala 43:47] - regfile.rs_data_MPORT.clk <= clock @[src/main/scala/sicore/Core.scala 43:47] - regfile.rt_data_MPORT.addr <= rt_addr @[src/main/scala/sicore/Core.scala 44:47] - regfile.rt_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Core.scala 44:47] - regfile.rt_data_MPORT.clk <= clock @[src/main/scala/sicore/Core.scala 44:47] - regfile.MPORT_1.addr <= rt_addr @[src/main/scala/sicore/Core.scala 161:40] - regfile.MPORT_1.en <= UInt<1>("h1") @[src/main/scala/sicore/Core.scala 161:40] - regfile.MPORT_1.clk <= clock @[src/main/scala/sicore/Core.scala 161:40] + node _T = eq(csignals_4, UInt<2>("h1")) @[src/main/scala/sicore/Core.scala 143:15] + node _T_1 = neq(wb_addr, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 143:36] + node _T_2 = and(_T, _T_1) @[src/main/scala/sicore/Core.scala 143:25] + node _GEN_0 = validif(_T_2, wb_addr) @[src/main/scala/sicore/Core.scala 143:45 144:12] + node _GEN_1 = validif(_T_2, clock) @[src/main/scala/sicore/Core.scala 143:45 144:12] + node _GEN_2 = mux(_T_2, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 143:45 144:12 16:20] + node _GEN_3 = validif(_T_2, UInt<1>("h1")) @[src/main/scala/sicore/Core.scala 143:45 144:22] + node _GEN_4 = validif(_T_2, wb_data) @[src/main/scala/sicore/Core.scala 143:45 144:22] + node _io_exit_T = eq(io_imem_inst, UInt<32>("h114514")) @[src/main/scala/sicore/Core.scala 147:20] + node _T_3 = asUInt(reset) @[src/main/scala/sicore/Core.scala 150:9] + node _T_4 = eq(_T_3, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 150:9] + node _T_5 = asUInt(reset) @[src/main/scala/sicore/Core.scala 151:9] + node _T_6 = eq(_T_5, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 151:9] + node _T_7 = asUInt(reset) @[src/main/scala/sicore/Core.scala 152:9] + node _T_8 = eq(_T_7, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 152:9] + node _T_9 = asUInt(reset) @[src/main/scala/sicore/Core.scala 153:9] + node _T_10 = eq(_T_9, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 153:9] + node _T_11 = asUInt(reset) @[src/main/scala/sicore/Core.scala 154:9] + node _T_12 = eq(_T_11, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 154:9] + node _T_13 = asUInt(reset) @[src/main/scala/sicore/Core.scala 155:9] + node _T_14 = eq(_T_13, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 155:9] + node _T_15 = asUInt(reset) @[src/main/scala/sicore/Core.scala 156:9] + node _T_16 = eq(_T_15, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 156:9] + node _T_17 = asUInt(reset) @[src/main/scala/sicore/Core.scala 157:9] + node _T_18 = eq(_T_17, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 157:9] + node _T_19 = asUInt(reset) @[src/main/scala/sicore/Core.scala 158:9] + node _T_20 = eq(_T_19, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 158:9] + node _T_21 = asUInt(reset) @[src/main/scala/sicore/Core.scala 159:9] + node _T_22 = eq(_T_21, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 159:9] + node _T_23 = asUInt(reset) @[src/main/scala/sicore/Core.scala 161:9] + node _T_24 = eq(_T_23, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 161:9] + node _T_25 = asUInt(reset) @[src/main/scala/sicore/Core.scala 162:9] + node _T_26 = eq(_T_25, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 162:9] + node _T_27 = asUInt(reset) @[src/main/scala/sicore/Core.scala 163:9] + node _T_28 = eq(_T_27, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 163:9] + node _T_29 = asUInt(reset) @[src/main/scala/sicore/Core.scala 164:9] + node _T_30 = eq(_T_29, UInt<1>("h0")) @[src/main/scala/sicore/Core.scala 164:9] + io_imem_addr <= pc_reg @[src/main/scala/sicore/Core.scala 20:16] + io_dmem_addr <= alu_out @[src/main/scala/sicore/Core.scala 122:16] + io_dmem_wen <= bits(csignals_3, 0, 0) @[src/main/scala/sicore/Core.scala 123:15] + io_dmem_wdata <= rt_data @[src/main/scala/sicore/Core.scala 124:17] + io_exit <= _io_exit_T @[src/main/scala/sicore/Core.scala 147:11] + regfile.rs_data_MPORT.addr <= rs_addr @[src/main/scala/sicore/Core.scala 42:47] + regfile.rs_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Core.scala 42:47] + regfile.rs_data_MPORT.clk <= clock @[src/main/scala/sicore/Core.scala 42:47] + regfile.rt_data_MPORT.addr <= rt_addr @[src/main/scala/sicore/Core.scala 43:47] + regfile.rt_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Core.scala 43:47] + regfile.rt_data_MPORT.clk <= clock @[src/main/scala/sicore/Core.scala 43:47] + regfile.MPORT_1.addr <= rt_addr @[src/main/scala/sicore/Core.scala 158:40] + regfile.MPORT_1.en <= UInt<1>("h1") @[src/main/scala/sicore/Core.scala 158:40] + regfile.MPORT_1.clk <= clock @[src/main/scala/sicore/Core.scala 158:40] regfile.MPORT.addr <= _GEN_0 regfile.MPORT.en <= _GEN_2 regfile.MPORT.clk <= _GEN_1 regfile.MPORT.data <= _GEN_4 regfile.MPORT.mask <= _GEN_3 - pc_reg <= mux(reset, UInt<32>("h0"), pc_next) @[src/main/scala/sicore/Core.scala 20:{23,23} 37:10] - printf(clock, and(and(UInt<1>("h1"), _T_4), UInt<1>("h1")), "---------------\n") : printf @[src/main/scala/sicore/Core.scala 153:9] - printf(clock, and(and(UInt<1>("h1"), _T_6), UInt<1>("h1")), "io.imem.inst: 0x%x\n", io_imem_inst) : printf_1 @[src/main/scala/sicore/Core.scala 154:9] - printf(clock, and(and(UInt<1>("h1"), _T_8), UInt<1>("h1")), "io.pc: 0x%x\ninst: 0x%b \n", pc_reg, io_imem_inst) : printf_2 @[src/main/scala/sicore/Core.scala 155:9] - printf(clock, and(and(UInt<1>("h1"), _T_10), UInt<1>("h1")), "pc_next: 0x%x\n", pc_next) : printf_3 @[src/main/scala/sicore/Core.scala 156:9] - printf(clock, and(and(UInt<1>("h1"), _T_12), UInt<1>("h1")), "exe_fun: 0x%x\n", csignals_0) : printf_4 @[src/main/scala/sicore/Core.scala 157:9] - printf(clock, and(and(UInt<1>("h1"), _T_14), UInt<1>("h1")), "rs_addr: 0x%x\n", rs_addr) : printf_5 @[src/main/scala/sicore/Core.scala 158:9] - printf(clock, and(and(UInt<1>("h1"), _T_16), UInt<1>("h1")), "rt_addr: 0x%x\n", rt_addr) : printf_6 @[src/main/scala/sicore/Core.scala 159:9] - printf(clock, and(and(UInt<1>("h1"), _T_18), UInt<1>("h1")), "rd_addr: 0x%x\n", rd_addr) : printf_7 @[src/main/scala/sicore/Core.scala 160:9] - printf(clock, and(and(UInt<1>("h1"), _T_20), UInt<1>("h1")), "reg: 0x%x\n", regfile.MPORT_1.data) : printf_8 @[src/main/scala/sicore/Core.scala 161:9] - printf(clock, and(and(UInt<1>("h1"), _T_22), UInt<1>("h1")), "rf_wen: 0x%x\n", csignals_4) : printf_9 @[src/main/scala/sicore/Core.scala 162:9] - printf(clock, and(and(UInt<1>("h1"), _T_24), UInt<1>("h1")), "rs_data: 0x%x\n", rs_data) : printf_10 @[src/main/scala/sicore/Core.scala 164:9] - printf(clock, and(and(UInt<1>("h1"), _T_26), UInt<1>("h1")), "rt_data: 0x%x\n", rt_data) : printf_11 @[src/main/scala/sicore/Core.scala 165:9] - printf(clock, and(and(UInt<1>("h1"), _T_28), UInt<1>("h1")), "wb_data: 0x%x\n", wb_data) : printf_12 @[src/main/scala/sicore/Core.scala 166:9] - printf(clock, and(and(UInt<1>("h1"), _T_30), UInt<1>("h1")), "---------------\n") : printf_13 @[src/main/scala/sicore/Core.scala 167:9] + pc_reg <= mux(reset, UInt<32>("h0"), pc_next) @[src/main/scala/sicore/Core.scala 19:{23,23} 36:10] + printf(clock, and(and(UInt<1>("h1"), _T_4), UInt<1>("h1")), "---------------\n") : printf @[src/main/scala/sicore/Core.scala 150:9] + printf(clock, and(and(UInt<1>("h1"), _T_6), UInt<1>("h1")), "io.imem.inst: 0x%x\n", io_imem_inst) : printf_1 @[src/main/scala/sicore/Core.scala 151:9] + printf(clock, and(and(UInt<1>("h1"), _T_8), UInt<1>("h1")), "io.pc: 0x%x\ninst: 0x%b \n", pc_reg, io_imem_inst) : printf_2 @[src/main/scala/sicore/Core.scala 152:9] + printf(clock, and(and(UInt<1>("h1"), _T_10), UInt<1>("h1")), "pc_next: 0x%x\n", pc_next) : printf_3 @[src/main/scala/sicore/Core.scala 153:9] + printf(clock, and(and(UInt<1>("h1"), _T_12), UInt<1>("h1")), "exe_fun: 0x%x\n", csignals_0) : printf_4 @[src/main/scala/sicore/Core.scala 154:9] + printf(clock, and(and(UInt<1>("h1"), _T_14), UInt<1>("h1")), "rs_addr: 0x%x\n", rs_addr) : printf_5 @[src/main/scala/sicore/Core.scala 155:9] + printf(clock, and(and(UInt<1>("h1"), _T_16), UInt<1>("h1")), "rt_addr: 0x%x\n", rt_addr) : printf_6 @[src/main/scala/sicore/Core.scala 156:9] + printf(clock, and(and(UInt<1>("h1"), _T_18), UInt<1>("h1")), "rd_addr: 0x%x\n", rd_addr) : printf_7 @[src/main/scala/sicore/Core.scala 157:9] + printf(clock, and(and(UInt<1>("h1"), _T_20), UInt<1>("h1")), "reg: 0x%x\n", regfile.MPORT_1.data) : printf_8 @[src/main/scala/sicore/Core.scala 158:9] + printf(clock, and(and(UInt<1>("h1"), _T_22), UInt<1>("h1")), "rf_wen: 0x%x\n", csignals_4) : printf_9 @[src/main/scala/sicore/Core.scala 159:9] + printf(clock, and(and(UInt<1>("h1"), _T_24), UInt<1>("h1")), "rs_data: 0x%x\n", rs_data) : printf_10 @[src/main/scala/sicore/Core.scala 161:9] + printf(clock, and(and(UInt<1>("h1"), _T_26), UInt<1>("h1")), "rt_data: 0x%x\n", rt_data) : printf_11 @[src/main/scala/sicore/Core.scala 162:9] + printf(clock, and(and(UInt<1>("h1"), _T_28), UInt<1>("h1")), "wb_data: 0x%x\n", wb_data) : printf_12 @[src/main/scala/sicore/Core.scala 163:9] + printf(clock, and(and(UInt<1>("h1"), _T_30), UInt<1>("h1")), "---------------\n") : printf_13 @[src/main/scala/sicore/Core.scala 164:9] - module Memory : @[src/main/scala/sicore/Memory.scala 24:7] - input clock : Clock @[src/main/scala/sicore/Memory.scala 24:7] - input reset : UInt<1> @[src/main/scala/sicore/Memory.scala 24:7] - input io_imem_addr : UInt<32> @[src/main/scala/sicore/Memory.scala 25:14] - output io_imem_inst : UInt<32> @[src/main/scala/sicore/Memory.scala 25:14] - input io_dmem_addr : UInt<32> @[src/main/scala/sicore/Memory.scala 25:14] - output io_dmem_rdata : UInt<32> @[src/main/scala/sicore/Memory.scala 25:14] - input io_dmem_wen : UInt<1> @[src/main/scala/sicore/Memory.scala 25:14] - input io_dmem_wdata : UInt<32> @[src/main/scala/sicore/Memory.scala 25:14] + module Memory : @[src/main/scala/sicore/Memory.scala 20:7] + input clock : Clock @[src/main/scala/sicore/Memory.scala 20:7] + input reset : UInt<1> @[src/main/scala/sicore/Memory.scala 20:7] + input io_imem_addr : UInt<32> @[src/main/scala/sicore/Memory.scala 21:14] + output io_imem_inst : UInt<32> @[src/main/scala/sicore/Memory.scala 21:14] + input io_dmem_addr : UInt<32> @[src/main/scala/sicore/Memory.scala 21:14] + output io_dmem_rdata : UInt<32> @[src/main/scala/sicore/Memory.scala 21:14] + input io_dmem_wen : UInt<1> @[src/main/scala/sicore/Memory.scala 21:14] + input io_dmem_wdata : UInt<32> @[src/main/scala/sicore/Memory.scala 21:14] - mem mem : @[src/main/scala/sicore/Memory.scala 31:16] + mem mem : @[src/main/scala/sicore/Memory.scala 26:16] data-type => UInt<8> depth => 4096 read-latency => 0 @@ -364,83 +364,83 @@ circuit TopOrigin : writer => MPORT_2 writer => MPORT_3 read-under-write => undefined - node _io_imem_inst_T = add(io_imem_addr, UInt<32>("h3")) @[src/main/scala/sicore/Memory.scala 38:22] - node _io_imem_inst_T_1 = tail(_io_imem_inst_T, 1) @[src/main/scala/sicore/Memory.scala 38:22] - node _io_imem_inst_T_2 = bits(_io_imem_inst_T_1, 11, 0) @[src/main/scala/sicore/Memory.scala 38:8] - node _io_imem_inst_T_3 = add(io_imem_addr, UInt<32>("h2")) @[src/main/scala/sicore/Memory.scala 39:22] - node _io_imem_inst_T_4 = tail(_io_imem_inst_T_3, 1) @[src/main/scala/sicore/Memory.scala 39:22] - node _io_imem_inst_T_5 = bits(_io_imem_inst_T_4, 11, 0) @[src/main/scala/sicore/Memory.scala 39:8] - node _io_imem_inst_T_6 = add(io_imem_addr, UInt<32>("h1")) @[src/main/scala/sicore/Memory.scala 40:22] - node _io_imem_inst_T_7 = tail(_io_imem_inst_T_6, 1) @[src/main/scala/sicore/Memory.scala 40:22] - node _io_imem_inst_T_8 = bits(_io_imem_inst_T_7, 11, 0) @[src/main/scala/sicore/Memory.scala 40:8] - node _io_imem_inst_T_9 = bits(io_imem_addr, 11, 0) @[src/main/scala/sicore/Memory.scala 41:8] - node io_imem_inst_lo = cat(mem.io_imem_inst_MPORT_2.data, mem.io_imem_inst_MPORT_3.data) @[src/main/scala/sicore/Memory.scala 37:22] - node io_imem_inst_hi = cat(mem.io_imem_inst_MPORT.data, mem.io_imem_inst_MPORT_1.data) @[src/main/scala/sicore/Memory.scala 37:22] - node _io_imem_inst_T_10 = cat(io_imem_inst_hi, io_imem_inst_lo) @[src/main/scala/sicore/Memory.scala 37:22] - node _io_dmem_rdata_T = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/sicore/Memory.scala 46:22] - node _io_dmem_rdata_T_1 = tail(_io_dmem_rdata_T, 1) @[src/main/scala/sicore/Memory.scala 46:22] - node _io_dmem_rdata_T_2 = bits(_io_dmem_rdata_T_1, 11, 0) @[src/main/scala/sicore/Memory.scala 46:8] - node _io_dmem_rdata_T_3 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/sicore/Memory.scala 47:22] - node _io_dmem_rdata_T_4 = tail(_io_dmem_rdata_T_3, 1) @[src/main/scala/sicore/Memory.scala 47:22] - node _io_dmem_rdata_T_5 = bits(_io_dmem_rdata_T_4, 11, 0) @[src/main/scala/sicore/Memory.scala 47:8] - node _io_dmem_rdata_T_6 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/sicore/Memory.scala 48:22] - node _io_dmem_rdata_T_7 = tail(_io_dmem_rdata_T_6, 1) @[src/main/scala/sicore/Memory.scala 48:22] - node _io_dmem_rdata_T_8 = bits(_io_dmem_rdata_T_7, 11, 0) @[src/main/scala/sicore/Memory.scala 48:8] - node _io_dmem_rdata_T_9 = bits(io_dmem_addr, 11, 0) @[src/main/scala/sicore/Memory.scala 49:8] - node io_dmem_rdata_lo = cat(mem.io_dmem_rdata_MPORT_2.data, mem.io_dmem_rdata_MPORT_3.data) @[src/main/scala/sicore/Memory.scala 45:23] - node io_dmem_rdata_hi = cat(mem.io_dmem_rdata_MPORT.data, mem.io_dmem_rdata_MPORT_1.data) @[src/main/scala/sicore/Memory.scala 45:23] - node _io_dmem_rdata_T_10 = cat(io_dmem_rdata_hi, io_dmem_rdata_lo) @[src/main/scala/sicore/Memory.scala 45:23] - node _T = bits(io_dmem_addr, 11, 0) @[src/main/scala/sicore/Memory.scala 54:8] - node _T_1 = bits(io_dmem_wdata, 7, 0) @[src/main/scala/sicore/Memory.scala 54:39] - node _T_2 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/sicore/Memory.scala 55:22] - node _T_3 = tail(_T_2, 1) @[src/main/scala/sicore/Memory.scala 55:22] - node _T_4 = bits(_T_3, 11, 0) @[src/main/scala/sicore/Memory.scala 55:8] - node _T_5 = bits(io_dmem_wdata, 15, 8) @[src/main/scala/sicore/Memory.scala 55:57] - node _T_6 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/sicore/Memory.scala 56:22] - node _T_7 = tail(_T_6, 1) @[src/main/scala/sicore/Memory.scala 56:22] - node _T_8 = bits(_T_7, 11, 0) @[src/main/scala/sicore/Memory.scala 56:8] - node _T_9 = bits(io_dmem_wdata, 23, 16) @[src/main/scala/sicore/Memory.scala 56:57] - node _T_10 = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/sicore/Memory.scala 57:22] - node _T_11 = tail(_T_10, 1) @[src/main/scala/sicore/Memory.scala 57:22] - node _T_12 = bits(_T_11, 11, 0) @[src/main/scala/sicore/Memory.scala 57:8] - node _T_13 = bits(io_dmem_wdata, 31, 24) @[src/main/scala/sicore/Memory.scala 57:57] - node _GEN_0 = validif(io_dmem_wen, _T) @[src/main/scala/sicore/Memory.scala 53:21 54:8] - node _GEN_1 = validif(io_dmem_wen, clock) @[src/main/scala/sicore/Memory.scala 53:21 54:8] - node _GEN_2 = mux(io_dmem_wen, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/sicore/Memory.scala 31:16 53:21 54:8] - node _GEN_3 = validif(io_dmem_wen, UInt<1>("h1")) @[src/main/scala/sicore/Memory.scala 53:21 54:23] - node _GEN_4 = validif(io_dmem_wen, _T_1) @[src/main/scala/sicore/Memory.scala 53:21 54:23] - node _GEN_5 = validif(io_dmem_wen, _T_4) @[src/main/scala/sicore/Memory.scala 53:21 55:8] - node _GEN_6 = validif(io_dmem_wen, _T_5) @[src/main/scala/sicore/Memory.scala 53:21 55:41] - node _GEN_7 = validif(io_dmem_wen, _T_8) @[src/main/scala/sicore/Memory.scala 53:21 56:8] - node _GEN_8 = validif(io_dmem_wen, _T_9) @[src/main/scala/sicore/Memory.scala 53:21 56:41] - node _GEN_9 = validif(io_dmem_wen, _T_12) @[src/main/scala/sicore/Memory.scala 53:21 57:8] - node _GEN_10 = validif(io_dmem_wen, _T_13) @[src/main/scala/sicore/Memory.scala 53:21 57:41] - io_imem_inst <= _io_imem_inst_T_10 @[src/main/scala/sicore/Memory.scala 37:16] - io_dmem_rdata <= _io_dmem_rdata_T_10 @[src/main/scala/sicore/Memory.scala 45:17] - mem.io_imem_inst_MPORT.addr <= _io_imem_inst_T_2 @[src/main/scala/sicore/Memory.scala 38:8] - mem.io_imem_inst_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 38:8] - mem.io_imem_inst_MPORT.clk <= clock @[src/main/scala/sicore/Memory.scala 38:8] - mem.io_imem_inst_MPORT_1.addr <= _io_imem_inst_T_5 @[src/main/scala/sicore/Memory.scala 39:8] - mem.io_imem_inst_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 39:8] - mem.io_imem_inst_MPORT_1.clk <= clock @[src/main/scala/sicore/Memory.scala 39:8] - mem.io_imem_inst_MPORT_2.addr <= _io_imem_inst_T_8 @[src/main/scala/sicore/Memory.scala 40:8] - mem.io_imem_inst_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 40:8] - mem.io_imem_inst_MPORT_2.clk <= clock @[src/main/scala/sicore/Memory.scala 40:8] - mem.io_imem_inst_MPORT_3.addr <= _io_imem_inst_T_9 @[src/main/scala/sicore/Memory.scala 41:8] - mem.io_imem_inst_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 41:8] - mem.io_imem_inst_MPORT_3.clk <= clock @[src/main/scala/sicore/Memory.scala 41:8] - mem.io_dmem_rdata_MPORT.addr <= _io_dmem_rdata_T_2 @[src/main/scala/sicore/Memory.scala 46:8] - mem.io_dmem_rdata_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 46:8] - mem.io_dmem_rdata_MPORT.clk <= clock @[src/main/scala/sicore/Memory.scala 46:8] - mem.io_dmem_rdata_MPORT_1.addr <= _io_dmem_rdata_T_5 @[src/main/scala/sicore/Memory.scala 47:8] - mem.io_dmem_rdata_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 47:8] - mem.io_dmem_rdata_MPORT_1.clk <= clock @[src/main/scala/sicore/Memory.scala 47:8] - mem.io_dmem_rdata_MPORT_2.addr <= _io_dmem_rdata_T_8 @[src/main/scala/sicore/Memory.scala 48:8] - mem.io_dmem_rdata_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 48:8] - mem.io_dmem_rdata_MPORT_2.clk <= clock @[src/main/scala/sicore/Memory.scala 48:8] - mem.io_dmem_rdata_MPORT_3.addr <= _io_dmem_rdata_T_9 @[src/main/scala/sicore/Memory.scala 49:8] - mem.io_dmem_rdata_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 49:8] - mem.io_dmem_rdata_MPORT_3.clk <= clock @[src/main/scala/sicore/Memory.scala 49:8] + node _io_imem_inst_T = add(io_imem_addr, UInt<32>("h3")) @[src/main/scala/sicore/Memory.scala 31:22] + node _io_imem_inst_T_1 = tail(_io_imem_inst_T, 1) @[src/main/scala/sicore/Memory.scala 31:22] + node _io_imem_inst_T_2 = bits(_io_imem_inst_T_1, 11, 0) @[src/main/scala/sicore/Memory.scala 31:8] + node _io_imem_inst_T_3 = add(io_imem_addr, UInt<32>("h2")) @[src/main/scala/sicore/Memory.scala 32:22] + node _io_imem_inst_T_4 = tail(_io_imem_inst_T_3, 1) @[src/main/scala/sicore/Memory.scala 32:22] + node _io_imem_inst_T_5 = bits(_io_imem_inst_T_4, 11, 0) @[src/main/scala/sicore/Memory.scala 32:8] + node _io_imem_inst_T_6 = add(io_imem_addr, UInt<32>("h1")) @[src/main/scala/sicore/Memory.scala 33:22] + node _io_imem_inst_T_7 = tail(_io_imem_inst_T_6, 1) @[src/main/scala/sicore/Memory.scala 33:22] + node _io_imem_inst_T_8 = bits(_io_imem_inst_T_7, 11, 0) @[src/main/scala/sicore/Memory.scala 33:8] + node _io_imem_inst_T_9 = bits(io_imem_addr, 11, 0) @[src/main/scala/sicore/Memory.scala 34:8] + node io_imem_inst_lo = cat(mem.io_imem_inst_MPORT_2.data, mem.io_imem_inst_MPORT_3.data) @[src/main/scala/sicore/Memory.scala 30:22] + node io_imem_inst_hi = cat(mem.io_imem_inst_MPORT.data, mem.io_imem_inst_MPORT_1.data) @[src/main/scala/sicore/Memory.scala 30:22] + node _io_imem_inst_T_10 = cat(io_imem_inst_hi, io_imem_inst_lo) @[src/main/scala/sicore/Memory.scala 30:22] + node _io_dmem_rdata_T = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/sicore/Memory.scala 38:22] + node _io_dmem_rdata_T_1 = tail(_io_dmem_rdata_T, 1) @[src/main/scala/sicore/Memory.scala 38:22] + node _io_dmem_rdata_T_2 = bits(_io_dmem_rdata_T_1, 11, 0) @[src/main/scala/sicore/Memory.scala 38:8] + node _io_dmem_rdata_T_3 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/sicore/Memory.scala 39:22] + node _io_dmem_rdata_T_4 = tail(_io_dmem_rdata_T_3, 1) @[src/main/scala/sicore/Memory.scala 39:22] + node _io_dmem_rdata_T_5 = bits(_io_dmem_rdata_T_4, 11, 0) @[src/main/scala/sicore/Memory.scala 39:8] + node _io_dmem_rdata_T_6 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/sicore/Memory.scala 40:22] + node _io_dmem_rdata_T_7 = tail(_io_dmem_rdata_T_6, 1) @[src/main/scala/sicore/Memory.scala 40:22] + node _io_dmem_rdata_T_8 = bits(_io_dmem_rdata_T_7, 11, 0) @[src/main/scala/sicore/Memory.scala 40:8] + node _io_dmem_rdata_T_9 = bits(io_dmem_addr, 11, 0) @[src/main/scala/sicore/Memory.scala 41:8] + node io_dmem_rdata_lo = cat(mem.io_dmem_rdata_MPORT_2.data, mem.io_dmem_rdata_MPORT_3.data) @[src/main/scala/sicore/Memory.scala 37:23] + node io_dmem_rdata_hi = cat(mem.io_dmem_rdata_MPORT.data, mem.io_dmem_rdata_MPORT_1.data) @[src/main/scala/sicore/Memory.scala 37:23] + node _io_dmem_rdata_T_10 = cat(io_dmem_rdata_hi, io_dmem_rdata_lo) @[src/main/scala/sicore/Memory.scala 37:23] + node _T = bits(io_dmem_addr, 11, 0) @[src/main/scala/sicore/Memory.scala 45:8] + node _T_1 = bits(io_dmem_wdata, 7, 0) @[src/main/scala/sicore/Memory.scala 45:39] + node _T_2 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/sicore/Memory.scala 46:22] + node _T_3 = tail(_T_2, 1) @[src/main/scala/sicore/Memory.scala 46:22] + node _T_4 = bits(_T_3, 11, 0) @[src/main/scala/sicore/Memory.scala 46:8] + node _T_5 = bits(io_dmem_wdata, 15, 8) @[src/main/scala/sicore/Memory.scala 46:57] + node _T_6 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/sicore/Memory.scala 47:22] + node _T_7 = tail(_T_6, 1) @[src/main/scala/sicore/Memory.scala 47:22] + node _T_8 = bits(_T_7, 11, 0) @[src/main/scala/sicore/Memory.scala 47:8] + node _T_9 = bits(io_dmem_wdata, 23, 16) @[src/main/scala/sicore/Memory.scala 47:57] + node _T_10 = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/sicore/Memory.scala 48:22] + node _T_11 = tail(_T_10, 1) @[src/main/scala/sicore/Memory.scala 48:22] + node _T_12 = bits(_T_11, 11, 0) @[src/main/scala/sicore/Memory.scala 48:8] + node _T_13 = bits(io_dmem_wdata, 31, 24) @[src/main/scala/sicore/Memory.scala 48:57] + node _GEN_0 = validif(io_dmem_wen, _T) @[src/main/scala/sicore/Memory.scala 44:21 45:8] + node _GEN_1 = validif(io_dmem_wen, clock) @[src/main/scala/sicore/Memory.scala 44:21 45:8] + node _GEN_2 = mux(io_dmem_wen, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/sicore/Memory.scala 26:16 44:21 45:8] + node _GEN_3 = validif(io_dmem_wen, UInt<1>("h1")) @[src/main/scala/sicore/Memory.scala 44:21 45:23] + node _GEN_4 = validif(io_dmem_wen, _T_1) @[src/main/scala/sicore/Memory.scala 44:21 45:23] + node _GEN_5 = validif(io_dmem_wen, _T_4) @[src/main/scala/sicore/Memory.scala 44:21 46:8] + node _GEN_6 = validif(io_dmem_wen, _T_5) @[src/main/scala/sicore/Memory.scala 44:21 46:41] + node _GEN_7 = validif(io_dmem_wen, _T_8) @[src/main/scala/sicore/Memory.scala 44:21 47:8] + node _GEN_8 = validif(io_dmem_wen, _T_9) @[src/main/scala/sicore/Memory.scala 44:21 47:41] + node _GEN_9 = validif(io_dmem_wen, _T_12) @[src/main/scala/sicore/Memory.scala 44:21 48:8] + node _GEN_10 = validif(io_dmem_wen, _T_13) @[src/main/scala/sicore/Memory.scala 44:21 48:41] + io_imem_inst <= _io_imem_inst_T_10 @[src/main/scala/sicore/Memory.scala 30:16] + io_dmem_rdata <= _io_dmem_rdata_T_10 @[src/main/scala/sicore/Memory.scala 37:17] + mem.io_imem_inst_MPORT.addr <= _io_imem_inst_T_2 @[src/main/scala/sicore/Memory.scala 31:8] + mem.io_imem_inst_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 31:8] + mem.io_imem_inst_MPORT.clk <= clock @[src/main/scala/sicore/Memory.scala 31:8] + mem.io_imem_inst_MPORT_1.addr <= _io_imem_inst_T_5 @[src/main/scala/sicore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_1.clk <= clock @[src/main/scala/sicore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_2.addr <= _io_imem_inst_T_8 @[src/main/scala/sicore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_2.clk <= clock @[src/main/scala/sicore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_3.addr <= _io_imem_inst_T_9 @[src/main/scala/sicore/Memory.scala 34:8] + mem.io_imem_inst_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 34:8] + mem.io_imem_inst_MPORT_3.clk <= clock @[src/main/scala/sicore/Memory.scala 34:8] + mem.io_dmem_rdata_MPORT.addr <= _io_dmem_rdata_T_2 @[src/main/scala/sicore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT.clk <= clock @[src/main/scala/sicore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT_1.addr <= _io_dmem_rdata_T_5 @[src/main/scala/sicore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_1.clk <= clock @[src/main/scala/sicore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_2.addr <= _io_dmem_rdata_T_8 @[src/main/scala/sicore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_2.clk <= clock @[src/main/scala/sicore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_3.addr <= _io_dmem_rdata_T_9 @[src/main/scala/sicore/Memory.scala 41:8] + mem.io_dmem_rdata_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/sicore/Memory.scala 41:8] + mem.io_dmem_rdata_MPORT_3.clk <= clock @[src/main/scala/sicore/Memory.scala 41:8] mem.MPORT.addr <= _GEN_0 mem.MPORT.en <= _GEN_2 mem.MPORT.clk <= _GEN_1