diff --git a/el2_swerv_wrapper.fir b/el2_swerv_wrapper.fir index d10124de..ee7402c7 100644 --- a/el2_swerv_wrapper.fir +++ b/el2_swerv_wrapper.fir @@ -66869,14 +66869,14 @@ circuit el2_swerv_wrapper : i0_rs2_depth_d <= UInt<1>("h00") wire cam_wen : UInt<4> cam_wen <= UInt<1>("h00") - wire cam : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}[4] @[el2_dec_decode_ctl.scala 147:17] + wire cam : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}}[4] @[el2_dec_decode_ctl.scala 147:17] wire cam_write : UInt<1> cam_write <= UInt<1>("h00") wire cam_inv_reset_val : UInt<1>[4] @[el2_dec_decode_ctl.scala 149:29] wire cam_data_reset_val : UInt<1>[4] @[el2_dec_decode_ctl.scala 150:30] wire nonblock_load_write : UInt<1>[4] @[el2_dec_decode_ctl.scala 151:31] - wire cam_raw : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}[4] @[el2_dec_decode_ctl.scala 152:20] - wire cam_in : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}[4] @[el2_dec_decode_ctl.scala 153:20] + wire cam_raw : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}}[4] @[el2_dec_decode_ctl.scala 152:20] + wire cam_in : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}}[4] @[el2_dec_decode_ctl.scala 153:20] wire i0_dp : {alu : UInt<1>, rs1 : UInt<1>, rs2 : UInt<1>, imm12 : UInt<1>, rd : UInt<1>, shimm5 : UInt<1>, imm20 : UInt<1>, pc : UInt<1>, load : UInt<1>, store : UInt<1>, lsu : UInt<1>, add : UInt<1>, sub : UInt<1>, land : UInt<1>, lor : UInt<1>, lxor : UInt<1>, sll : UInt<1>, sra : UInt<1>, srl : UInt<1>, slt : UInt<1>, unsign : UInt<1>, condbr : UInt<1>, beq : UInt<1>, bne : UInt<1>, bge : UInt<1>, blt : UInt<1>, jal : UInt<1>, by : UInt<1>, half : UInt<1>, word : UInt<1>, csr_read : UInt<1>, csr_clr : UInt<1>, csr_set : UInt<1>, csr_write : UInt<1>, csr_imm : UInt<1>, presync : UInt<1>, postsync : UInt<1>, ebreak : UInt<1>, ecall : UInt<1>, mret : UInt<1>, mul : UInt<1>, rs1_sign : UInt<1>, rs2_sign : UInt<1>, low : UInt<1>, div : UInt<1>, rem : UInt<1>, fence : UInt<1>, fence_i : UInt<1>, pm_alu : UInt<1>, legal : UInt<1>} @[el2_dec_decode_ctl.scala 155:18] wire i0_dp_raw : {alu : UInt<1>, rs1 : UInt<1>, rs2 : UInt<1>, imm12 : UInt<1>, rd : UInt<1>, shimm5 : UInt<1>, imm20 : UInt<1>, pc : UInt<1>, load : UInt<1>, store : UInt<1>, lsu : UInt<1>, add : UInt<1>, sub : UInt<1>, land : UInt<1>, lor : UInt<1>, lxor : UInt<1>, sll : UInt<1>, sra : UInt<1>, srl : UInt<1>, slt : UInt<1>, unsign : UInt<1>, condbr : UInt<1>, beq : UInt<1>, bne : UInt<1>, bge : UInt<1>, blt : UInt<1>, jal : UInt<1>, by : UInt<1>, half : UInt<1>, word : UInt<1>, csr_read : UInt<1>, csr_clr : UInt<1>, csr_set : UInt<1>, csr_write : UInt<1>, csr_imm : UInt<1>, presync : UInt<1>, postsync : UInt<1>, ebreak : UInt<1>, ecall : UInt<1>, mret : UInt<1>, mul : UInt<1>, rs1_sign : UInt<1>, rs2_sign : UInt<1>, low : UInt<1>, div : UInt<1>, rem : UInt<1>, fence : UInt<1>, fence_i : UInt<1>, pm_alu : UInt<1>, legal : UInt<1>} @[el2_dec_decode_ctl.scala 156:22] wire i0_rs1bypass : UInt<3> @@ -67295,26 +67295,26 @@ circuit el2_swerv_wrapper : nonblock_load_valid_m_delay <= io.lsu_nonblock_load_valid_m @[Reg.scala 28:23] skip @[Reg.scala 28:19] node i0_load_kill_wen_r = and(nonblock_load_valid_m_delay, r_d.i0load) @[el2_dec_decode_ctl.scala 319:56] - node _T_91 = eq(io.lsu_nonblock_load_inv_tag_r, cam[0].tag) @[el2_dec_decode_ctl.scala 321:66] + node _T_91 = eq(io.lsu_nonblock_load_inv_tag_r, cam[0].bits.tag) @[el2_dec_decode_ctl.scala 321:66] node _T_92 = and(io.lsu_nonblock_load_inv_r, _T_91) @[el2_dec_decode_ctl.scala 321:45] - node _T_93 = and(_T_92, cam[0].valid) @[el2_dec_decode_ctl.scala 321:82] + node _T_93 = and(_T_92, cam[0].valid) @[el2_dec_decode_ctl.scala 321:87] cam_inv_reset_val[0] <= _T_93 @[el2_dec_decode_ctl.scala 321:26] - node _T_94 = eq(io.lsu_nonblock_load_data_tag, cam[0].tag) @[el2_dec_decode_ctl.scala 322:67] + node _T_94 = eq(io.lsu_nonblock_load_data_tag, cam[0].bits.tag) @[el2_dec_decode_ctl.scala 322:67] node _T_95 = and(cam_data_reset, _T_94) @[el2_dec_decode_ctl.scala 322:45] - node _T_96 = and(_T_95, cam_raw[0].valid) @[el2_dec_decode_ctl.scala 322:83] + node _T_96 = and(_T_95, cam_raw[0].valid) @[el2_dec_decode_ctl.scala 322:88] cam_data_reset_val[0] <= _T_96 @[el2_dec_decode_ctl.scala 322:27] - wire _T_97 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 323:28] - _T_97.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_97.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_97.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] + wire _T_97 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 323:28] + _T_97.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_97.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_97.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] _T_97.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] - cam_in[0].rd <= _T_97.rd @[el2_dec_decode_ctl.scala 323:14] - cam_in[0].tag <= _T_97.tag @[el2_dec_decode_ctl.scala 323:14] - cam_in[0].wb <= _T_97.wb @[el2_dec_decode_ctl.scala 323:14] + cam_in[0].bits.rd <= _T_97.bits.rd @[el2_dec_decode_ctl.scala 323:14] + cam_in[0].bits.tag <= _T_97.bits.tag @[el2_dec_decode_ctl.scala 323:14] + cam_in[0].bits.wb <= _T_97.bits.wb @[el2_dec_decode_ctl.scala 323:14] cam_in[0].valid <= _T_97.valid @[el2_dec_decode_ctl.scala 323:14] - cam[0].rd <= cam_raw[0].rd @[el2_dec_decode_ctl.scala 324:11] - cam[0].tag <= cam_raw[0].tag @[el2_dec_decode_ctl.scala 324:11] - cam[0].wb <= cam_raw[0].wb @[el2_dec_decode_ctl.scala 324:11] + cam[0].bits.rd <= cam_raw[0].bits.rd @[el2_dec_decode_ctl.scala 324:11] + cam[0].bits.tag <= cam_raw[0].bits.tag @[el2_dec_decode_ctl.scala 324:11] + cam[0].bits.wb <= cam_raw[0].bits.wb @[el2_dec_decode_ctl.scala 324:11] cam[0].valid <= cam_raw[0].valid @[el2_dec_decode_ctl.scala 324:11] node _T_98 = bits(cam_data_reset_val[0], 0, 0) @[el2_dec_decode_ctl.scala 326:32] when _T_98 : @[el2_dec_decode_ctl.scala 326:39] @@ -67324,75 +67324,75 @@ circuit el2_swerv_wrapper : node _T_100 = bits(_T_99, 0, 0) @[el2_dec_decode_ctl.scala 329:21] when _T_100 : @[el2_dec_decode_ctl.scala 329:28] cam_in[0].valid <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 330:27] - cam_in[0].wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:27] - cam_in[0].tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:27] - cam_in[0].rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:27] + cam_in[0].bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:32] + cam_in[0].bits.tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:32] + cam_in[0].bits.rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:32] skip @[el2_dec_decode_ctl.scala 329:28] - else : @[el2_dec_decode_ctl.scala 334:116] + else : @[el2_dec_decode_ctl.scala 334:126] node _T_101 = bits(cam_inv_reset_val[0], 0, 0) @[el2_dec_decode_ctl.scala 334:37] node _T_102 = bits(i0_wen_r, 0, 0) @[el2_dec_decode_ctl.scala 334:57] - node _T_103 = eq(r_d_in.i0rd, cam[0].rd) @[el2_dec_decode_ctl.scala 334:80] + node _T_103 = eq(r_d_in.i0rd, cam[0].bits.rd) @[el2_dec_decode_ctl.scala 334:80] node _T_104 = and(_T_102, _T_103) @[el2_dec_decode_ctl.scala 334:64] - node _T_105 = bits(cam[0].wb, 0, 0) @[el2_dec_decode_ctl.scala 334:108] - node _T_106 = and(_T_104, _T_105) @[el2_dec_decode_ctl.scala 334:95] + node _T_105 = bits(cam[0].bits.wb, 0, 0) @[el2_dec_decode_ctl.scala 334:118] + node _T_106 = and(_T_104, _T_105) @[el2_dec_decode_ctl.scala 334:100] node _T_107 = or(_T_101, _T_106) @[el2_dec_decode_ctl.scala 334:44] - when _T_107 : @[el2_dec_decode_ctl.scala 334:116] + when _T_107 : @[el2_dec_decode_ctl.scala 334:126] cam_in[0].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 335:23] - skip @[el2_dec_decode_ctl.scala 334:116] + skip @[el2_dec_decode_ctl.scala 334:126] else : @[el2_dec_decode_ctl.scala 336:16] - cam_in[0].rd <= cam[0].rd @[el2_dec_decode_ctl.scala 337:22] - cam_in[0].tag <= cam[0].tag @[el2_dec_decode_ctl.scala 337:22] - cam_in[0].wb <= cam[0].wb @[el2_dec_decode_ctl.scala 337:22] + cam_in[0].bits.rd <= cam[0].bits.rd @[el2_dec_decode_ctl.scala 337:22] + cam_in[0].bits.tag <= cam[0].bits.tag @[el2_dec_decode_ctl.scala 337:22] + cam_in[0].bits.wb <= cam[0].bits.wb @[el2_dec_decode_ctl.scala 337:22] cam_in[0].valid <= cam[0].valid @[el2_dec_decode_ctl.scala 337:22] skip @[el2_dec_decode_ctl.scala 336:16] node _T_108 = eq(nonblock_load_valid_m_delay, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:37] - node _T_109 = eq(io.lsu_nonblock_load_inv_tag_r, cam[0].tag) @[el2_dec_decode_ctl.scala 339:79] + node _T_109 = eq(io.lsu_nonblock_load_inv_tag_r, cam[0].bits.tag) @[el2_dec_decode_ctl.scala 339:79] node _T_110 = and(_T_108, _T_109) @[el2_dec_decode_ctl.scala 339:44] - node _T_111 = eq(cam[0].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:110] - node _T_112 = and(_T_110, _T_111) @[el2_dec_decode_ctl.scala 339:95] - when _T_112 : @[el2_dec_decode_ctl.scala 339:117] - cam_in[0].wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:20] - skip @[el2_dec_decode_ctl.scala 339:117] + node _T_111 = eq(cam[0].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:115] + node _T_112 = and(_T_110, _T_111) @[el2_dec_decode_ctl.scala 339:100] + when _T_112 : @[el2_dec_decode_ctl.scala 339:122] + cam_in[0].bits.wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:25] + skip @[el2_dec_decode_ctl.scala 339:122] when io.dec_tlu_force_halt : @[el2_dec_decode_ctl.scala 343:32] cam_in[0].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 344:23] skip @[el2_dec_decode_ctl.scala 343:32] - wire _T_113 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 347:70] - _T_113.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_113.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_113.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] + wire _T_113 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 347:70] + _T_113.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_113.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_113.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] _T_113.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] - reg _T_114 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}, io.free_clk with : (reset => (reset, _T_113)) @[el2_dec_decode_ctl.scala 347:47] - _T_114.rd <= cam_in[0].rd @[el2_dec_decode_ctl.scala 347:47] - _T_114.tag <= cam_in[0].tag @[el2_dec_decode_ctl.scala 347:47] - _T_114.wb <= cam_in[0].wb @[el2_dec_decode_ctl.scala 347:47] + reg _T_114 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}}, io.free_clk with : (reset => (reset, _T_113)) @[el2_dec_decode_ctl.scala 347:47] + _T_114.bits.rd <= cam_in[0].bits.rd @[el2_dec_decode_ctl.scala 347:47] + _T_114.bits.tag <= cam_in[0].bits.tag @[el2_dec_decode_ctl.scala 347:47] + _T_114.bits.wb <= cam_in[0].bits.wb @[el2_dec_decode_ctl.scala 347:47] _T_114.valid <= cam_in[0].valid @[el2_dec_decode_ctl.scala 347:47] - cam_raw[0].rd <= _T_114.rd @[el2_dec_decode_ctl.scala 347:15] - cam_raw[0].tag <= _T_114.tag @[el2_dec_decode_ctl.scala 347:15] - cam_raw[0].wb <= _T_114.wb @[el2_dec_decode_ctl.scala 347:15] + cam_raw[0].bits.rd <= _T_114.bits.rd @[el2_dec_decode_ctl.scala 347:15] + cam_raw[0].bits.tag <= _T_114.bits.tag @[el2_dec_decode_ctl.scala 347:15] + cam_raw[0].bits.wb <= _T_114.bits.wb @[el2_dec_decode_ctl.scala 347:15] cam_raw[0].valid <= _T_114.valid @[el2_dec_decode_ctl.scala 347:15] - node _T_115 = eq(io.lsu_nonblock_load_data_tag, cam_raw[0].tag) @[el2_dec_decode_ctl.scala 348:46] - node _T_116 = and(_T_115, cam_raw[0].valid) @[el2_dec_decode_ctl.scala 348:66] + node _T_115 = eq(io.lsu_nonblock_load_data_tag, cam_raw[0].bits.tag) @[el2_dec_decode_ctl.scala 348:46] + node _T_116 = and(_T_115, cam_raw[0].valid) @[el2_dec_decode_ctl.scala 348:71] nonblock_load_write[0] <= _T_116 @[el2_dec_decode_ctl.scala 348:28] - node _T_117 = eq(io.lsu_nonblock_load_inv_tag_r, cam[1].tag) @[el2_dec_decode_ctl.scala 321:66] + node _T_117 = eq(io.lsu_nonblock_load_inv_tag_r, cam[1].bits.tag) @[el2_dec_decode_ctl.scala 321:66] node _T_118 = and(io.lsu_nonblock_load_inv_r, _T_117) @[el2_dec_decode_ctl.scala 321:45] - node _T_119 = and(_T_118, cam[1].valid) @[el2_dec_decode_ctl.scala 321:82] + node _T_119 = and(_T_118, cam[1].valid) @[el2_dec_decode_ctl.scala 321:87] cam_inv_reset_val[1] <= _T_119 @[el2_dec_decode_ctl.scala 321:26] - node _T_120 = eq(io.lsu_nonblock_load_data_tag, cam[1].tag) @[el2_dec_decode_ctl.scala 322:67] + node _T_120 = eq(io.lsu_nonblock_load_data_tag, cam[1].bits.tag) @[el2_dec_decode_ctl.scala 322:67] node _T_121 = and(cam_data_reset, _T_120) @[el2_dec_decode_ctl.scala 322:45] - node _T_122 = and(_T_121, cam_raw[1].valid) @[el2_dec_decode_ctl.scala 322:83] + node _T_122 = and(_T_121, cam_raw[1].valid) @[el2_dec_decode_ctl.scala 322:88] cam_data_reset_val[1] <= _T_122 @[el2_dec_decode_ctl.scala 322:27] - wire _T_123 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 323:28] - _T_123.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_123.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_123.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] + wire _T_123 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 323:28] + _T_123.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_123.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_123.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] _T_123.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] - cam_in[1].rd <= _T_123.rd @[el2_dec_decode_ctl.scala 323:14] - cam_in[1].tag <= _T_123.tag @[el2_dec_decode_ctl.scala 323:14] - cam_in[1].wb <= _T_123.wb @[el2_dec_decode_ctl.scala 323:14] + cam_in[1].bits.rd <= _T_123.bits.rd @[el2_dec_decode_ctl.scala 323:14] + cam_in[1].bits.tag <= _T_123.bits.tag @[el2_dec_decode_ctl.scala 323:14] + cam_in[1].bits.wb <= _T_123.bits.wb @[el2_dec_decode_ctl.scala 323:14] cam_in[1].valid <= _T_123.valid @[el2_dec_decode_ctl.scala 323:14] - cam[1].rd <= cam_raw[1].rd @[el2_dec_decode_ctl.scala 324:11] - cam[1].tag <= cam_raw[1].tag @[el2_dec_decode_ctl.scala 324:11] - cam[1].wb <= cam_raw[1].wb @[el2_dec_decode_ctl.scala 324:11] + cam[1].bits.rd <= cam_raw[1].bits.rd @[el2_dec_decode_ctl.scala 324:11] + cam[1].bits.tag <= cam_raw[1].bits.tag @[el2_dec_decode_ctl.scala 324:11] + cam[1].bits.wb <= cam_raw[1].bits.wb @[el2_dec_decode_ctl.scala 324:11] cam[1].valid <= cam_raw[1].valid @[el2_dec_decode_ctl.scala 324:11] node _T_124 = bits(cam_data_reset_val[1], 0, 0) @[el2_dec_decode_ctl.scala 326:32] when _T_124 : @[el2_dec_decode_ctl.scala 326:39] @@ -67402,75 +67402,75 @@ circuit el2_swerv_wrapper : node _T_126 = bits(_T_125, 0, 0) @[el2_dec_decode_ctl.scala 329:21] when _T_126 : @[el2_dec_decode_ctl.scala 329:28] cam_in[1].valid <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 330:27] - cam_in[1].wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:27] - cam_in[1].tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:27] - cam_in[1].rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:27] + cam_in[1].bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:32] + cam_in[1].bits.tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:32] + cam_in[1].bits.rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:32] skip @[el2_dec_decode_ctl.scala 329:28] - else : @[el2_dec_decode_ctl.scala 334:116] + else : @[el2_dec_decode_ctl.scala 334:126] node _T_127 = bits(cam_inv_reset_val[1], 0, 0) @[el2_dec_decode_ctl.scala 334:37] node _T_128 = bits(i0_wen_r, 0, 0) @[el2_dec_decode_ctl.scala 334:57] - node _T_129 = eq(r_d_in.i0rd, cam[1].rd) @[el2_dec_decode_ctl.scala 334:80] + node _T_129 = eq(r_d_in.i0rd, cam[1].bits.rd) @[el2_dec_decode_ctl.scala 334:80] node _T_130 = and(_T_128, _T_129) @[el2_dec_decode_ctl.scala 334:64] - node _T_131 = bits(cam[1].wb, 0, 0) @[el2_dec_decode_ctl.scala 334:108] - node _T_132 = and(_T_130, _T_131) @[el2_dec_decode_ctl.scala 334:95] + node _T_131 = bits(cam[1].bits.wb, 0, 0) @[el2_dec_decode_ctl.scala 334:118] + node _T_132 = and(_T_130, _T_131) @[el2_dec_decode_ctl.scala 334:100] node _T_133 = or(_T_127, _T_132) @[el2_dec_decode_ctl.scala 334:44] - when _T_133 : @[el2_dec_decode_ctl.scala 334:116] + when _T_133 : @[el2_dec_decode_ctl.scala 334:126] cam_in[1].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 335:23] - skip @[el2_dec_decode_ctl.scala 334:116] + skip @[el2_dec_decode_ctl.scala 334:126] else : @[el2_dec_decode_ctl.scala 336:16] - cam_in[1].rd <= cam[1].rd @[el2_dec_decode_ctl.scala 337:22] - cam_in[1].tag <= cam[1].tag @[el2_dec_decode_ctl.scala 337:22] - cam_in[1].wb <= cam[1].wb @[el2_dec_decode_ctl.scala 337:22] + cam_in[1].bits.rd <= cam[1].bits.rd @[el2_dec_decode_ctl.scala 337:22] + cam_in[1].bits.tag <= cam[1].bits.tag @[el2_dec_decode_ctl.scala 337:22] + cam_in[1].bits.wb <= cam[1].bits.wb @[el2_dec_decode_ctl.scala 337:22] cam_in[1].valid <= cam[1].valid @[el2_dec_decode_ctl.scala 337:22] skip @[el2_dec_decode_ctl.scala 336:16] node _T_134 = eq(nonblock_load_valid_m_delay, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:37] - node _T_135 = eq(io.lsu_nonblock_load_inv_tag_r, cam[1].tag) @[el2_dec_decode_ctl.scala 339:79] + node _T_135 = eq(io.lsu_nonblock_load_inv_tag_r, cam[1].bits.tag) @[el2_dec_decode_ctl.scala 339:79] node _T_136 = and(_T_134, _T_135) @[el2_dec_decode_ctl.scala 339:44] - node _T_137 = eq(cam[1].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:110] - node _T_138 = and(_T_136, _T_137) @[el2_dec_decode_ctl.scala 339:95] - when _T_138 : @[el2_dec_decode_ctl.scala 339:117] - cam_in[1].wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:20] - skip @[el2_dec_decode_ctl.scala 339:117] + node _T_137 = eq(cam[1].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:115] + node _T_138 = and(_T_136, _T_137) @[el2_dec_decode_ctl.scala 339:100] + when _T_138 : @[el2_dec_decode_ctl.scala 339:122] + cam_in[1].bits.wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:25] + skip @[el2_dec_decode_ctl.scala 339:122] when io.dec_tlu_force_halt : @[el2_dec_decode_ctl.scala 343:32] cam_in[1].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 344:23] skip @[el2_dec_decode_ctl.scala 343:32] - wire _T_139 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 347:70] - _T_139.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_139.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_139.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] + wire _T_139 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 347:70] + _T_139.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_139.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_139.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] _T_139.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] - reg _T_140 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}, io.free_clk with : (reset => (reset, _T_139)) @[el2_dec_decode_ctl.scala 347:47] - _T_140.rd <= cam_in[1].rd @[el2_dec_decode_ctl.scala 347:47] - _T_140.tag <= cam_in[1].tag @[el2_dec_decode_ctl.scala 347:47] - _T_140.wb <= cam_in[1].wb @[el2_dec_decode_ctl.scala 347:47] + reg _T_140 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}}, io.free_clk with : (reset => (reset, _T_139)) @[el2_dec_decode_ctl.scala 347:47] + _T_140.bits.rd <= cam_in[1].bits.rd @[el2_dec_decode_ctl.scala 347:47] + _T_140.bits.tag <= cam_in[1].bits.tag @[el2_dec_decode_ctl.scala 347:47] + _T_140.bits.wb <= cam_in[1].bits.wb @[el2_dec_decode_ctl.scala 347:47] _T_140.valid <= cam_in[1].valid @[el2_dec_decode_ctl.scala 347:47] - cam_raw[1].rd <= _T_140.rd @[el2_dec_decode_ctl.scala 347:15] - cam_raw[1].tag <= _T_140.tag @[el2_dec_decode_ctl.scala 347:15] - cam_raw[1].wb <= _T_140.wb @[el2_dec_decode_ctl.scala 347:15] + cam_raw[1].bits.rd <= _T_140.bits.rd @[el2_dec_decode_ctl.scala 347:15] + cam_raw[1].bits.tag <= _T_140.bits.tag @[el2_dec_decode_ctl.scala 347:15] + cam_raw[1].bits.wb <= _T_140.bits.wb @[el2_dec_decode_ctl.scala 347:15] cam_raw[1].valid <= _T_140.valid @[el2_dec_decode_ctl.scala 347:15] - node _T_141 = eq(io.lsu_nonblock_load_data_tag, cam_raw[1].tag) @[el2_dec_decode_ctl.scala 348:46] - node _T_142 = and(_T_141, cam_raw[1].valid) @[el2_dec_decode_ctl.scala 348:66] + node _T_141 = eq(io.lsu_nonblock_load_data_tag, cam_raw[1].bits.tag) @[el2_dec_decode_ctl.scala 348:46] + node _T_142 = and(_T_141, cam_raw[1].valid) @[el2_dec_decode_ctl.scala 348:71] nonblock_load_write[1] <= _T_142 @[el2_dec_decode_ctl.scala 348:28] - node _T_143 = eq(io.lsu_nonblock_load_inv_tag_r, cam[2].tag) @[el2_dec_decode_ctl.scala 321:66] + node _T_143 = eq(io.lsu_nonblock_load_inv_tag_r, cam[2].bits.tag) @[el2_dec_decode_ctl.scala 321:66] node _T_144 = and(io.lsu_nonblock_load_inv_r, _T_143) @[el2_dec_decode_ctl.scala 321:45] - node _T_145 = and(_T_144, cam[2].valid) @[el2_dec_decode_ctl.scala 321:82] + node _T_145 = and(_T_144, cam[2].valid) @[el2_dec_decode_ctl.scala 321:87] cam_inv_reset_val[2] <= _T_145 @[el2_dec_decode_ctl.scala 321:26] - node _T_146 = eq(io.lsu_nonblock_load_data_tag, cam[2].tag) @[el2_dec_decode_ctl.scala 322:67] + node _T_146 = eq(io.lsu_nonblock_load_data_tag, cam[2].bits.tag) @[el2_dec_decode_ctl.scala 322:67] node _T_147 = and(cam_data_reset, _T_146) @[el2_dec_decode_ctl.scala 322:45] - node _T_148 = and(_T_147, cam_raw[2].valid) @[el2_dec_decode_ctl.scala 322:83] + node _T_148 = and(_T_147, cam_raw[2].valid) @[el2_dec_decode_ctl.scala 322:88] cam_data_reset_val[2] <= _T_148 @[el2_dec_decode_ctl.scala 322:27] - wire _T_149 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 323:28] - _T_149.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_149.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_149.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] + wire _T_149 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 323:28] + _T_149.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_149.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_149.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] _T_149.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] - cam_in[2].rd <= _T_149.rd @[el2_dec_decode_ctl.scala 323:14] - cam_in[2].tag <= _T_149.tag @[el2_dec_decode_ctl.scala 323:14] - cam_in[2].wb <= _T_149.wb @[el2_dec_decode_ctl.scala 323:14] + cam_in[2].bits.rd <= _T_149.bits.rd @[el2_dec_decode_ctl.scala 323:14] + cam_in[2].bits.tag <= _T_149.bits.tag @[el2_dec_decode_ctl.scala 323:14] + cam_in[2].bits.wb <= _T_149.bits.wb @[el2_dec_decode_ctl.scala 323:14] cam_in[2].valid <= _T_149.valid @[el2_dec_decode_ctl.scala 323:14] - cam[2].rd <= cam_raw[2].rd @[el2_dec_decode_ctl.scala 324:11] - cam[2].tag <= cam_raw[2].tag @[el2_dec_decode_ctl.scala 324:11] - cam[2].wb <= cam_raw[2].wb @[el2_dec_decode_ctl.scala 324:11] + cam[2].bits.rd <= cam_raw[2].bits.rd @[el2_dec_decode_ctl.scala 324:11] + cam[2].bits.tag <= cam_raw[2].bits.tag @[el2_dec_decode_ctl.scala 324:11] + cam[2].bits.wb <= cam_raw[2].bits.wb @[el2_dec_decode_ctl.scala 324:11] cam[2].valid <= cam_raw[2].valid @[el2_dec_decode_ctl.scala 324:11] node _T_150 = bits(cam_data_reset_val[2], 0, 0) @[el2_dec_decode_ctl.scala 326:32] when _T_150 : @[el2_dec_decode_ctl.scala 326:39] @@ -67480,75 +67480,75 @@ circuit el2_swerv_wrapper : node _T_152 = bits(_T_151, 0, 0) @[el2_dec_decode_ctl.scala 329:21] when _T_152 : @[el2_dec_decode_ctl.scala 329:28] cam_in[2].valid <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 330:27] - cam_in[2].wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:27] - cam_in[2].tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:27] - cam_in[2].rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:27] + cam_in[2].bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:32] + cam_in[2].bits.tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:32] + cam_in[2].bits.rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:32] skip @[el2_dec_decode_ctl.scala 329:28] - else : @[el2_dec_decode_ctl.scala 334:116] + else : @[el2_dec_decode_ctl.scala 334:126] node _T_153 = bits(cam_inv_reset_val[2], 0, 0) @[el2_dec_decode_ctl.scala 334:37] node _T_154 = bits(i0_wen_r, 0, 0) @[el2_dec_decode_ctl.scala 334:57] - node _T_155 = eq(r_d_in.i0rd, cam[2].rd) @[el2_dec_decode_ctl.scala 334:80] + node _T_155 = eq(r_d_in.i0rd, cam[2].bits.rd) @[el2_dec_decode_ctl.scala 334:80] node _T_156 = and(_T_154, _T_155) @[el2_dec_decode_ctl.scala 334:64] - node _T_157 = bits(cam[2].wb, 0, 0) @[el2_dec_decode_ctl.scala 334:108] - node _T_158 = and(_T_156, _T_157) @[el2_dec_decode_ctl.scala 334:95] + node _T_157 = bits(cam[2].bits.wb, 0, 0) @[el2_dec_decode_ctl.scala 334:118] + node _T_158 = and(_T_156, _T_157) @[el2_dec_decode_ctl.scala 334:100] node _T_159 = or(_T_153, _T_158) @[el2_dec_decode_ctl.scala 334:44] - when _T_159 : @[el2_dec_decode_ctl.scala 334:116] + when _T_159 : @[el2_dec_decode_ctl.scala 334:126] cam_in[2].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 335:23] - skip @[el2_dec_decode_ctl.scala 334:116] + skip @[el2_dec_decode_ctl.scala 334:126] else : @[el2_dec_decode_ctl.scala 336:16] - cam_in[2].rd <= cam[2].rd @[el2_dec_decode_ctl.scala 337:22] - cam_in[2].tag <= cam[2].tag @[el2_dec_decode_ctl.scala 337:22] - cam_in[2].wb <= cam[2].wb @[el2_dec_decode_ctl.scala 337:22] + cam_in[2].bits.rd <= cam[2].bits.rd @[el2_dec_decode_ctl.scala 337:22] + cam_in[2].bits.tag <= cam[2].bits.tag @[el2_dec_decode_ctl.scala 337:22] + cam_in[2].bits.wb <= cam[2].bits.wb @[el2_dec_decode_ctl.scala 337:22] cam_in[2].valid <= cam[2].valid @[el2_dec_decode_ctl.scala 337:22] skip @[el2_dec_decode_ctl.scala 336:16] node _T_160 = eq(nonblock_load_valid_m_delay, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:37] - node _T_161 = eq(io.lsu_nonblock_load_inv_tag_r, cam[2].tag) @[el2_dec_decode_ctl.scala 339:79] + node _T_161 = eq(io.lsu_nonblock_load_inv_tag_r, cam[2].bits.tag) @[el2_dec_decode_ctl.scala 339:79] node _T_162 = and(_T_160, _T_161) @[el2_dec_decode_ctl.scala 339:44] - node _T_163 = eq(cam[2].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:110] - node _T_164 = and(_T_162, _T_163) @[el2_dec_decode_ctl.scala 339:95] - when _T_164 : @[el2_dec_decode_ctl.scala 339:117] - cam_in[2].wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:20] - skip @[el2_dec_decode_ctl.scala 339:117] + node _T_163 = eq(cam[2].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:115] + node _T_164 = and(_T_162, _T_163) @[el2_dec_decode_ctl.scala 339:100] + when _T_164 : @[el2_dec_decode_ctl.scala 339:122] + cam_in[2].bits.wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:25] + skip @[el2_dec_decode_ctl.scala 339:122] when io.dec_tlu_force_halt : @[el2_dec_decode_ctl.scala 343:32] cam_in[2].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 344:23] skip @[el2_dec_decode_ctl.scala 343:32] - wire _T_165 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 347:70] - _T_165.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_165.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_165.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] + wire _T_165 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 347:70] + _T_165.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_165.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_165.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] _T_165.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] - reg _T_166 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}, io.free_clk with : (reset => (reset, _T_165)) @[el2_dec_decode_ctl.scala 347:47] - _T_166.rd <= cam_in[2].rd @[el2_dec_decode_ctl.scala 347:47] - _T_166.tag <= cam_in[2].tag @[el2_dec_decode_ctl.scala 347:47] - _T_166.wb <= cam_in[2].wb @[el2_dec_decode_ctl.scala 347:47] + reg _T_166 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}}, io.free_clk with : (reset => (reset, _T_165)) @[el2_dec_decode_ctl.scala 347:47] + _T_166.bits.rd <= cam_in[2].bits.rd @[el2_dec_decode_ctl.scala 347:47] + _T_166.bits.tag <= cam_in[2].bits.tag @[el2_dec_decode_ctl.scala 347:47] + _T_166.bits.wb <= cam_in[2].bits.wb @[el2_dec_decode_ctl.scala 347:47] _T_166.valid <= cam_in[2].valid @[el2_dec_decode_ctl.scala 347:47] - cam_raw[2].rd <= _T_166.rd @[el2_dec_decode_ctl.scala 347:15] - cam_raw[2].tag <= _T_166.tag @[el2_dec_decode_ctl.scala 347:15] - cam_raw[2].wb <= _T_166.wb @[el2_dec_decode_ctl.scala 347:15] + cam_raw[2].bits.rd <= _T_166.bits.rd @[el2_dec_decode_ctl.scala 347:15] + cam_raw[2].bits.tag <= _T_166.bits.tag @[el2_dec_decode_ctl.scala 347:15] + cam_raw[2].bits.wb <= _T_166.bits.wb @[el2_dec_decode_ctl.scala 347:15] cam_raw[2].valid <= _T_166.valid @[el2_dec_decode_ctl.scala 347:15] - node _T_167 = eq(io.lsu_nonblock_load_data_tag, cam_raw[2].tag) @[el2_dec_decode_ctl.scala 348:46] - node _T_168 = and(_T_167, cam_raw[2].valid) @[el2_dec_decode_ctl.scala 348:66] + node _T_167 = eq(io.lsu_nonblock_load_data_tag, cam_raw[2].bits.tag) @[el2_dec_decode_ctl.scala 348:46] + node _T_168 = and(_T_167, cam_raw[2].valid) @[el2_dec_decode_ctl.scala 348:71] nonblock_load_write[2] <= _T_168 @[el2_dec_decode_ctl.scala 348:28] - node _T_169 = eq(io.lsu_nonblock_load_inv_tag_r, cam[3].tag) @[el2_dec_decode_ctl.scala 321:66] + node _T_169 = eq(io.lsu_nonblock_load_inv_tag_r, cam[3].bits.tag) @[el2_dec_decode_ctl.scala 321:66] node _T_170 = and(io.lsu_nonblock_load_inv_r, _T_169) @[el2_dec_decode_ctl.scala 321:45] - node _T_171 = and(_T_170, cam[3].valid) @[el2_dec_decode_ctl.scala 321:82] + node _T_171 = and(_T_170, cam[3].valid) @[el2_dec_decode_ctl.scala 321:87] cam_inv_reset_val[3] <= _T_171 @[el2_dec_decode_ctl.scala 321:26] - node _T_172 = eq(io.lsu_nonblock_load_data_tag, cam[3].tag) @[el2_dec_decode_ctl.scala 322:67] + node _T_172 = eq(io.lsu_nonblock_load_data_tag, cam[3].bits.tag) @[el2_dec_decode_ctl.scala 322:67] node _T_173 = and(cam_data_reset, _T_172) @[el2_dec_decode_ctl.scala 322:45] - node _T_174 = and(_T_173, cam_raw[3].valid) @[el2_dec_decode_ctl.scala 322:83] + node _T_174 = and(_T_173, cam_raw[3].valid) @[el2_dec_decode_ctl.scala 322:88] cam_data_reset_val[3] <= _T_174 @[el2_dec_decode_ctl.scala 322:27] - wire _T_175 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 323:28] - _T_175.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_175.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] - _T_175.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] + wire _T_175 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 323:28] + _T_175.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_175.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 323:28] + _T_175.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] _T_175.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 323:28] - cam_in[3].rd <= _T_175.rd @[el2_dec_decode_ctl.scala 323:14] - cam_in[3].tag <= _T_175.tag @[el2_dec_decode_ctl.scala 323:14] - cam_in[3].wb <= _T_175.wb @[el2_dec_decode_ctl.scala 323:14] + cam_in[3].bits.rd <= _T_175.bits.rd @[el2_dec_decode_ctl.scala 323:14] + cam_in[3].bits.tag <= _T_175.bits.tag @[el2_dec_decode_ctl.scala 323:14] + cam_in[3].bits.wb <= _T_175.bits.wb @[el2_dec_decode_ctl.scala 323:14] cam_in[3].valid <= _T_175.valid @[el2_dec_decode_ctl.scala 323:14] - cam[3].rd <= cam_raw[3].rd @[el2_dec_decode_ctl.scala 324:11] - cam[3].tag <= cam_raw[3].tag @[el2_dec_decode_ctl.scala 324:11] - cam[3].wb <= cam_raw[3].wb @[el2_dec_decode_ctl.scala 324:11] + cam[3].bits.rd <= cam_raw[3].bits.rd @[el2_dec_decode_ctl.scala 324:11] + cam[3].bits.tag <= cam_raw[3].bits.tag @[el2_dec_decode_ctl.scala 324:11] + cam[3].bits.wb <= cam_raw[3].bits.wb @[el2_dec_decode_ctl.scala 324:11] cam[3].valid <= cam_raw[3].valid @[el2_dec_decode_ctl.scala 324:11] node _T_176 = bits(cam_data_reset_val[3], 0, 0) @[el2_dec_decode_ctl.scala 326:32] when _T_176 : @[el2_dec_decode_ctl.scala 326:39] @@ -67558,54 +67558,54 @@ circuit el2_swerv_wrapper : node _T_178 = bits(_T_177, 0, 0) @[el2_dec_decode_ctl.scala 329:21] when _T_178 : @[el2_dec_decode_ctl.scala 329:28] cam_in[3].valid <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 330:27] - cam_in[3].wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:27] - cam_in[3].tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:27] - cam_in[3].rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:27] + cam_in[3].bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 331:32] + cam_in[3].bits.tag <= cam_write_tag @[el2_dec_decode_ctl.scala 332:32] + cam_in[3].bits.rd <= nonblock_load_rd @[el2_dec_decode_ctl.scala 333:32] skip @[el2_dec_decode_ctl.scala 329:28] - else : @[el2_dec_decode_ctl.scala 334:116] + else : @[el2_dec_decode_ctl.scala 334:126] node _T_179 = bits(cam_inv_reset_val[3], 0, 0) @[el2_dec_decode_ctl.scala 334:37] node _T_180 = bits(i0_wen_r, 0, 0) @[el2_dec_decode_ctl.scala 334:57] - node _T_181 = eq(r_d_in.i0rd, cam[3].rd) @[el2_dec_decode_ctl.scala 334:80] + node _T_181 = eq(r_d_in.i0rd, cam[3].bits.rd) @[el2_dec_decode_ctl.scala 334:80] node _T_182 = and(_T_180, _T_181) @[el2_dec_decode_ctl.scala 334:64] - node _T_183 = bits(cam[3].wb, 0, 0) @[el2_dec_decode_ctl.scala 334:108] - node _T_184 = and(_T_182, _T_183) @[el2_dec_decode_ctl.scala 334:95] + node _T_183 = bits(cam[3].bits.wb, 0, 0) @[el2_dec_decode_ctl.scala 334:118] + node _T_184 = and(_T_182, _T_183) @[el2_dec_decode_ctl.scala 334:100] node _T_185 = or(_T_179, _T_184) @[el2_dec_decode_ctl.scala 334:44] - when _T_185 : @[el2_dec_decode_ctl.scala 334:116] + when _T_185 : @[el2_dec_decode_ctl.scala 334:126] cam_in[3].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 335:23] - skip @[el2_dec_decode_ctl.scala 334:116] + skip @[el2_dec_decode_ctl.scala 334:126] else : @[el2_dec_decode_ctl.scala 336:16] - cam_in[3].rd <= cam[3].rd @[el2_dec_decode_ctl.scala 337:22] - cam_in[3].tag <= cam[3].tag @[el2_dec_decode_ctl.scala 337:22] - cam_in[3].wb <= cam[3].wb @[el2_dec_decode_ctl.scala 337:22] + cam_in[3].bits.rd <= cam[3].bits.rd @[el2_dec_decode_ctl.scala 337:22] + cam_in[3].bits.tag <= cam[3].bits.tag @[el2_dec_decode_ctl.scala 337:22] + cam_in[3].bits.wb <= cam[3].bits.wb @[el2_dec_decode_ctl.scala 337:22] cam_in[3].valid <= cam[3].valid @[el2_dec_decode_ctl.scala 337:22] skip @[el2_dec_decode_ctl.scala 336:16] node _T_186 = eq(nonblock_load_valid_m_delay, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:37] - node _T_187 = eq(io.lsu_nonblock_load_inv_tag_r, cam[3].tag) @[el2_dec_decode_ctl.scala 339:79] + node _T_187 = eq(io.lsu_nonblock_load_inv_tag_r, cam[3].bits.tag) @[el2_dec_decode_ctl.scala 339:79] node _T_188 = and(_T_186, _T_187) @[el2_dec_decode_ctl.scala 339:44] - node _T_189 = eq(cam[3].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:110] - node _T_190 = and(_T_188, _T_189) @[el2_dec_decode_ctl.scala 339:95] - when _T_190 : @[el2_dec_decode_ctl.scala 339:117] - cam_in[3].wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:20] - skip @[el2_dec_decode_ctl.scala 339:117] + node _T_189 = eq(cam[3].valid, UInt<1>("h01")) @[el2_dec_decode_ctl.scala 339:115] + node _T_190 = and(_T_188, _T_189) @[el2_dec_decode_ctl.scala 339:100] + when _T_190 : @[el2_dec_decode_ctl.scala 339:122] + cam_in[3].bits.wb <= UInt<1>("h01") @[el2_dec_decode_ctl.scala 340:25] + skip @[el2_dec_decode_ctl.scala 339:122] when io.dec_tlu_force_halt : @[el2_dec_decode_ctl.scala 343:32] cam_in[3].valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 344:23] skip @[el2_dec_decode_ctl.scala 343:32] - wire _T_191 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>} @[el2_dec_decode_ctl.scala 347:70] - _T_191.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_191.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] - _T_191.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] + wire _T_191 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}} @[el2_dec_decode_ctl.scala 347:70] + _T_191.bits.rd <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_191.bits.tag <= UInt<3>("h00") @[el2_dec_decode_ctl.scala 347:70] + _T_191.bits.wb <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] _T_191.valid <= UInt<1>("h00") @[el2_dec_decode_ctl.scala 347:70] - reg _T_192 : {valid : UInt<1>, wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}, io.free_clk with : (reset => (reset, _T_191)) @[el2_dec_decode_ctl.scala 347:47] - _T_192.rd <= cam_in[3].rd @[el2_dec_decode_ctl.scala 347:47] - _T_192.tag <= cam_in[3].tag @[el2_dec_decode_ctl.scala 347:47] - _T_192.wb <= cam_in[3].wb @[el2_dec_decode_ctl.scala 347:47] + reg _T_192 : {valid : UInt<1>, bits : {wb : UInt<1>, tag : UInt<3>, rd : UInt<5>}}, io.free_clk with : (reset => (reset, _T_191)) @[el2_dec_decode_ctl.scala 347:47] + _T_192.bits.rd <= cam_in[3].bits.rd @[el2_dec_decode_ctl.scala 347:47] + _T_192.bits.tag <= cam_in[3].bits.tag @[el2_dec_decode_ctl.scala 347:47] + _T_192.bits.wb <= cam_in[3].bits.wb @[el2_dec_decode_ctl.scala 347:47] _T_192.valid <= cam_in[3].valid @[el2_dec_decode_ctl.scala 347:47] - cam_raw[3].rd <= _T_192.rd @[el2_dec_decode_ctl.scala 347:15] - cam_raw[3].tag <= _T_192.tag @[el2_dec_decode_ctl.scala 347:15] - cam_raw[3].wb <= _T_192.wb @[el2_dec_decode_ctl.scala 347:15] + cam_raw[3].bits.rd <= _T_192.bits.rd @[el2_dec_decode_ctl.scala 347:15] + cam_raw[3].bits.tag <= _T_192.bits.tag @[el2_dec_decode_ctl.scala 347:15] + cam_raw[3].bits.wb <= _T_192.bits.wb @[el2_dec_decode_ctl.scala 347:15] cam_raw[3].valid <= _T_192.valid @[el2_dec_decode_ctl.scala 347:15] - node _T_193 = eq(io.lsu_nonblock_load_data_tag, cam_raw[3].tag) @[el2_dec_decode_ctl.scala 348:46] - node _T_194 = and(_T_193, cam_raw[3].valid) @[el2_dec_decode_ctl.scala 348:66] + node _T_193 = eq(io.lsu_nonblock_load_data_tag, cam_raw[3].bits.tag) @[el2_dec_decode_ctl.scala 348:46] + node _T_194 = and(_T_193, cam_raw[3].valid) @[el2_dec_decode_ctl.scala 348:71] nonblock_load_write[3] <= _T_194 @[el2_dec_decode_ctl.scala 348:28] io.dec_nonblock_load_waddr <= UInt<5>("h00") @[el2_dec_decode_ctl.scala 351:29] node _T_195 = eq(r_d_in.i0rd, io.dec_nonblock_load_waddr) @[el2_dec_decode_ctl.scala 353:44] @@ -67628,40 +67628,40 @@ circuit el2_swerv_wrapper : i0_nonblock_load_stall <= i0_nonblock_boundary_stall @[el2_dec_decode_ctl.scala 357:26] node _T_209 = bits(nonblock_load_write[0], 0, 0) @[Bitwise.scala 72:15] node _T_210 = mux(_T_209, UInt<5>("h01f"), UInt<5>("h00")) @[Bitwise.scala 72:12] - node _T_211 = and(_T_210, cam[0].rd) @[el2_dec_decode_ctl.scala 359:88] - node _T_212 = and(io.dec_i0_rs1_en_d, cam[0].valid) @[el2_dec_decode_ctl.scala 359:121] - node _T_213 = eq(cam[0].rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:149] - node _T_214 = and(_T_212, _T_213) @[el2_dec_decode_ctl.scala 359:136] - node _T_215 = and(io.dec_i0_rs2_en_d, cam[0].valid) @[el2_dec_decode_ctl.scala 359:182] - node _T_216 = eq(cam[0].rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:210] - node _T_217 = and(_T_215, _T_216) @[el2_dec_decode_ctl.scala 359:197] + node _T_211 = and(_T_210, cam[0].bits.rd) @[el2_dec_decode_ctl.scala 359:88] + node _T_212 = and(io.dec_i0_rs1_en_d, cam[0].valid) @[el2_dec_decode_ctl.scala 359:126] + node _T_213 = eq(cam[0].bits.rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:159] + node _T_214 = and(_T_212, _T_213) @[el2_dec_decode_ctl.scala 359:141] + node _T_215 = and(io.dec_i0_rs2_en_d, cam[0].valid) @[el2_dec_decode_ctl.scala 359:192] + node _T_216 = eq(cam[0].bits.rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:225] + node _T_217 = and(_T_215, _T_216) @[el2_dec_decode_ctl.scala 359:207] node _T_218 = bits(nonblock_load_write[1], 0, 0) @[Bitwise.scala 72:15] node _T_219 = mux(_T_218, UInt<5>("h01f"), UInt<5>("h00")) @[Bitwise.scala 72:12] - node _T_220 = and(_T_219, cam[1].rd) @[el2_dec_decode_ctl.scala 359:88] - node _T_221 = and(io.dec_i0_rs1_en_d, cam[1].valid) @[el2_dec_decode_ctl.scala 359:121] - node _T_222 = eq(cam[1].rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:149] - node _T_223 = and(_T_221, _T_222) @[el2_dec_decode_ctl.scala 359:136] - node _T_224 = and(io.dec_i0_rs2_en_d, cam[1].valid) @[el2_dec_decode_ctl.scala 359:182] - node _T_225 = eq(cam[1].rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:210] - node _T_226 = and(_T_224, _T_225) @[el2_dec_decode_ctl.scala 359:197] + node _T_220 = and(_T_219, cam[1].bits.rd) @[el2_dec_decode_ctl.scala 359:88] + node _T_221 = and(io.dec_i0_rs1_en_d, cam[1].valid) @[el2_dec_decode_ctl.scala 359:126] + node _T_222 = eq(cam[1].bits.rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:159] + node _T_223 = and(_T_221, _T_222) @[el2_dec_decode_ctl.scala 359:141] + node _T_224 = and(io.dec_i0_rs2_en_d, cam[1].valid) @[el2_dec_decode_ctl.scala 359:192] + node _T_225 = eq(cam[1].bits.rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:225] + node _T_226 = and(_T_224, _T_225) @[el2_dec_decode_ctl.scala 359:207] node _T_227 = bits(nonblock_load_write[2], 0, 0) @[Bitwise.scala 72:15] node _T_228 = mux(_T_227, UInt<5>("h01f"), UInt<5>("h00")) @[Bitwise.scala 72:12] - node _T_229 = and(_T_228, cam[2].rd) @[el2_dec_decode_ctl.scala 359:88] - node _T_230 = and(io.dec_i0_rs1_en_d, cam[2].valid) @[el2_dec_decode_ctl.scala 359:121] - node _T_231 = eq(cam[2].rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:149] - node _T_232 = and(_T_230, _T_231) @[el2_dec_decode_ctl.scala 359:136] - node _T_233 = and(io.dec_i0_rs2_en_d, cam[2].valid) @[el2_dec_decode_ctl.scala 359:182] - node _T_234 = eq(cam[2].rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:210] - node _T_235 = and(_T_233, _T_234) @[el2_dec_decode_ctl.scala 359:197] + node _T_229 = and(_T_228, cam[2].bits.rd) @[el2_dec_decode_ctl.scala 359:88] + node _T_230 = and(io.dec_i0_rs1_en_d, cam[2].valid) @[el2_dec_decode_ctl.scala 359:126] + node _T_231 = eq(cam[2].bits.rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:159] + node _T_232 = and(_T_230, _T_231) @[el2_dec_decode_ctl.scala 359:141] + node _T_233 = and(io.dec_i0_rs2_en_d, cam[2].valid) @[el2_dec_decode_ctl.scala 359:192] + node _T_234 = eq(cam[2].bits.rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:225] + node _T_235 = and(_T_233, _T_234) @[el2_dec_decode_ctl.scala 359:207] node _T_236 = bits(nonblock_load_write[3], 0, 0) @[Bitwise.scala 72:15] node _T_237 = mux(_T_236, UInt<5>("h01f"), UInt<5>("h00")) @[Bitwise.scala 72:12] - node _T_238 = and(_T_237, cam[3].rd) @[el2_dec_decode_ctl.scala 359:88] - node _T_239 = and(io.dec_i0_rs1_en_d, cam[3].valid) @[el2_dec_decode_ctl.scala 359:121] - node _T_240 = eq(cam[3].rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:149] - node _T_241 = and(_T_239, _T_240) @[el2_dec_decode_ctl.scala 359:136] - node _T_242 = and(io.dec_i0_rs2_en_d, cam[3].valid) @[el2_dec_decode_ctl.scala 359:182] - node _T_243 = eq(cam[3].rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:210] - node _T_244 = and(_T_242, _T_243) @[el2_dec_decode_ctl.scala 359:197] + node _T_238 = and(_T_237, cam[3].bits.rd) @[el2_dec_decode_ctl.scala 359:88] + node _T_239 = and(io.dec_i0_rs1_en_d, cam[3].valid) @[el2_dec_decode_ctl.scala 359:126] + node _T_240 = eq(cam[3].bits.rd, i0r.rs1) @[el2_dec_decode_ctl.scala 359:159] + node _T_241 = and(_T_239, _T_240) @[el2_dec_decode_ctl.scala 359:141] + node _T_242 = and(io.dec_i0_rs2_en_d, cam[3].valid) @[el2_dec_decode_ctl.scala 359:192] + node _T_243 = eq(cam[3].bits.rd, i0r.rs2) @[el2_dec_decode_ctl.scala 359:225] + node _T_244 = and(_T_242, _T_243) @[el2_dec_decode_ctl.scala 359:207] node _T_245 = or(_T_211, _T_220) @[el2_dec_decode_ctl.scala 360:69] node _T_246 = or(_T_245, _T_229) @[el2_dec_decode_ctl.scala 360:69] node waddr = or(_T_246, _T_238) @[el2_dec_decode_ctl.scala 360:69] diff --git a/el2_swerv_wrapper.v b/el2_swerv_wrapper.v index db3c102e..e7d83994 100644 --- a/el2_swerv_wrapper.v +++ b/el2_swerv_wrapper.v @@ -46518,38 +46518,38 @@ module el2_dec_decode_ctl( wire _T_48 = ~_T_47; // @[el2_dec_decode_ctl.scala 276:26] wire i0_ap_pc2 = ~io_dec_i0_pc4_d; // @[el2_dec_decode_ctl.scala 278:20] wire cam_data_reset = io_lsu_nonblock_load_data_valid | io_lsu_nonblock_load_data_error; // @[el2_dec_decode_ctl.scala 311:63] - reg [2:0] cam_raw_0_tag; // @[el2_dec_decode_ctl.scala 347:47] + reg [2:0] cam_raw_0_bits_tag; // @[el2_dec_decode_ctl.scala 347:47] wire [2:0] _GEN_123 = {{1'd0}, io_lsu_nonblock_load_data_tag}; // @[el2_dec_decode_ctl.scala 322:67] - wire _T_94 = _GEN_123 == cam_raw_0_tag; // @[el2_dec_decode_ctl.scala 322:67] + wire _T_94 = _GEN_123 == cam_raw_0_bits_tag; // @[el2_dec_decode_ctl.scala 322:67] wire _T_95 = cam_data_reset & _T_94; // @[el2_dec_decode_ctl.scala 322:45] reg cam_raw_0_valid; // @[el2_dec_decode_ctl.scala 347:47] - wire cam_data_reset_val_0 = _T_95 & cam_raw_0_valid; // @[el2_dec_decode_ctl.scala 322:83] + wire cam_data_reset_val_0 = _T_95 & cam_raw_0_valid; // @[el2_dec_decode_ctl.scala 322:88] wire cam_0_valid = cam_data_reset_val_0 ? 1'h0 : cam_raw_0_valid; // @[el2_dec_decode_ctl.scala 326:39] wire _T_51 = ~cam_0_valid; // @[el2_dec_decode_ctl.scala 303:78] - reg [2:0] cam_raw_1_tag; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_120 = _GEN_123 == cam_raw_1_tag; // @[el2_dec_decode_ctl.scala 322:67] + reg [2:0] cam_raw_1_bits_tag; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_120 = _GEN_123 == cam_raw_1_bits_tag; // @[el2_dec_decode_ctl.scala 322:67] wire _T_121 = cam_data_reset & _T_120; // @[el2_dec_decode_ctl.scala 322:45] reg cam_raw_1_valid; // @[el2_dec_decode_ctl.scala 347:47] - wire cam_data_reset_val_1 = _T_121 & cam_raw_1_valid; // @[el2_dec_decode_ctl.scala 322:83] + wire cam_data_reset_val_1 = _T_121 & cam_raw_1_valid; // @[el2_dec_decode_ctl.scala 322:88] wire cam_1_valid = cam_data_reset_val_1 ? 1'h0 : cam_raw_1_valid; // @[el2_dec_decode_ctl.scala 326:39] wire _T_54 = ~cam_1_valid; // @[el2_dec_decode_ctl.scala 303:78] wire _T_57 = cam_0_valid & _T_54; // @[el2_dec_decode_ctl.scala 303:126] wire [1:0] _T_59 = {io_lsu_nonblock_load_valid_m, 1'h0}; // @[el2_dec_decode_ctl.scala 303:158] - reg [2:0] cam_raw_2_tag; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_146 = _GEN_123 == cam_raw_2_tag; // @[el2_dec_decode_ctl.scala 322:67] + reg [2:0] cam_raw_2_bits_tag; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_146 = _GEN_123 == cam_raw_2_bits_tag; // @[el2_dec_decode_ctl.scala 322:67] wire _T_147 = cam_data_reset & _T_146; // @[el2_dec_decode_ctl.scala 322:45] reg cam_raw_2_valid; // @[el2_dec_decode_ctl.scala 347:47] - wire cam_data_reset_val_2 = _T_147 & cam_raw_2_valid; // @[el2_dec_decode_ctl.scala 322:83] + wire cam_data_reset_val_2 = _T_147 & cam_raw_2_valid; // @[el2_dec_decode_ctl.scala 322:88] wire cam_2_valid = cam_data_reset_val_2 ? 1'h0 : cam_raw_2_valid; // @[el2_dec_decode_ctl.scala 326:39] wire _T_60 = ~cam_2_valid; // @[el2_dec_decode_ctl.scala 303:78] wire _T_63 = cam_0_valid & cam_1_valid; // @[el2_dec_decode_ctl.scala 303:126] wire _T_66 = _T_63 & _T_60; // @[el2_dec_decode_ctl.scala 303:126] wire [2:0] _T_68 = {io_lsu_nonblock_load_valid_m, 2'h0}; // @[el2_dec_decode_ctl.scala 303:158] - reg [2:0] cam_raw_3_tag; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_172 = _GEN_123 == cam_raw_3_tag; // @[el2_dec_decode_ctl.scala 322:67] + reg [2:0] cam_raw_3_bits_tag; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_172 = _GEN_123 == cam_raw_3_bits_tag; // @[el2_dec_decode_ctl.scala 322:67] wire _T_173 = cam_data_reset & _T_172; // @[el2_dec_decode_ctl.scala 322:45] reg cam_raw_3_valid; // @[el2_dec_decode_ctl.scala 347:47] - wire cam_data_reset_val_3 = _T_173 & cam_raw_3_valid; // @[el2_dec_decode_ctl.scala 322:83] + wire cam_data_reset_val_3 = _T_173 & cam_raw_3_valid; // @[el2_dec_decode_ctl.scala 322:88] wire cam_3_valid = cam_data_reset_val_3 ? 1'h0 : cam_raw_3_valid; // @[el2_dec_decode_ctl.scala 326:39] wire _T_69 = ~cam_3_valid; // @[el2_dec_decode_ctl.scala 303:78] wire _T_75 = _T_63 & cam_2_valid; // @[el2_dec_decode_ctl.scala 303:126] @@ -46576,76 +46576,76 @@ module el2_dec_decode_ctl( reg r_d_i0load; // @[el2_lib.scala 524:16] wire i0_load_kill_wen_r = nonblock_load_valid_m_delay & r_d_i0load; // @[el2_dec_decode_ctl.scala 319:56] wire [2:0] _GEN_130 = {{1'd0}, io_lsu_nonblock_load_inv_tag_r}; // @[el2_dec_decode_ctl.scala 321:66] - wire _T_91 = _GEN_130 == cam_raw_0_tag; // @[el2_dec_decode_ctl.scala 321:66] + wire _T_91 = _GEN_130 == cam_raw_0_bits_tag; // @[el2_dec_decode_ctl.scala 321:66] wire _T_92 = io_lsu_nonblock_load_inv_r & _T_91; // @[el2_dec_decode_ctl.scala 321:45] - wire cam_inv_reset_val_0 = _T_92 & cam_0_valid; // @[el2_dec_decode_ctl.scala 321:82] + wire cam_inv_reset_val_0 = _T_92 & cam_0_valid; // @[el2_dec_decode_ctl.scala 321:87] reg r_d_i0v; // @[el2_lib.scala 524:16] wire _T_743 = ~io_dec_tlu_flush_lower_wb; // @[el2_dec_decode_ctl.scala 687:41] wire r_d_in_i0v = r_d_i0v & _T_743; // @[el2_dec_decode_ctl.scala 687:39] wire _T_754 = ~io_dec_tlu_i0_kill_writeb_r; // @[el2_dec_decode_ctl.scala 695:42] wire i0_wen_r = r_d_in_i0v & _T_754; // @[el2_dec_decode_ctl.scala 695:40] reg [4:0] r_d_i0rd; // @[el2_lib.scala 524:16] - reg [4:0] cam_raw_0_rd; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_103 = r_d_i0rd == cam_raw_0_rd; // @[el2_dec_decode_ctl.scala 334:80] + reg [4:0] cam_raw_0_bits_rd; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_103 = r_d_i0rd == cam_raw_0_bits_rd; // @[el2_dec_decode_ctl.scala 334:80] wire _T_104 = i0_wen_r & _T_103; // @[el2_dec_decode_ctl.scala 334:64] - reg cam_raw_0_wb; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_106 = _T_104 & cam_raw_0_wb; // @[el2_dec_decode_ctl.scala 334:95] + reg cam_raw_0_bits_wb; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_106 = _T_104 & cam_raw_0_bits_wb; // @[el2_dec_decode_ctl.scala 334:100] wire _T_107 = cam_inv_reset_val_0 | _T_106; // @[el2_dec_decode_ctl.scala 334:44] - wire _GEN_52 = _T_107 ? 1'h0 : cam_0_valid; // @[el2_dec_decode_ctl.scala 334:116] - wire _GEN_55 = _T_107 ? 1'h0 : cam_raw_0_wb; // @[el2_dec_decode_ctl.scala 334:116] + wire _GEN_52 = _T_107 ? 1'h0 : cam_0_valid; // @[el2_dec_decode_ctl.scala 334:126] + wire _GEN_55 = _T_107 ? 1'h0 : cam_raw_0_bits_wb; // @[el2_dec_decode_ctl.scala 334:126] wire _GEN_56 = cam_wen[0] | _GEN_52; // @[el2_dec_decode_ctl.scala 329:28] wire _GEN_57 = cam_wen[0] ? 1'h0 : _GEN_55; // @[el2_dec_decode_ctl.scala 329:28] wire _T_110 = nonblock_load_valid_m_delay & _T_91; // @[el2_dec_decode_ctl.scala 339:44] - wire _T_112 = _T_110 & cam_0_valid; // @[el2_dec_decode_ctl.scala 339:95] - wire nonblock_load_write_0 = _T_94 & cam_raw_0_valid; // @[el2_dec_decode_ctl.scala 348:66] - wire _T_117 = _GEN_130 == cam_raw_1_tag; // @[el2_dec_decode_ctl.scala 321:66] + wire _T_112 = _T_110 & cam_0_valid; // @[el2_dec_decode_ctl.scala 339:100] + wire nonblock_load_write_0 = _T_94 & cam_raw_0_valid; // @[el2_dec_decode_ctl.scala 348:71] + wire _T_117 = _GEN_130 == cam_raw_1_bits_tag; // @[el2_dec_decode_ctl.scala 321:66] wire _T_118 = io_lsu_nonblock_load_inv_r & _T_117; // @[el2_dec_decode_ctl.scala 321:45] - wire cam_inv_reset_val_1 = _T_118 & cam_1_valid; // @[el2_dec_decode_ctl.scala 321:82] - reg [4:0] cam_raw_1_rd; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_129 = r_d_i0rd == cam_raw_1_rd; // @[el2_dec_decode_ctl.scala 334:80] + wire cam_inv_reset_val_1 = _T_118 & cam_1_valid; // @[el2_dec_decode_ctl.scala 321:87] + reg [4:0] cam_raw_1_bits_rd; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_129 = r_d_i0rd == cam_raw_1_bits_rd; // @[el2_dec_decode_ctl.scala 334:80] wire _T_130 = i0_wen_r & _T_129; // @[el2_dec_decode_ctl.scala 334:64] - reg cam_raw_1_wb; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_132 = _T_130 & cam_raw_1_wb; // @[el2_dec_decode_ctl.scala 334:95] + reg cam_raw_1_bits_wb; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_132 = _T_130 & cam_raw_1_bits_wb; // @[el2_dec_decode_ctl.scala 334:100] wire _T_133 = cam_inv_reset_val_1 | _T_132; // @[el2_dec_decode_ctl.scala 334:44] - wire _GEN_63 = _T_133 ? 1'h0 : cam_1_valid; // @[el2_dec_decode_ctl.scala 334:116] - wire _GEN_66 = _T_133 ? 1'h0 : cam_raw_1_wb; // @[el2_dec_decode_ctl.scala 334:116] + wire _GEN_63 = _T_133 ? 1'h0 : cam_1_valid; // @[el2_dec_decode_ctl.scala 334:126] + wire _GEN_66 = _T_133 ? 1'h0 : cam_raw_1_bits_wb; // @[el2_dec_decode_ctl.scala 334:126] wire _GEN_67 = cam_wen[1] | _GEN_63; // @[el2_dec_decode_ctl.scala 329:28] wire _GEN_68 = cam_wen[1] ? 1'h0 : _GEN_66; // @[el2_dec_decode_ctl.scala 329:28] wire _T_136 = nonblock_load_valid_m_delay & _T_117; // @[el2_dec_decode_ctl.scala 339:44] - wire _T_138 = _T_136 & cam_1_valid; // @[el2_dec_decode_ctl.scala 339:95] - wire nonblock_load_write_1 = _T_120 & cam_raw_1_valid; // @[el2_dec_decode_ctl.scala 348:66] - wire _T_143 = _GEN_130 == cam_raw_2_tag; // @[el2_dec_decode_ctl.scala 321:66] + wire _T_138 = _T_136 & cam_1_valid; // @[el2_dec_decode_ctl.scala 339:100] + wire nonblock_load_write_1 = _T_120 & cam_raw_1_valid; // @[el2_dec_decode_ctl.scala 348:71] + wire _T_143 = _GEN_130 == cam_raw_2_bits_tag; // @[el2_dec_decode_ctl.scala 321:66] wire _T_144 = io_lsu_nonblock_load_inv_r & _T_143; // @[el2_dec_decode_ctl.scala 321:45] - wire cam_inv_reset_val_2 = _T_144 & cam_2_valid; // @[el2_dec_decode_ctl.scala 321:82] - reg [4:0] cam_raw_2_rd; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_155 = r_d_i0rd == cam_raw_2_rd; // @[el2_dec_decode_ctl.scala 334:80] + wire cam_inv_reset_val_2 = _T_144 & cam_2_valid; // @[el2_dec_decode_ctl.scala 321:87] + reg [4:0] cam_raw_2_bits_rd; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_155 = r_d_i0rd == cam_raw_2_bits_rd; // @[el2_dec_decode_ctl.scala 334:80] wire _T_156 = i0_wen_r & _T_155; // @[el2_dec_decode_ctl.scala 334:64] - reg cam_raw_2_wb; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_158 = _T_156 & cam_raw_2_wb; // @[el2_dec_decode_ctl.scala 334:95] + reg cam_raw_2_bits_wb; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_158 = _T_156 & cam_raw_2_bits_wb; // @[el2_dec_decode_ctl.scala 334:100] wire _T_159 = cam_inv_reset_val_2 | _T_158; // @[el2_dec_decode_ctl.scala 334:44] - wire _GEN_74 = _T_159 ? 1'h0 : cam_2_valid; // @[el2_dec_decode_ctl.scala 334:116] - wire _GEN_77 = _T_159 ? 1'h0 : cam_raw_2_wb; // @[el2_dec_decode_ctl.scala 334:116] + wire _GEN_74 = _T_159 ? 1'h0 : cam_2_valid; // @[el2_dec_decode_ctl.scala 334:126] + wire _GEN_77 = _T_159 ? 1'h0 : cam_raw_2_bits_wb; // @[el2_dec_decode_ctl.scala 334:126] wire _GEN_78 = cam_wen[2] | _GEN_74; // @[el2_dec_decode_ctl.scala 329:28] wire _GEN_79 = cam_wen[2] ? 1'h0 : _GEN_77; // @[el2_dec_decode_ctl.scala 329:28] wire _T_162 = nonblock_load_valid_m_delay & _T_143; // @[el2_dec_decode_ctl.scala 339:44] - wire _T_164 = _T_162 & cam_2_valid; // @[el2_dec_decode_ctl.scala 339:95] - wire nonblock_load_write_2 = _T_146 & cam_raw_2_valid; // @[el2_dec_decode_ctl.scala 348:66] - wire _T_169 = _GEN_130 == cam_raw_3_tag; // @[el2_dec_decode_ctl.scala 321:66] + wire _T_164 = _T_162 & cam_2_valid; // @[el2_dec_decode_ctl.scala 339:100] + wire nonblock_load_write_2 = _T_146 & cam_raw_2_valid; // @[el2_dec_decode_ctl.scala 348:71] + wire _T_169 = _GEN_130 == cam_raw_3_bits_tag; // @[el2_dec_decode_ctl.scala 321:66] wire _T_170 = io_lsu_nonblock_load_inv_r & _T_169; // @[el2_dec_decode_ctl.scala 321:45] - wire cam_inv_reset_val_3 = _T_170 & cam_3_valid; // @[el2_dec_decode_ctl.scala 321:82] - reg [4:0] cam_raw_3_rd; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_181 = r_d_i0rd == cam_raw_3_rd; // @[el2_dec_decode_ctl.scala 334:80] + wire cam_inv_reset_val_3 = _T_170 & cam_3_valid; // @[el2_dec_decode_ctl.scala 321:87] + reg [4:0] cam_raw_3_bits_rd; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_181 = r_d_i0rd == cam_raw_3_bits_rd; // @[el2_dec_decode_ctl.scala 334:80] wire _T_182 = i0_wen_r & _T_181; // @[el2_dec_decode_ctl.scala 334:64] - reg cam_raw_3_wb; // @[el2_dec_decode_ctl.scala 347:47] - wire _T_184 = _T_182 & cam_raw_3_wb; // @[el2_dec_decode_ctl.scala 334:95] + reg cam_raw_3_bits_wb; // @[el2_dec_decode_ctl.scala 347:47] + wire _T_184 = _T_182 & cam_raw_3_bits_wb; // @[el2_dec_decode_ctl.scala 334:100] wire _T_185 = cam_inv_reset_val_3 | _T_184; // @[el2_dec_decode_ctl.scala 334:44] - wire _GEN_85 = _T_185 ? 1'h0 : cam_3_valid; // @[el2_dec_decode_ctl.scala 334:116] - wire _GEN_88 = _T_185 ? 1'h0 : cam_raw_3_wb; // @[el2_dec_decode_ctl.scala 334:116] + wire _GEN_85 = _T_185 ? 1'h0 : cam_3_valid; // @[el2_dec_decode_ctl.scala 334:126] + wire _GEN_88 = _T_185 ? 1'h0 : cam_raw_3_bits_wb; // @[el2_dec_decode_ctl.scala 334:126] wire _GEN_89 = cam_wen[3] | _GEN_85; // @[el2_dec_decode_ctl.scala 329:28] wire _GEN_90 = cam_wen[3] ? 1'h0 : _GEN_88; // @[el2_dec_decode_ctl.scala 329:28] wire _T_188 = nonblock_load_valid_m_delay & _T_169; // @[el2_dec_decode_ctl.scala 339:44] - wire _T_190 = _T_188 & cam_3_valid; // @[el2_dec_decode_ctl.scala 339:95] - wire nonblock_load_write_3 = _T_172 & cam_raw_3_valid; // @[el2_dec_decode_ctl.scala 348:66] + wire _T_190 = _T_188 & cam_3_valid; // @[el2_dec_decode_ctl.scala 339:100] + wire nonblock_load_write_3 = _T_172 & cam_raw_3_valid; // @[el2_dec_decode_ctl.scala 348:71] wire _T_195 = r_d_i0rd == io_dec_nonblock_load_waddr; // @[el2_dec_decode_ctl.scala 353:44] wire nonblock_load_cancel = _T_195 & i0_wen_r; // @[el2_dec_decode_ctl.scala 353:76] wire _T_196 = nonblock_load_write_0 | nonblock_load_write_1; // @[el2_dec_decode_ctl.scala 354:95] @@ -46662,37 +46662,37 @@ module el2_dec_decode_ctl( wire _T_208 = _T_207 & io_dec_i0_rs2_en_d; // @[el2_dec_decode_ctl.scala 355:180] wire i0_nonblock_boundary_stall = _T_205 | _T_208; // @[el2_dec_decode_ctl.scala 355:118] wire [4:0] _T_210 = nonblock_load_write_0 ? 5'h1f : 5'h0; // @[Bitwise.scala 72:12] - wire [4:0] _T_211 = _T_210 & cam_raw_0_rd; // @[el2_dec_decode_ctl.scala 359:88] - wire _T_212 = io_dec_i0_rs1_en_d & cam_0_valid; // @[el2_dec_decode_ctl.scala 359:121] - wire _T_213 = cam_raw_0_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:149] - wire _T_214 = _T_212 & _T_213; // @[el2_dec_decode_ctl.scala 359:136] - wire _T_215 = io_dec_i0_rs2_en_d & cam_0_valid; // @[el2_dec_decode_ctl.scala 359:182] - wire _T_216 = cam_raw_0_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:210] - wire _T_217 = _T_215 & _T_216; // @[el2_dec_decode_ctl.scala 359:197] + wire [4:0] _T_211 = _T_210 & cam_raw_0_bits_rd; // @[el2_dec_decode_ctl.scala 359:88] + wire _T_212 = io_dec_i0_rs1_en_d & cam_0_valid; // @[el2_dec_decode_ctl.scala 359:126] + wire _T_213 = cam_raw_0_bits_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:159] + wire _T_214 = _T_212 & _T_213; // @[el2_dec_decode_ctl.scala 359:141] + wire _T_215 = io_dec_i0_rs2_en_d & cam_0_valid; // @[el2_dec_decode_ctl.scala 359:192] + wire _T_216 = cam_raw_0_bits_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:225] + wire _T_217 = _T_215 & _T_216; // @[el2_dec_decode_ctl.scala 359:207] wire [4:0] _T_219 = nonblock_load_write_1 ? 5'h1f : 5'h0; // @[Bitwise.scala 72:12] - wire [4:0] _T_220 = _T_219 & cam_raw_1_rd; // @[el2_dec_decode_ctl.scala 359:88] - wire _T_221 = io_dec_i0_rs1_en_d & cam_1_valid; // @[el2_dec_decode_ctl.scala 359:121] - wire _T_222 = cam_raw_1_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:149] - wire _T_223 = _T_221 & _T_222; // @[el2_dec_decode_ctl.scala 359:136] - wire _T_224 = io_dec_i0_rs2_en_d & cam_1_valid; // @[el2_dec_decode_ctl.scala 359:182] - wire _T_225 = cam_raw_1_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:210] - wire _T_226 = _T_224 & _T_225; // @[el2_dec_decode_ctl.scala 359:197] + wire [4:0] _T_220 = _T_219 & cam_raw_1_bits_rd; // @[el2_dec_decode_ctl.scala 359:88] + wire _T_221 = io_dec_i0_rs1_en_d & cam_1_valid; // @[el2_dec_decode_ctl.scala 359:126] + wire _T_222 = cam_raw_1_bits_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:159] + wire _T_223 = _T_221 & _T_222; // @[el2_dec_decode_ctl.scala 359:141] + wire _T_224 = io_dec_i0_rs2_en_d & cam_1_valid; // @[el2_dec_decode_ctl.scala 359:192] + wire _T_225 = cam_raw_1_bits_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:225] + wire _T_226 = _T_224 & _T_225; // @[el2_dec_decode_ctl.scala 359:207] wire [4:0] _T_228 = nonblock_load_write_2 ? 5'h1f : 5'h0; // @[Bitwise.scala 72:12] - wire [4:0] _T_229 = _T_228 & cam_raw_2_rd; // @[el2_dec_decode_ctl.scala 359:88] - wire _T_230 = io_dec_i0_rs1_en_d & cam_2_valid; // @[el2_dec_decode_ctl.scala 359:121] - wire _T_231 = cam_raw_2_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:149] - wire _T_232 = _T_230 & _T_231; // @[el2_dec_decode_ctl.scala 359:136] - wire _T_233 = io_dec_i0_rs2_en_d & cam_2_valid; // @[el2_dec_decode_ctl.scala 359:182] - wire _T_234 = cam_raw_2_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:210] - wire _T_235 = _T_233 & _T_234; // @[el2_dec_decode_ctl.scala 359:197] + wire [4:0] _T_229 = _T_228 & cam_raw_2_bits_rd; // @[el2_dec_decode_ctl.scala 359:88] + wire _T_230 = io_dec_i0_rs1_en_d & cam_2_valid; // @[el2_dec_decode_ctl.scala 359:126] + wire _T_231 = cam_raw_2_bits_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:159] + wire _T_232 = _T_230 & _T_231; // @[el2_dec_decode_ctl.scala 359:141] + wire _T_233 = io_dec_i0_rs2_en_d & cam_2_valid; // @[el2_dec_decode_ctl.scala 359:192] + wire _T_234 = cam_raw_2_bits_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:225] + wire _T_235 = _T_233 & _T_234; // @[el2_dec_decode_ctl.scala 359:207] wire [4:0] _T_237 = nonblock_load_write_3 ? 5'h1f : 5'h0; // @[Bitwise.scala 72:12] - wire [4:0] _T_238 = _T_237 & cam_raw_3_rd; // @[el2_dec_decode_ctl.scala 359:88] - wire _T_239 = io_dec_i0_rs1_en_d & cam_3_valid; // @[el2_dec_decode_ctl.scala 359:121] - wire _T_240 = cam_raw_3_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:149] - wire _T_241 = _T_239 & _T_240; // @[el2_dec_decode_ctl.scala 359:136] - wire _T_242 = io_dec_i0_rs2_en_d & cam_3_valid; // @[el2_dec_decode_ctl.scala 359:182] - wire _T_243 = cam_raw_3_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:210] - wire _T_244 = _T_242 & _T_243; // @[el2_dec_decode_ctl.scala 359:197] + wire [4:0] _T_238 = _T_237 & cam_raw_3_bits_rd; // @[el2_dec_decode_ctl.scala 359:88] + wire _T_239 = io_dec_i0_rs1_en_d & cam_3_valid; // @[el2_dec_decode_ctl.scala 359:126] + wire _T_240 = cam_raw_3_bits_rd == i0r_rs1; // @[el2_dec_decode_ctl.scala 359:159] + wire _T_241 = _T_239 & _T_240; // @[el2_dec_decode_ctl.scala 359:141] + wire _T_242 = io_dec_i0_rs2_en_d & cam_3_valid; // @[el2_dec_decode_ctl.scala 359:192] + wire _T_243 = cam_raw_3_bits_rd == i0r_rs2; // @[el2_dec_decode_ctl.scala 359:225] + wire _T_244 = _T_242 & _T_243; // @[el2_dec_decode_ctl.scala 359:207] wire [4:0] _T_245 = _T_211 | _T_220; // @[el2_dec_decode_ctl.scala 360:69] wire [4:0] _T_246 = _T_245 | _T_229; // @[el2_dec_decode_ctl.scala 360:69] wire _T_247 = _T_214 | _T_223; // @[el2_dec_decode_ctl.scala 360:102] @@ -47441,19 +47441,19 @@ initial begin _RAND_9 = {1{`RANDOM}}; illegal_lockout = _RAND_9[0:0]; _RAND_10 = {1{`RANDOM}}; - cam_raw_0_tag = _RAND_10[2:0]; + cam_raw_0_bits_tag = _RAND_10[2:0]; _RAND_11 = {1{`RANDOM}}; cam_raw_0_valid = _RAND_11[0:0]; _RAND_12 = {1{`RANDOM}}; - cam_raw_1_tag = _RAND_12[2:0]; + cam_raw_1_bits_tag = _RAND_12[2:0]; _RAND_13 = {1{`RANDOM}}; cam_raw_1_valid = _RAND_13[0:0]; _RAND_14 = {1{`RANDOM}}; - cam_raw_2_tag = _RAND_14[2:0]; + cam_raw_2_bits_tag = _RAND_14[2:0]; _RAND_15 = {1{`RANDOM}}; cam_raw_2_valid = _RAND_15[0:0]; _RAND_16 = {1{`RANDOM}}; - cam_raw_3_tag = _RAND_16[2:0]; + cam_raw_3_bits_tag = _RAND_16[2:0]; _RAND_17 = {1{`RANDOM}}; cam_raw_3_valid = _RAND_17[0:0]; _RAND_18 = {1{`RANDOM}}; @@ -47471,21 +47471,21 @@ initial begin _RAND_24 = {1{`RANDOM}}; r_d_i0rd = _RAND_24[4:0]; _RAND_25 = {1{`RANDOM}}; - cam_raw_0_rd = _RAND_25[4:0]; + cam_raw_0_bits_rd = _RAND_25[4:0]; _RAND_26 = {1{`RANDOM}}; - cam_raw_0_wb = _RAND_26[0:0]; + cam_raw_0_bits_wb = _RAND_26[0:0]; _RAND_27 = {1{`RANDOM}}; - cam_raw_1_rd = _RAND_27[4:0]; + cam_raw_1_bits_rd = _RAND_27[4:0]; _RAND_28 = {1{`RANDOM}}; - cam_raw_1_wb = _RAND_28[0:0]; + cam_raw_1_bits_wb = _RAND_28[0:0]; _RAND_29 = {1{`RANDOM}}; - cam_raw_2_rd = _RAND_29[4:0]; + cam_raw_2_bits_rd = _RAND_29[4:0]; _RAND_30 = {1{`RANDOM}}; - cam_raw_2_wb = _RAND_30[0:0]; + cam_raw_2_bits_wb = _RAND_30[0:0]; _RAND_31 = {1{`RANDOM}}; - cam_raw_3_rd = _RAND_31[4:0]; + cam_raw_3_bits_rd = _RAND_31[4:0]; _RAND_32 = {1{`RANDOM}}; - cam_raw_3_wb = _RAND_32[0:0]; + cam_raw_3_bits_wb = _RAND_32[0:0]; _RAND_33 = {1{`RANDOM}}; lsu_idle = _RAND_33[0:0]; _RAND_34 = {1{`RANDOM}}; @@ -47634,25 +47634,25 @@ initial begin illegal_lockout = 1'h0; end if (reset) begin - cam_raw_0_tag = 3'h0; + cam_raw_0_bits_tag = 3'h0; end if (reset) begin cam_raw_0_valid = 1'h0; end if (reset) begin - cam_raw_1_tag = 3'h0; + cam_raw_1_bits_tag = 3'h0; end if (reset) begin cam_raw_1_valid = 1'h0; end if (reset) begin - cam_raw_2_tag = 3'h0; + cam_raw_2_bits_tag = 3'h0; end if (reset) begin cam_raw_2_valid = 1'h0; end if (reset) begin - cam_raw_3_tag = 3'h0; + cam_raw_3_bits_tag = 3'h0; end if (reset) begin cam_raw_3_valid = 1'h0; @@ -47679,28 +47679,28 @@ initial begin r_d_i0rd = 5'h0; end if (reset) begin - cam_raw_0_rd = 5'h0; + cam_raw_0_bits_rd = 5'h0; end if (reset) begin - cam_raw_0_wb = 1'h0; + cam_raw_0_bits_wb = 1'h0; end if (reset) begin - cam_raw_1_rd = 5'h0; + cam_raw_1_bits_rd = 5'h0; end if (reset) begin - cam_raw_1_wb = 1'h0; + cam_raw_1_bits_wb = 1'h0; end if (reset) begin - cam_raw_2_rd = 5'h0; + cam_raw_2_bits_rd = 5'h0; end if (reset) begin - cam_raw_2_wb = 1'h0; + cam_raw_2_bits_wb = 1'h0; end if (reset) begin - cam_raw_3_rd = 5'h0; + cam_raw_3_bits_rd = 5'h0; end if (reset) begin - cam_raw_3_wb = 1'h0; + cam_raw_3_bits_wb = 1'h0; end if (reset) begin lsu_idle = 1'h0; @@ -47960,11 +47960,11 @@ end // initial end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_0_tag <= 3'h0; + cam_raw_0_bits_tag <= 3'h0; end else if (cam_wen[0]) begin - cam_raw_0_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; + cam_raw_0_bits_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; end else if (_T_107) begin - cam_raw_0_tag <= 3'h0; + cam_raw_0_bits_tag <= 3'h0; end end always @(posedge io_free_clk or posedge reset) begin @@ -47978,11 +47978,11 @@ end // initial end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_1_tag <= 3'h0; + cam_raw_1_bits_tag <= 3'h0; end else if (cam_wen[1]) begin - cam_raw_1_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; + cam_raw_1_bits_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; end else if (_T_133) begin - cam_raw_1_tag <= 3'h0; + cam_raw_1_bits_tag <= 3'h0; end end always @(posedge io_free_clk or posedge reset) begin @@ -47996,11 +47996,11 @@ end // initial end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_2_tag <= 3'h0; + cam_raw_2_bits_tag <= 3'h0; end else if (cam_wen[2]) begin - cam_raw_2_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; + cam_raw_2_bits_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; end else if (_T_159) begin - cam_raw_2_tag <= 3'h0; + cam_raw_2_bits_tag <= 3'h0; end end always @(posedge io_free_clk or posedge reset) begin @@ -48014,11 +48014,11 @@ end // initial end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_3_tag <= 3'h0; + cam_raw_3_bits_tag <= 3'h0; end else if (cam_wen[3]) begin - cam_raw_3_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; + cam_raw_3_bits_tag <= {{1'd0}, io_lsu_nonblock_load_tag_m}; end else if (_T_185) begin - cam_raw_3_tag <= 3'h0; + cam_raw_3_bits_tag <= 3'h0; end end always @(posedge io_free_clk or posedge reset) begin @@ -48081,82 +48081,82 @@ end // initial end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_0_rd <= 5'h0; + cam_raw_0_bits_rd <= 5'h0; end else if (cam_wen[0]) begin if (x_d_i0load) begin - cam_raw_0_rd <= x_d_i0rd; + cam_raw_0_bits_rd <= x_d_i0rd; end else begin - cam_raw_0_rd <= 5'h0; + cam_raw_0_bits_rd <= 5'h0; end end else if (_T_107) begin - cam_raw_0_rd <= 5'h0; + cam_raw_0_bits_rd <= 5'h0; end end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_0_wb <= 1'h0; + cam_raw_0_bits_wb <= 1'h0; end else begin - cam_raw_0_wb <= _T_112 | _GEN_57; + cam_raw_0_bits_wb <= _T_112 | _GEN_57; end end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_1_rd <= 5'h0; + cam_raw_1_bits_rd <= 5'h0; end else if (cam_wen[1]) begin if (x_d_i0load) begin - cam_raw_1_rd <= x_d_i0rd; + cam_raw_1_bits_rd <= x_d_i0rd; end else begin - cam_raw_1_rd <= 5'h0; + cam_raw_1_bits_rd <= 5'h0; end end else if (_T_133) begin - cam_raw_1_rd <= 5'h0; + cam_raw_1_bits_rd <= 5'h0; end end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_1_wb <= 1'h0; + cam_raw_1_bits_wb <= 1'h0; end else begin - cam_raw_1_wb <= _T_138 | _GEN_68; + cam_raw_1_bits_wb <= _T_138 | _GEN_68; end end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_2_rd <= 5'h0; + cam_raw_2_bits_rd <= 5'h0; end else if (cam_wen[2]) begin if (x_d_i0load) begin - cam_raw_2_rd <= x_d_i0rd; + cam_raw_2_bits_rd <= x_d_i0rd; end else begin - cam_raw_2_rd <= 5'h0; + cam_raw_2_bits_rd <= 5'h0; end end else if (_T_159) begin - cam_raw_2_rd <= 5'h0; + cam_raw_2_bits_rd <= 5'h0; end end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_2_wb <= 1'h0; + cam_raw_2_bits_wb <= 1'h0; end else begin - cam_raw_2_wb <= _T_164 | _GEN_79; + cam_raw_2_bits_wb <= _T_164 | _GEN_79; end end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_3_rd <= 5'h0; + cam_raw_3_bits_rd <= 5'h0; end else if (cam_wen[3]) begin if (x_d_i0load) begin - cam_raw_3_rd <= x_d_i0rd; + cam_raw_3_bits_rd <= x_d_i0rd; end else begin - cam_raw_3_rd <= 5'h0; + cam_raw_3_bits_rd <= 5'h0; end end else if (_T_185) begin - cam_raw_3_rd <= 5'h0; + cam_raw_3_bits_rd <= 5'h0; end end always @(posedge io_free_clk or posedge reset) begin if (reset) begin - cam_raw_3_wb <= 1'h0; + cam_raw_3_bits_wb <= 1'h0; end else begin - cam_raw_3_wb <= _T_190 | _GEN_90; + cam_raw_3_bits_wb <= _T_190 | _GEN_90; end end always @(posedge io_active_clk or posedge reset) begin diff --git a/src/main/scala/dec/el2_dec_decode_ctl.scala b/src/main/scala/dec/el2_dec_decode_ctl.scala index d51481b7..5dd95a64 100644 --- a/src/main/scala/dec/el2_dec_decode_ctl.scala +++ b/src/main/scala/dec/el2_dec_decode_ctl.scala @@ -144,13 +144,13 @@ class el2_dec_decode_ctl extends Module with el2_lib with RequireAsyncReset{ val i0_rs1_depth_d = WireInit(UInt(2.W),0.U) val i0_rs2_depth_d = WireInit(UInt(2.W),0.U) val cam_wen=WireInit(UInt(LSU_NUM_NBLOAD.W), 0.U) - val cam = Wire(Vec(LSU_NUM_NBLOAD,new el2_load_cam_pkt_t)) + val cam = Wire(Vec(LSU_NUM_NBLOAD,Valid(new el2_load_cam_pkt_t))) val cam_write=WireInit(UInt(1.W), 0.U) val cam_inv_reset_val=Wire(Vec(LSU_NUM_NBLOAD,UInt(1.W))) val cam_data_reset_val=Wire(Vec(LSU_NUM_NBLOAD,UInt(1.W))) val nonblock_load_write=Wire(Vec(LSU_NUM_NBLOAD,UInt(1.W))) - val cam_raw =Wire(Vec(LSU_NUM_NBLOAD,new el2_load_cam_pkt_t)) - val cam_in =Wire(Vec(LSU_NUM_NBLOAD,new el2_load_cam_pkt_t)) + val cam_raw =Wire(Vec(LSU_NUM_NBLOAD,Valid(new el2_load_cam_pkt_t))) + val cam_in =Wire(Vec(LSU_NUM_NBLOAD,Valid(new el2_load_cam_pkt_t))) //val i0_temp = Wire(new el2_inst_pkt_t) val i0_dp= Wire(new el2_dec_pkt_t) val i0_dp_raw= Wire(new el2_dec_pkt_t) @@ -318,8 +318,8 @@ class el2_dec_decode_ctl extends Module with el2_lib with RequireAsyncReset{ val nonblock_load_valid_m_delay=withClock(io.active_clk){RegEnable(io.lsu_nonblock_load_valid_m,0.U, i0_r_ctl_en.asBool)} val i0_load_kill_wen_r = nonblock_load_valid_m_delay & r_d.i0load for(i <- 0 until LSU_NUM_NBLOAD){ - cam_inv_reset_val(i) := cam_inv_reset & (cam_inv_reset_tag === cam(i).tag) & cam(i).valid - cam_data_reset_val(i) := cam_data_reset & (cam_data_reset_tag === cam(i).tag) & cam_raw(i).valid + cam_inv_reset_val(i) := cam_inv_reset & (cam_inv_reset_tag === cam(i).bits.tag) & cam(i).valid + cam_data_reset_val(i) := cam_data_reset & (cam_data_reset_tag === cam(i).bits.tag) & cam_raw(i).valid cam_in(i):=0.U.asTypeOf(cam(0)) cam(i):=cam_raw(i) @@ -328,16 +328,16 @@ class el2_dec_decode_ctl extends Module with el2_lib with RequireAsyncReset{ } when(cam_wen(i).asBool){ cam_in(i).valid := 1.U(1.W) - cam_in(i).wb := 0.U(1.W) - cam_in(i).tag := cam_write_tag - cam_in(i).rd := nonblock_load_rd - }.elsewhen(cam_inv_reset_val(i).asBool || (i0_wen_r.asBool && (r_d_in.i0rd === cam(i).rd) && cam(i).wb.asBool)){ + cam_in(i).bits.wb := 0.U(1.W) + cam_in(i).bits.tag := cam_write_tag + cam_in(i).bits.rd := nonblock_load_rd + }.elsewhen(cam_inv_reset_val(i).asBool || (i0_wen_r.asBool && (r_d_in.i0rd === cam(i).bits.rd) && cam(i).bits.wb.asBool)){ cam_in(i).valid := 0.U }.otherwise{ cam_in(i) := cam(i) } - when(nonblock_load_valid_m_delay===1.U && (io.lsu_nonblock_load_inv_tag_r === cam(i).tag) && cam(i).valid===1.U){ - cam_in(i).wb := 1.U + when(nonblock_load_valid_m_delay===1.U && (io.lsu_nonblock_load_inv_tag_r === cam(i).bits.tag) && cam(i).valid===1.U){ + cam_in(i).bits.wb := 1.U } // force debug halt forces cam valids to 0; highest priority when(io.dec_tlu_force_halt){ @@ -345,7 +345,7 @@ class el2_dec_decode_ctl extends Module with el2_lib with RequireAsyncReset{ } cam_raw(i):=withClock(io.free_clk){RegNext(cam_in(i),0.U.asTypeOf(cam(0)))} - nonblock_load_write(i) := (load_data_tag === cam_raw(i).tag) & cam_raw(i).valid + nonblock_load_write(i) := (load_data_tag === cam_raw(i).bits.tag) & cam_raw(i).valid } io.dec_nonblock_load_waddr:=0.U(5.W) @@ -356,7 +356,7 @@ class el2_dec_decode_ctl extends Module with el2_lib with RequireAsyncReset{ i0_nonblock_load_stall := i0_nonblock_boundary_stall - val cal_temp= for(i <-0 until LSU_NUM_NBLOAD) yield ((Fill(5,nonblock_load_write(i)) & cam(i).rd), io.dec_i0_rs1_en_d & cam(i).valid & (cam(i).rd === i0r.rs1), io.dec_i0_rs2_en_d & cam(i).valid & (cam(i).rd === i0r.rs2)) + val cal_temp= for(i <-0 until LSU_NUM_NBLOAD) yield ((Fill(5,nonblock_load_write(i)) & cam(i).bits.rd), io.dec_i0_rs1_en_d & cam(i).valid & (cam(i).bits.rd === i0r.rs1), io.dec_i0_rs2_en_d & cam(i).valid & (cam(i).bits.rd === i0r.rs2)) val (waddr, ld_stall_1, ld_stall_2) = (cal_temp.map(_._1).reduce(_|_) , cal_temp.map(_._2).reduce(_|_), cal_temp.map(_._3).reduce(_|_) ) io.dec_nonblock_load_waddr:=waddr i0_nonblock_load_stall:=ld_stall_1 | ld_stall_2 | i0_nonblock_boundary_stall diff --git a/src/main/scala/include/el2_bundle.scala b/src/main/scala/include/el2_bundle.scala index 8145e097..acc6c8c1 100644 --- a/src/main/scala/include/el2_bundle.scala +++ b/src/main/scala/include/el2_bundle.scala @@ -36,7 +36,7 @@ object el2_inst_pkt_t extends Enumeration{ } class el2_load_cam_pkt_t extends Bundle { - val valid = UInt(1.W) + //val valid = UInt(1.W) val wb = UInt(1.W) val tag = UInt(3.W) val rd = UInt(5.W) diff --git a/target/scala-2.12/classes/dec/el2_dec_decode_ctl.class b/target/scala-2.12/classes/dec/el2_dec_decode_ctl.class index cbb391f1..a5c80f1f 100644 Binary files a/target/scala-2.12/classes/dec/el2_dec_decode_ctl.class and b/target/scala-2.12/classes/dec/el2_dec_decode_ctl.class differ diff --git a/target/scala-2.12/classes/include/el2_load_cam_pkt_t.class b/target/scala-2.12/classes/include/el2_load_cam_pkt_t.class index a5cb254b..838fc512 100644 Binary files a/target/scala-2.12/classes/include/el2_load_cam_pkt_t.class and b/target/scala-2.12/classes/include/el2_load_cam_pkt_t.class differ