From 6bdc75f842f35d507bb1f9a80455fb3a6760b946 Mon Sep 17 00:00:00 2001 From: waleed-lm Date: Wed, 30 Sep 2020 22:28:23 +0500 Subject: [PATCH] Async reset done in IFC --- EL2_IC_DATA.anno.json | 7 +- EL2_IC_DATA.fir | 75 +++- EL2_IC_DATA.v | 371 ++++++++++++++- el2_ifu_ifc_ctl.fir | 424 +++++++++--------- el2_ifu_ifc_ctl.v | 265 ++++++----- src/main/scala/ifu/el2_ifu_ic_mem.scala | 18 +- src/main/scala/ifu/el2_ifu_ifc_ctl.scala | 15 +- .../chisel-module-template.kotlin_module | Bin 16 -> 0 bytes .../classes/ifu/EL2_IC_DATA$$anon$3.class | Bin 4830 -> 4964 bytes .../scala-2.12/classes/ifu/EL2_IC_DATA.class | Bin 71145 -> 75471 bytes .../classes/ifu/el2_ifu_ifc_ctl.class | Bin 114693 -> 115810 bytes target/scala-2.12/classes/ifu/ifu_ic$.class | Bin 3862 -> 3862 bytes .../classes/ifu/ifu_ic$delayedInit$body.class | Bin 729 -> 729 bytes target/scala-2.12/classes/ifu/ifu_ifc$.class | Bin 3875 -> 3875 bytes .../ifu/ifu_ifc$delayedInit$body.class | Bin 736 -> 736 bytes 15 files changed, 813 insertions(+), 362 deletions(-) delete mode 100644 target/scala-2.12/classes/META-INF/chisel-module-template.kotlin_module diff --git a/EL2_IC_DATA.anno.json b/EL2_IC_DATA.anno.json index d417ca7f..934e9db6 100644 --- a/EL2_IC_DATA.anno.json +++ b/EL2_IC_DATA.anno.json @@ -3,10 +3,15 @@ "class":"firrtl.transforms.CombinationalPath", "sink":"~EL2_IC_DATA|EL2_IC_DATA>io_test", "sources":[ + "~EL2_IC_DATA|EL2_IC_DATA>io_ic_wr_en", + "~EL2_IC_DATA|EL2_IC_DATA>io_ic_debug_way", + "~EL2_IC_DATA|EL2_IC_DATA>io_clk_override", "~EL2_IC_DATA|EL2_IC_DATA>io_ic_rw_addr", "~EL2_IC_DATA|EL2_IC_DATA>io_ic_debug_addr", "~EL2_IC_DATA|EL2_IC_DATA>io_ic_debug_rd_en", - "~EL2_IC_DATA|EL2_IC_DATA>io_ic_debug_wr_en" + "~EL2_IC_DATA|EL2_IC_DATA>io_ic_debug_wr_en", + "~EL2_IC_DATA|EL2_IC_DATA>io_ic_debug_tag_array", + "~EL2_IC_DATA|EL2_IC_DATA>io_ic_rd_en" ] }, { diff --git a/EL2_IC_DATA.fir b/EL2_IC_DATA.fir index c2123084..d5c84d31 100644 --- a/EL2_IC_DATA.fir +++ b/EL2_IC_DATA.fir @@ -3,7 +3,7 @@ circuit EL2_IC_DATA : module EL2_IC_DATA : input clock : Clock input reset : UInt<1> - output io : {flip clk_override : UInt<1>, flip ic_rw_addr : UInt<12>, flip ic_wr_en : UInt<2>, flip ic_rd_en : UInt<1>, flip ic_wr_data : UInt<71>[2], ic_rd_data : UInt<64>, flip ic_debug_wr_data : UInt<71>, ic_debug_rd_data : UInt<71>, ic_parerr : UInt<2>, ic_eccerr : UInt<2>, flip ic_debug_addr : UInt<9>, flip ic_debug_rd_en : UInt<1>, flip ic_debug_wr_en : UInt<1>, flip ic_debug_tag_array : UInt<1>, flip ic_debug_way : UInt<2>, flip ic_premux_data : UInt<64>, flip ic_sel_premux_data : UInt<1>, flip ic_rd_hit : UInt<2>, flip scan_mode : UInt<1>, test : UInt} + output io : {flip clk_override : UInt<1>, flip ic_rw_addr : UInt<12>, flip ic_wr_en : UInt<2>, flip ic_rd_en : UInt<1>, flip ic_wr_data : UInt<71>[2], ic_rd_data : UInt<64>, flip ic_debug_wr_data : UInt<71>, ic_debug_rd_data : UInt<71>, ic_parerr : UInt<2>, ic_eccerr : UInt<2>, flip ic_debug_addr : UInt<9>, flip ic_debug_rd_en : UInt<1>, flip ic_debug_wr_en : UInt<1>, flip ic_debug_tag_array : UInt<1>, flip ic_debug_way : UInt<2>, flip ic_premux_data : UInt<64>, flip ic_sel_premux_data : UInt<1>, flip ic_rd_hit : UInt<2>, flip scan_mode : UInt<1>, flip test_in : UInt<71>, test : UInt} io.ic_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 194:17] io.ic_debug_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 195:23] @@ -183,4 +183,77 @@ circuit EL2_IC_DATA : node _T_134 = mux(UInt<1>("h01"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] node ic_cacheline_wrap_ff = eq(_T_133, _T_134) @[el2_ifu_ic_mem.scala 239:84] io.test <= ic_rw_addr_bank_q[1] @[el2_ifu_ic_mem.scala 241:11] + cmem data_mem : UInt<71>[2][2][512] @[el2_ifu_ic_mem.scala 246:21] + node _T_135 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 248:26] + node _T_136 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 248:50] + node _T_137 = and(_T_135, _T_136) @[el2_ifu_ic_mem.scala 248:29] + node _T_138 = bits(_T_137, 0, 0) @[el2_ifu_ic_mem.scala 248:55] + when _T_138 : @[el2_ifu_ic_mem.scala 248:62] + infer mport _T_139 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_139[0][0] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + skip @[el2_ifu_ic_mem.scala 248:62] + else : @[el2_ifu_ic_mem.scala 250:69] + node _T_140 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 250:33] + node _T_141 = eq(_T_140, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_142 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 250:57] + node _T_143 = and(_T_141, _T_142) @[el2_ifu_ic_mem.scala 250:36] + node _T_144 = bits(_T_143, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_144 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_145 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 251:26] + io.test <= _T_145[0][0] @[el2_ifu_ic_mem.scala 251:15] + skip @[el2_ifu_ic_mem.scala 250:69] + node _T_146 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 248:26] + node _T_147 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 248:50] + node _T_148 = and(_T_146, _T_147) @[el2_ifu_ic_mem.scala 248:29] + node _T_149 = bits(_T_148, 0, 0) @[el2_ifu_ic_mem.scala 248:55] + when _T_149 : @[el2_ifu_ic_mem.scala 248:62] + infer mport _T_150 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_150[1][0] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + skip @[el2_ifu_ic_mem.scala 248:62] + else : @[el2_ifu_ic_mem.scala 250:69] + node _T_151 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 250:33] + node _T_152 = eq(_T_151, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_153 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 250:57] + node _T_154 = and(_T_152, _T_153) @[el2_ifu_ic_mem.scala 250:36] + node _T_155 = bits(_T_154, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_155 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_156 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 251:26] + io.test <= _T_156[1][0] @[el2_ifu_ic_mem.scala 251:15] + skip @[el2_ifu_ic_mem.scala 250:69] + node _T_157 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 248:26] + node _T_158 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 248:50] + node _T_159 = and(_T_157, _T_158) @[el2_ifu_ic_mem.scala 248:29] + node _T_160 = bits(_T_159, 0, 0) @[el2_ifu_ic_mem.scala 248:55] + when _T_160 : @[el2_ifu_ic_mem.scala 248:62] + infer mport _T_161 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_161[0][1] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + skip @[el2_ifu_ic_mem.scala 248:62] + else : @[el2_ifu_ic_mem.scala 250:69] + node _T_162 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 250:33] + node _T_163 = eq(_T_162, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_164 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 250:57] + node _T_165 = and(_T_163, _T_164) @[el2_ifu_ic_mem.scala 250:36] + node _T_166 = bits(_T_165, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_166 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_167 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 251:26] + io.test <= _T_167[0][1] @[el2_ifu_ic_mem.scala 251:15] + skip @[el2_ifu_ic_mem.scala 250:69] + node _T_168 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 248:26] + node _T_169 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 248:50] + node _T_170 = and(_T_168, _T_169) @[el2_ifu_ic_mem.scala 248:29] + node _T_171 = bits(_T_170, 0, 0) @[el2_ifu_ic_mem.scala 248:55] + when _T_171 : @[el2_ifu_ic_mem.scala 248:62] + infer mport _T_172 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_172[1][1] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + skip @[el2_ifu_ic_mem.scala 248:62] + else : @[el2_ifu_ic_mem.scala 250:69] + node _T_173 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 250:33] + node _T_174 = eq(_T_173, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_175 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 250:57] + node _T_176 = and(_T_174, _T_175) @[el2_ifu_ic_mem.scala 250:36] + node _T_177 = bits(_T_176, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_177 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_178 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 251:26] + io.test <= _T_178[1][1] @[el2_ifu_ic_mem.scala 251:15] + skip @[el2_ifu_ic_mem.scala 250:69] diff --git a/EL2_IC_DATA.v b/EL2_IC_DATA.v index c280a505..02401496 100644 --- a/EL2_IC_DATA.v +++ b/EL2_IC_DATA.v @@ -21,14 +21,381 @@ module EL2_IC_DATA( input io_ic_sel_premux_data, input [1:0] io_ic_rd_hit, input io_scan_mode, - output [8:0] io_test + input [70:0] io_test_in, + output [70:0] io_test ); +`ifdef RANDOMIZE_MEM_INIT + reg [95:0] _RAND_0; + reg [95:0] _RAND_1; + reg [95:0] _RAND_2; + reg [95:0] _RAND_3; +`endif // RANDOMIZE_MEM_INIT + reg [70:0] data_mem_0_0 [0:511]; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_145_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_145_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_156_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_156_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_167_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_167_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_178_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_178_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_139_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_139_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_139_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_150_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_150_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_150_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_161_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_161_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_161_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_0__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_0__T_172_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_172_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_0__T_172_en; // @[el2_ifu_ic_mem.scala 246:21] + reg [70:0] data_mem_0_1 [0:511]; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_145_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_145_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_156_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_156_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_167_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_167_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_178_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_178_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_139_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_139_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_139_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_150_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_150_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_150_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_161_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_161_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_161_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_0_1__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_0_1__T_172_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_172_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_0_1__T_172_en; // @[el2_ifu_ic_mem.scala 246:21] + reg [70:0] data_mem_1_0 [0:511]; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_145_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_145_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_156_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_156_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_167_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_167_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_178_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_178_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_139_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_139_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_139_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_150_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_150_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_150_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_161_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_161_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_161_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_0__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_0__T_172_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_172_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_0__T_172_en; // @[el2_ifu_ic_mem.scala 246:21] + reg [70:0] data_mem_1_1 [0:511]; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_145_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_145_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_156_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_156_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_167_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_167_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_178_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_178_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_139_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_139_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_139_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_150_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_150_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_150_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_161_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_161_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_161_en; // @[el2_ifu_ic_mem.scala 246:21] + wire [70:0] data_mem_1_1__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + wire [8:0] data_mem_1_1__T_172_addr; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_172_mask; // @[el2_ifu_ic_mem.scala 246:21] + wire data_mem_1_1__T_172_en; // @[el2_ifu_ic_mem.scala 246:21] + wire _T = ~io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 200:70] + wire _T_5 = io_ic_debug_wr_en & _T; // @[el2_ifu_ic_mem.scala 201:68] + wire [1:0] _T_7 = {_T_5,_T_5}; // @[Cat.scala 29:58] + wire [1:0] ic_debug_wr_way_en = _T_7 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 201:94] wire _T_8 = io_ic_debug_rd_en | io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 206:45] wire [10:0] _T_10 = {io_ic_debug_addr,2'h0}; // @[Cat.scala 29:58] wire [11:0] ic_rw_addr_q = _T_8 ? {{1'd0}, _T_10} : io_ic_rw_addr; // @[el2_ifu_ic_mem.scala 206:25] + wire [8:0] ic_rw_addr_q_inc = ic_rw_addr_q[11:3] + 9'h1; // @[el2_ifu_ic_mem.scala 208:79] + wire _T_14 = ~io_ic_debug_addr[0]; // @[el2_ifu_ic_mem.scala 211:113] + wire [1:0] _T_16 = _T_14 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_17 = ic_debug_wr_way_en & _T_16; // @[el2_ifu_ic_mem.scala 211:38] + wire [1:0] ic_b_sb_wren_0 = io_ic_wr_en | _T_17; // @[el2_ifu_ic_mem.scala 211:17] + wire [1:0] _T_21 = io_ic_debug_addr[0] ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] _T_22 = ic_debug_wr_way_en & _T_21; // @[el2_ifu_ic_mem.scala 211:38] + wire [1:0] ic_b_sb_wren_1 = io_ic_wr_en | _T_22; // @[el2_ifu_ic_mem.scala 211:17] + wire _T_37 = ~ic_rw_addr_q[2]; // @[el2_ifu_ic_mem.scala 215:16] + wire _T_42 = ic_rw_addr_q[1:0] == 2'h3; // @[el2_ifu_ic_mem.scala 216:91] + wire _T_56 = ic_rw_addr_q[2] & _T_42; // @[Mux.scala 27:72] + wire _T_59 = _T_37 | _T_56; // @[Mux.scala 27:72] + wire _T_113 = |io_ic_wr_en; // @[el2_ifu_ic_mem.scala 223:74] + wire _T_114 = ~_T_113; // @[el2_ifu_ic_mem.scala 223:61] + wire _T_115 = io_ic_debug_rd_en & _T_114; // @[el2_ifu_ic_mem.scala 223:58] + wire ic_rd_en_with_debug = io_ic_rd_en | _T_115; // @[el2_ifu_ic_mem.scala 223:38] + wire _T_63 = _T_59 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 218:117] + wire _T_87 = _T_37 & _T_42; // @[Mux.scala 27:72] + wire _T_90 = ic_rw_addr_q[2] | _T_87; // @[Mux.scala 27:72] + wire _T_92 = _T_90 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 218:117] + wire [1:0] ic_b_rden = {_T_92,_T_63}; // @[Cat.scala 29:58] + wire [1:0] ic_b_sb_rden_0 = ic_b_rden[0] ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire [1:0] ic_b_sb_rden_1 = ic_b_rden[1] ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] + wire _T_98 = ic_b_sb_rden_0[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 221:25] + wire _T_100 = _T_98 | ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 221:43] + wire _T_102 = ic_b_sb_rden_0[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 221:25] + wire _T_104 = _T_102 | ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 221:43] + wire [1:0] ic_bank_way_clken_0 = {_T_100,_T_104}; // @[Cat.scala 29:58] + wire _T_106 = ic_b_sb_rden_1[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 221:25] + wire _T_108 = _T_106 | ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 221:43] + wire _T_110 = ic_b_sb_rden_1[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 221:25] + wire _T_112 = _T_110 | ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 221:43] + wire [1:0] ic_bank_way_clken_1 = {_T_108,_T_112}; // @[Cat.scala 29:58] + wire _T_121 = _T_56 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 225:86] + wire ic_rw_addr_wrap = _T_121 & _T_114; // @[el2_ifu_ic_mem.scala 225:108] + wire _T_124 = ~ic_rw_addr_wrap; // @[el2_ifu_ic_mem.scala 227:40] + wire [8:0] _T_129 = {ic_rw_addr_q[11:5],ic_rw_addr_q_inc[4:3]}; // @[Cat.scala 29:58] + wire _T_137 = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 248:29] + wire _T_141 = ~ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_143 = _T_141 & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_3 = _T_143 ? data_mem_0_0__T_145_data : {{62'd0}, ic_rw_addr_q[11:3]}; // @[el2_ifu_ic_mem.scala 250:69] + wire [70:0] _GEN_13 = _T_137 ? {{62'd0}, ic_rw_addr_q[11:3]} : _GEN_3; // @[el2_ifu_ic_mem.scala 248:62] + wire _T_148 = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 248:29] + wire _T_152 = ~ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_154 = _T_152 & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_17 = _T_154 ? data_mem_1_0__T_156_data : _GEN_13; // @[el2_ifu_ic_mem.scala 250:69] + wire [70:0] _GEN_27 = _T_148 ? _GEN_13 : _GEN_17; // @[el2_ifu_ic_mem.scala 248:62] + wire _T_159 = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 248:29] + wire _T_163 = ~ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_165 = _T_163 & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_31 = _T_165 ? data_mem_0_1__T_167_data : _GEN_27; // @[el2_ifu_ic_mem.scala 250:69] + wire [70:0] _GEN_41 = _T_159 ? _GEN_27 : _GEN_31; // @[el2_ifu_ic_mem.scala 248:62] + wire _T_170 = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 248:29] + wire _T_174 = ~ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_176 = _T_174 & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_45 = _T_176 ? data_mem_1_1__T_178_data : _GEN_41; // @[el2_ifu_ic_mem.scala 250:69] + assign data_mem_0_0__T_145_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_0__T_145_data = data_mem_0_0[data_mem_0_0__T_145_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_0__T_156_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_0__T_156_data = data_mem_0_0[data_mem_0_0__T_156_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_0__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_0__T_167_data = data_mem_0_0[data_mem_0_0__T_167_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_0__T_178_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_0__T_178_data = data_mem_0_0[data_mem_0_0__T_178_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_0__T_139_data = io_test_in; + assign data_mem_0_0__T_139_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_0__T_139_mask = 1'h1; + assign data_mem_0_0__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_0_0__T_150_data = 71'h0; + assign data_mem_0_0__T_150_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_0__T_150_mask = 1'h0; + assign data_mem_0_0__T_150_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_0_0__T_161_data = 71'h0; + assign data_mem_0_0__T_161_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_0__T_161_mask = 1'h0; + assign data_mem_0_0__T_161_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_0_0__T_172_data = 71'h0; + assign data_mem_0_0__T_172_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_0__T_172_mask = 1'h0; + assign data_mem_0_0__T_172_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; + assign data_mem_0_1__T_145_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_1__T_145_data = data_mem_0_1[data_mem_0_1__T_145_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_1__T_156_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_1__T_156_data = data_mem_0_1[data_mem_0_1__T_156_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_1__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_1__T_167_data = data_mem_0_1[data_mem_0_1__T_167_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_1__T_178_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_1__T_178_data = data_mem_0_1[data_mem_0_1__T_178_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_0_1__T_139_data = 71'h0; + assign data_mem_0_1__T_139_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_1__T_139_mask = 1'h0; + assign data_mem_0_1__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_0_1__T_150_data = 71'h0; + assign data_mem_0_1__T_150_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_1__T_150_mask = 1'h0; + assign data_mem_0_1__T_150_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_0_1__T_161_data = io_test_in; + assign data_mem_0_1__T_161_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_0_1__T_161_mask = 1'h1; + assign data_mem_0_1__T_161_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_0_1__T_172_data = 71'h0; + assign data_mem_0_1__T_172_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_1__T_172_mask = 1'h0; + assign data_mem_0_1__T_172_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; + assign data_mem_1_0__T_145_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_0__T_145_data = data_mem_1_0[data_mem_1_0__T_145_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_0__T_156_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_0__T_156_data = data_mem_1_0[data_mem_1_0__T_156_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_0__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_0__T_167_data = data_mem_1_0[data_mem_1_0__T_167_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_0__T_178_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_0__T_178_data = data_mem_1_0[data_mem_1_0__T_178_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_0__T_139_data = 71'h0; + assign data_mem_1_0__T_139_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_0__T_139_mask = 1'h0; + assign data_mem_1_0__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_1_0__T_150_data = io_test_in; + assign data_mem_1_0__T_150_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_0__T_150_mask = 1'h1; + assign data_mem_1_0__T_150_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_1_0__T_161_data = 71'h0; + assign data_mem_1_0__T_161_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_0__T_161_mask = 1'h0; + assign data_mem_1_0__T_161_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_1_0__T_172_data = 71'h0; + assign data_mem_1_0__T_172_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_0__T_172_mask = 1'h0; + assign data_mem_1_0__T_172_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; + assign data_mem_1_1__T_145_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_1__T_145_data = data_mem_1_1[data_mem_1_1__T_145_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_1__T_156_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_1__T_156_data = data_mem_1_1[data_mem_1_1__T_156_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_1__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_1__T_167_data = data_mem_1_1[data_mem_1_1__T_167_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_1__T_178_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_1__T_178_data = data_mem_1_1[data_mem_1_1__T_178_addr]; // @[el2_ifu_ic_mem.scala 246:21] + assign data_mem_1_1__T_139_data = 71'h0; + assign data_mem_1_1__T_139_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_1__T_139_mask = 1'h0; + assign data_mem_1_1__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_1_1__T_150_data = 71'h0; + assign data_mem_1_1__T_150_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_1__T_150_mask = 1'h0; + assign data_mem_1_1__T_150_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_1_1__T_161_data = 71'h0; + assign data_mem_1_1__T_161_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; + assign data_mem_1_1__T_161_mask = 1'h0; + assign data_mem_1_1__T_161_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_1_1__T_172_data = io_test_in; + assign data_mem_1_1__T_172_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_1__T_172_mask = 1'h1; + assign data_mem_1_1__T_172_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; assign io_ic_rd_data = 64'h0; // @[el2_ifu_ic_mem.scala 194:17] assign io_ic_debug_rd_data = 71'h0; // @[el2_ifu_ic_mem.scala 195:23] assign io_ic_parerr = 2'h0; // @[el2_ifu_ic_mem.scala 196:16] assign io_ic_eccerr = 2'h0; // @[el2_ifu_ic_mem.scala 197:16] - assign io_test = ic_rw_addr_q[11:3]; // @[el2_ifu_ic_mem.scala 198:11 el2_ifu_ic_mem.scala 209:11 el2_ifu_ic_mem.scala 241:11] + assign io_test = _T_170 ? _GEN_41 : _GEN_45; // @[el2_ifu_ic_mem.scala 198:11 el2_ifu_ic_mem.scala 209:11 el2_ifu_ic_mem.scala 241:11 el2_ifu_ic_mem.scala 251:15 el2_ifu_ic_mem.scala 251:15 el2_ifu_ic_mem.scala 251:15 el2_ifu_ic_mem.scala 251:15] +`ifdef RANDOMIZE_GARBAGE_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_INVALID_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_REG_INIT +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_MEM_INIT +`define RANDOMIZE +`endif +`ifndef RANDOM +`define RANDOM $random +`endif +`ifdef RANDOMIZE_MEM_INIT + integer initvar; +`endif +`ifndef SYNTHESIS +`ifdef FIRRTL_BEFORE_INITIAL +`FIRRTL_BEFORE_INITIAL +`endif +initial begin + `ifdef RANDOMIZE + `ifdef INIT_RANDOM + `INIT_RANDOM + `endif + `ifndef VERILATOR + `ifdef RANDOMIZE_DELAY + #`RANDOMIZE_DELAY begin end + `else + #0.002 begin end + `endif + `endif +`ifdef RANDOMIZE_MEM_INIT + _RAND_0 = {3{`RANDOM}}; + for (initvar = 0; initvar < 512; initvar = initvar+1) + data_mem_0_0[initvar] = _RAND_0[70:0]; + _RAND_1 = {3{`RANDOM}}; + for (initvar = 0; initvar < 512; initvar = initvar+1) + data_mem_0_1[initvar] = _RAND_1[70:0]; + _RAND_2 = {3{`RANDOM}}; + for (initvar = 0; initvar < 512; initvar = initvar+1) + data_mem_1_0[initvar] = _RAND_2[70:0]; + _RAND_3 = {3{`RANDOM}}; + for (initvar = 0; initvar < 512; initvar = initvar+1) + data_mem_1_1[initvar] = _RAND_3[70:0]; +`endif // RANDOMIZE_MEM_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS + always @(posedge clock) begin + if(data_mem_0_0__T_139_en & data_mem_0_0__T_139_mask) begin + data_mem_0_0[data_mem_0_0__T_139_addr] <= data_mem_0_0__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_0_0__T_150_en & data_mem_0_0__T_150_mask) begin + data_mem_0_0[data_mem_0_0__T_150_addr] <= data_mem_0_0__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_0_0__T_161_en & data_mem_0_0__T_161_mask) begin + data_mem_0_0[data_mem_0_0__T_161_addr] <= data_mem_0_0__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_0_0__T_172_en & data_mem_0_0__T_172_mask) begin + data_mem_0_0[data_mem_0_0__T_172_addr] <= data_mem_0_0__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_0_1__T_139_en & data_mem_0_1__T_139_mask) begin + data_mem_0_1[data_mem_0_1__T_139_addr] <= data_mem_0_1__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_0_1__T_150_en & data_mem_0_1__T_150_mask) begin + data_mem_0_1[data_mem_0_1__T_150_addr] <= data_mem_0_1__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_0_1__T_161_en & data_mem_0_1__T_161_mask) begin + data_mem_0_1[data_mem_0_1__T_161_addr] <= data_mem_0_1__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_0_1__T_172_en & data_mem_0_1__T_172_mask) begin + data_mem_0_1[data_mem_0_1__T_172_addr] <= data_mem_0_1__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_0__T_139_en & data_mem_1_0__T_139_mask) begin + data_mem_1_0[data_mem_1_0__T_139_addr] <= data_mem_1_0__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_0__T_150_en & data_mem_1_0__T_150_mask) begin + data_mem_1_0[data_mem_1_0__T_150_addr] <= data_mem_1_0__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_0__T_161_en & data_mem_1_0__T_161_mask) begin + data_mem_1_0[data_mem_1_0__T_161_addr] <= data_mem_1_0__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_0__T_172_en & data_mem_1_0__T_172_mask) begin + data_mem_1_0[data_mem_1_0__T_172_addr] <= data_mem_1_0__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_1__T_139_en & data_mem_1_1__T_139_mask) begin + data_mem_1_1[data_mem_1_1__T_139_addr] <= data_mem_1_1__T_139_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_1__T_150_en & data_mem_1_1__T_150_mask) begin + data_mem_1_1[data_mem_1_1__T_150_addr] <= data_mem_1_1__T_150_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_1__T_161_en & data_mem_1_1__T_161_mask) begin + data_mem_1_1[data_mem_1_1__T_161_addr] <= data_mem_1_1__T_161_data; // @[el2_ifu_ic_mem.scala 246:21] + end + if(data_mem_1_1__T_172_en & data_mem_1_1__T_172_mask) begin + data_mem_1_1[data_mem_1_1__T_172_addr] <= data_mem_1_1__T_172_data; // @[el2_ifu_ic_mem.scala 246:21] + end + end endmodule diff --git a/el2_ifu_ifc_ctl.fir b/el2_ifu_ifc_ctl.fir index f3feae58..9cc3dc93 100644 --- a/el2_ifu_ifc_ctl.fir +++ b/el2_ifu_ifc_ctl.fir @@ -5,9 +5,11 @@ circuit el2_ifu_ifc_ctl : input reset : AsyncReset output io : {flip free_clk : Clock, flip active_clk : UInt<1>, flip scan_mode : UInt<1>, flip ic_hit_f : UInt<1>, flip ifu_ic_mb_empty : UInt<1>, flip ifu_fb_consume1 : UInt<1>, flip ifu_fb_consume2 : UInt<1>, flip dec_tlu_flush_noredir_wb : UInt<1>, flip exu_flush_final : UInt<1>, flip exu_flush_path_final : UInt<31>, flip ifu_bp_hit_taken_f : UInt<1>, flip ifu_bp_btb_target_f : UInt<31>, flip ic_dma_active : UInt<1>, flip ic_write_stall : UInt<1>, flip dma_iccm_stall_any : UInt<1>, flip dec_tlu_mrac_ff : UInt<32>, ifc_fetch_addr_f : UInt<31>, ifc_fetch_addr_bf : UInt<31>, ifc_fetch_req_f : UInt<1>, ifu_pmu_fetch_stall : UInt<1>, ifc_fetch_uncacheable_bf : UInt<1>, ifc_fetch_req_bf : UInt<1>, ifc_fetch_req_bf_raw : UInt<1>, ifc_iccm_access_bf : UInt<1>, ifc_region_acc_fault_bf : UInt<1>, ifc_dma_access_ok : UInt<1>} - wire fetch_addr_bf : UInt<32> + wire fetch_addr_bf : UInt<31> fetch_addr_bf <= UInt<1>("h00") - wire fetch_addr_next : UInt<32> + wire fetch_addr_next_0 : UInt<1> + fetch_addr_next_0 <= UInt<1>("h00") + wire fetch_addr_next : UInt<31> fetch_addr_next <= UInt<1>("h00") wire fb_write_ns : UInt<4> fb_write_ns <= UInt<1>("h00") @@ -45,31 +47,31 @@ circuit el2_ifu_ifc_ctl : state <= UInt<1>("h00") wire dma_iccm_stall_any_f : UInt<1> dma_iccm_stall_any_f <= UInt<1>("h00") - node dma_stall = or(io.ic_dma_active, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 61:36] - reg _T : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 62:58] - _T <= io.dma_iccm_stall_any @[el2_ifu_ifc_ctl.scala 62:58] - dma_iccm_stall_any_f <= _T @[el2_ifu_ifc_ctl.scala 62:24] - reg _T_1 : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 64:44] - _T_1 <= miss_f @[el2_ifu_ifc_ctl.scala 64:44] - miss_a <= _T_1 @[el2_ifu_ifc_ctl.scala 64:10] - node _T_2 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 66:26] - node _T_3 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 66:49] - node _T_4 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 66:71] - node _T_5 = or(_T_3, _T_4) @[el2_ifu_ifc_ctl.scala 66:69] - node sel_last_addr_bf = and(_T_2, _T_5) @[el2_ifu_ifc_ctl.scala 66:46] - node _T_6 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 67:26] - node _T_7 = and(_T_6, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 67:46] - node _T_8 = and(_T_7, io.ifu_bp_hit_taken_f) @[el2_ifu_ifc_ctl.scala 67:67] - node sel_btb_addr_bf = and(_T_8, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 67:92] - node _T_9 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 68:26] - node _T_10 = and(_T_9, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 68:46] - node _T_11 = eq(io.ifu_bp_hit_taken_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 68:69] - node _T_12 = and(_T_10, _T_11) @[el2_ifu_ifc_ctl.scala 68:67] - node sel_next_addr_bf = and(_T_12, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 68:92] - node _T_13 = bits(io.exu_flush_final, 0, 0) @[el2_ifu_ifc_ctl.scala 71:56] - node _T_14 = bits(sel_last_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 72:22] - node _T_15 = bits(sel_btb_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 73:21] - node _T_16 = bits(sel_next_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 74:22] + node dma_stall = or(io.ic_dma_active, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 62:36] + reg _T : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 63:58] + _T <= io.dma_iccm_stall_any @[el2_ifu_ifc_ctl.scala 63:58] + dma_iccm_stall_any_f <= _T @[el2_ifu_ifc_ctl.scala 63:24] + reg _T_1 : UInt<1>, io.free_clk with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 65:44] + _T_1 <= miss_f @[el2_ifu_ifc_ctl.scala 65:44] + miss_a <= _T_1 @[el2_ifu_ifc_ctl.scala 65:10] + node _T_2 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 67:26] + node _T_3 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 67:49] + node _T_4 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 67:71] + node _T_5 = or(_T_3, _T_4) @[el2_ifu_ifc_ctl.scala 67:69] + node sel_last_addr_bf = and(_T_2, _T_5) @[el2_ifu_ifc_ctl.scala 67:46] + node _T_6 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 68:26] + node _T_7 = and(_T_6, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 68:46] + node _T_8 = and(_T_7, io.ifu_bp_hit_taken_f) @[el2_ifu_ifc_ctl.scala 68:67] + node sel_btb_addr_bf = and(_T_8, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 68:92] + node _T_9 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 69:26] + node _T_10 = and(_T_9, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 69:46] + node _T_11 = eq(io.ifu_bp_hit_taken_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 69:69] + node _T_12 = and(_T_10, _T_11) @[el2_ifu_ifc_ctl.scala 69:67] + node sel_next_addr_bf = and(_T_12, io.ic_hit_f) @[el2_ifu_ifc_ctl.scala 69:92] + node _T_13 = bits(io.exu_flush_final, 0, 0) @[el2_ifu_ifc_ctl.scala 72:56] + node _T_14 = bits(sel_last_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 73:22] + node _T_15 = bits(sel_btb_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 74:21] + node _T_16 = bits(sel_next_addr_bf, 0, 0) @[el2_ifu_ifc_ctl.scala 75:22] node _T_17 = mux(_T_13, io.exu_flush_path_final, UInt<1>("h00")) @[Mux.scala 27:72] node _T_18 = mux(_T_14, io.ifc_fetch_addr_f, UInt<1>("h00")) @[Mux.scala 27:72] node _T_19 = mux(_T_15, io.ifu_bp_btb_target_f, UInt<1>("h00")) @[Mux.scala 27:72] @@ -77,190 +79,192 @@ circuit el2_ifu_ifc_ctl : node _T_21 = or(_T_17, _T_18) @[Mux.scala 27:72] node _T_22 = or(_T_21, _T_19) @[Mux.scala 27:72] node _T_23 = or(_T_22, _T_20) @[Mux.scala 27:72] - wire _T_24 : UInt<32> @[Mux.scala 27:72] + wire _T_24 : UInt<31> @[Mux.scala 27:72] _T_24 <= _T_23 @[Mux.scala 27:72] - io.ifc_fetch_addr_bf <= _T_24 @[el2_ifu_ifc_ctl.scala 71:24] - line_wrap <= UInt<1>("h00") @[el2_ifu_ifc_ctl.scala 78:13] - node _T_25 = bits(line_wrap, 0, 0) @[el2_ifu_ifc_ctl.scala 79:47] - node _T_26 = bits(io.ifc_fetch_addr_f, 0, 0) @[el2_ifu_ifc_ctl.scala 79:75] - node fetch_addr_next_1 = mux(_T_25, UInt<1>("h00"), _T_26) @[el2_ifu_ifc_ctl.scala 79:30] - node _T_27 = bits(io.ifc_fetch_addr_f, 30, 1) @[el2_ifu_ifc_ctl.scala 80:45] - node _T_28 = add(_T_27, UInt<1>("h01")) @[el2_ifu_ifc_ctl.scala 80:51] - node _T_29 = tail(_T_28, 1) @[el2_ifu_ifc_ctl.scala 80:51] - node _T_30 = cat(_T_29, UInt<1>("h00")) @[Cat.scala 29:58] - fetch_addr_next <= _T_30 @[el2_ifu_ifc_ctl.scala 80:19] - node _T_31 = not(idle) @[el2_ifu_ifc_ctl.scala 83:30] - io.ifc_fetch_req_bf_raw <= _T_31 @[el2_ifu_ifc_ctl.scala 83:27] - node _T_32 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 85:91] - node _T_33 = eq(_T_32, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:70] - node _T_34 = and(fb_full_f_ns, _T_33) @[el2_ifu_ifc_ctl.scala 85:68] - node _T_35 = eq(_T_34, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:53] - node _T_36 = and(io.ifc_fetch_req_bf_raw, _T_35) @[el2_ifu_ifc_ctl.scala 85:51] - node _T_37 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 86:5] - node _T_38 = and(_T_36, _T_37) @[el2_ifu_ifc_ctl.scala 85:114] - node _T_39 = eq(io.ic_write_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 86:18] - node _T_40 = and(_T_38, _T_39) @[el2_ifu_ifc_ctl.scala 86:16] - node _T_41 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 86:39] - node _T_42 = and(_T_40, _T_41) @[el2_ifu_ifc_ctl.scala 86:37] - io.ifc_fetch_req_bf <= _T_42 @[el2_ifu_ifc_ctl.scala 85:23] - node _T_43 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 88:37] - fetch_bf_en <= _T_43 @[el2_ifu_ifc_ctl.scala 88:15] - node _T_44 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 90:34] - node _T_45 = and(io.ifc_fetch_req_f, _T_44) @[el2_ifu_ifc_ctl.scala 90:32] - node _T_46 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 90:49] - node _T_47 = and(_T_45, _T_46) @[el2_ifu_ifc_ctl.scala 90:47] - miss_f <= _T_47 @[el2_ifu_ifc_ctl.scala 90:10] - node _T_48 = or(io.ifu_ic_mb_empty, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 92:39] - node _T_49 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 92:63] - node _T_50 = and(_T_48, _T_49) @[el2_ifu_ifc_ctl.scala 92:61] - node _T_51 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 92:76] - node _T_52 = and(_T_50, _T_51) @[el2_ifu_ifc_ctl.scala 92:74] - node _T_53 = eq(miss_a, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 92:86] - node _T_54 = and(_T_52, _T_53) @[el2_ifu_ifc_ctl.scala 92:84] - mb_empty_mod <= _T_54 @[el2_ifu_ifc_ctl.scala 92:16] - node _T_55 = and(io.exu_flush_final, io.dec_tlu_flush_noredir_wb) @[el2_ifu_ifc_ctl.scala 94:35] - goto_idle <= _T_55 @[el2_ifu_ifc_ctl.scala 94:13] - node _T_56 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 96:38] - node _T_57 = and(io.exu_flush_final, _T_56) @[el2_ifu_ifc_ctl.scala 96:36] - node _T_58 = and(_T_57, idle) @[el2_ifu_ifc_ctl.scala 96:67] - leave_idle <= _T_58 @[el2_ifu_ifc_ctl.scala 96:14] - node _T_59 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 98:29] - node _T_60 = eq(_T_59, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:23] - node _T_61 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 98:40] - node _T_62 = and(_T_60, _T_61) @[el2_ifu_ifc_ctl.scala 98:33] - node _T_63 = and(_T_62, miss_f) @[el2_ifu_ifc_ctl.scala 98:44] - node _T_64 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:55] - node _T_65 = and(_T_63, _T_64) @[el2_ifu_ifc_ctl.scala 98:53] - node _T_66 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 99:11] - node _T_67 = eq(mb_empty_mod, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 99:17] - node _T_68 = and(_T_66, _T_67) @[el2_ifu_ifc_ctl.scala 99:15] - node _T_69 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 99:33] - node _T_70 = and(_T_68, _T_69) @[el2_ifu_ifc_ctl.scala 99:31] - node next_state_1 = or(_T_65, _T_70) @[el2_ifu_ifc_ctl.scala 98:67] - node _T_71 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 101:23] - node _T_72 = and(_T_71, leave_idle) @[el2_ifu_ifc_ctl.scala 101:34] - node _T_73 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 101:56] - node _T_74 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 101:62] - node _T_75 = and(_T_73, _T_74) @[el2_ifu_ifc_ctl.scala 101:60] - node next_state_0 = or(_T_72, _T_75) @[el2_ifu_ifc_ctl.scala 101:48] - node _T_76 = cat(next_state_1, next_state_0) @[Cat.scala 29:58] - reg _T_77 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 103:19] - _T_77 <= _T_76 @[el2_ifu_ifc_ctl.scala 103:19] - state <= _T_77 @[el2_ifu_ifc_ctl.scala 103:9] - flush_fb <= io.exu_flush_final @[el2_ifu_ifc_ctl.scala 105:12] - node _T_78 = eq(io.ifu_fb_consume2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 107:38] - node _T_79 = and(io.ifu_fb_consume1, _T_78) @[el2_ifu_ifc_ctl.scala 107:36] - node _T_80 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 107:61] - node _T_81 = or(_T_80, miss_f) @[el2_ifu_ifc_ctl.scala 107:81] - node _T_82 = and(_T_79, _T_81) @[el2_ifu_ifc_ctl.scala 107:58] - node _T_83 = and(io.ifu_fb_consume2, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 108:25] - node _T_84 = or(_T_82, _T_83) @[el2_ifu_ifc_ctl.scala 107:92] - fb_right <= _T_84 @[el2_ifu_ifc_ctl.scala 107:12] - node _T_85 = not(io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 110:39] - node _T_86 = or(_T_85, miss_f) @[el2_ifu_ifc_ctl.scala 110:59] - node _T_87 = and(io.ifu_fb_consume2, _T_86) @[el2_ifu_ifc_ctl.scala 110:36] - fb_right2 <= _T_87 @[el2_ifu_ifc_ctl.scala 110:13] - node _T_88 = or(io.ifu_fb_consume1, io.ifu_fb_consume2) @[el2_ifu_ifc_ctl.scala 111:56] - node _T_89 = eq(_T_88, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 111:35] - node _T_90 = and(io.ifc_fetch_req_f, _T_89) @[el2_ifu_ifc_ctl.scala 111:33] - node _T_91 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 111:80] - node _T_92 = and(_T_90, _T_91) @[el2_ifu_ifc_ctl.scala 111:78] - fb_left <= _T_92 @[el2_ifu_ifc_ctl.scala 111:11] - node _T_93 = bits(flush_fb, 0, 0) @[el2_ifu_ifc_ctl.scala 113:37] - node _T_94 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 114:6] - node _T_95 = and(_T_94, fb_right) @[el2_ifu_ifc_ctl.scala 114:16] - node _T_96 = bits(_T_95, 0, 0) @[el2_ifu_ifc_ctl.scala 114:28] - node _T_97 = bits(fb_write_f, 3, 1) @[el2_ifu_ifc_ctl.scala 114:62] - node _T_98 = cat(UInt<1>("h00"), _T_97) @[Cat.scala 29:58] - node _T_99 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 115:6] - node _T_100 = and(_T_99, fb_right2) @[el2_ifu_ifc_ctl.scala 115:16] - node _T_101 = bits(_T_100, 0, 0) @[el2_ifu_ifc_ctl.scala 115:29] - node _T_102 = bits(fb_write_f, 3, 2) @[el2_ifu_ifc_ctl.scala 115:63] - node _T_103 = cat(UInt<2>("h00"), _T_102) @[Cat.scala 29:58] - node _T_104 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:6] - node _T_105 = and(_T_104, fb_left) @[el2_ifu_ifc_ctl.scala 116:16] - node _T_106 = bits(_T_105, 0, 0) @[el2_ifu_ifc_ctl.scala 116:27] - node _T_107 = bits(fb_write_f, 2, 0) @[el2_ifu_ifc_ctl.scala 116:51] - node _T_108 = cat(_T_107, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_109 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:6] - node _T_110 = eq(fb_right, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:18] - node _T_111 = and(_T_109, _T_110) @[el2_ifu_ifc_ctl.scala 117:16] - node _T_112 = eq(fb_right2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:30] - node _T_113 = and(_T_111, _T_112) @[el2_ifu_ifc_ctl.scala 117:28] - node _T_114 = eq(fb_left, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 117:43] - node _T_115 = and(_T_113, _T_114) @[el2_ifu_ifc_ctl.scala 117:41] - node _T_116 = bits(_T_115, 0, 0) @[el2_ifu_ifc_ctl.scala 117:53] - node _T_117 = bits(fb_write_f, 3, 0) @[el2_ifu_ifc_ctl.scala 117:73] - node _T_118 = mux(_T_93, UInt<4>("h01"), UInt<1>("h00")) @[Mux.scala 27:72] - node _T_119 = mux(_T_96, _T_98, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_120 = mux(_T_101, _T_103, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_121 = mux(_T_106, _T_108, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_122 = mux(_T_116, _T_117, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_123 = or(_T_118, _T_119) @[Mux.scala 27:72] - node _T_124 = or(_T_123, _T_120) @[Mux.scala 27:72] - node _T_125 = or(_T_124, _T_121) @[Mux.scala 27:72] + io.ifc_fetch_addr_bf <= _T_24 @[el2_ifu_ifc_ctl.scala 72:24] + node _T_25 = bits(io.ifc_fetch_addr_f, 30, 1) @[el2_ifu_ifc_ctl.scala 77:42] + node _T_26 = add(_T_25, UInt<1>("h01")) @[el2_ifu_ifc_ctl.scala 77:48] + node address_upper = tail(_T_26, 1) @[el2_ifu_ifc_ctl.scala 77:48] + node _T_27 = bits(address_upper, 5, 5) @[el2_ifu_ifc_ctl.scala 78:38] + node _T_28 = bits(io.ifc_fetch_addr_f, 5, 5) @[el2_ifu_ifc_ctl.scala 78:83] + node _T_29 = xor(_T_27, _T_28) @[el2_ifu_ifc_ctl.scala 78:62] + node _T_30 = bits(io.ifc_fetch_addr_f, 0, 0) @[el2_ifu_ifc_ctl.scala 78:129] + node _T_31 = and(_T_29, _T_30) @[el2_ifu_ifc_ctl.scala 78:108] + fetch_addr_next_0 <= _T_31 @[el2_ifu_ifc_ctl.scala 78:21] + node _T_32 = cat(address_upper, fetch_addr_next_0) @[Cat.scala 29:58] + fetch_addr_next <= _T_32 @[el2_ifu_ifc_ctl.scala 80:19] + node _T_33 = not(idle) @[el2_ifu_ifc_ctl.scala 82:30] + io.ifc_fetch_req_bf_raw <= _T_33 @[el2_ifu_ifc_ctl.scala 82:27] + node _T_34 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 84:91] + node _T_35 = eq(_T_34, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 84:70] + node _T_36 = and(fb_full_f_ns, _T_35) @[el2_ifu_ifc_ctl.scala 84:68] + node _T_37 = eq(_T_36, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 84:53] + node _T_38 = and(io.ifc_fetch_req_bf_raw, _T_37) @[el2_ifu_ifc_ctl.scala 84:51] + node _T_39 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:5] + node _T_40 = and(_T_38, _T_39) @[el2_ifu_ifc_ctl.scala 84:114] + node _T_41 = eq(io.ic_write_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:18] + node _T_42 = and(_T_40, _T_41) @[el2_ifu_ifc_ctl.scala 85:16] + node _T_43 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 85:39] + node _T_44 = and(_T_42, _T_43) @[el2_ifu_ifc_ctl.scala 85:37] + io.ifc_fetch_req_bf <= _T_44 @[el2_ifu_ifc_ctl.scala 84:23] + node _T_45 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 87:37] + fetch_bf_en <= _T_45 @[el2_ifu_ifc_ctl.scala 87:15] + node _T_46 = eq(io.ic_hit_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 89:34] + node _T_47 = and(io.ifc_fetch_req_f, _T_46) @[el2_ifu_ifc_ctl.scala 89:32] + node _T_48 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 89:49] + node _T_49 = and(_T_47, _T_48) @[el2_ifu_ifc_ctl.scala 89:47] + miss_f <= _T_49 @[el2_ifu_ifc_ctl.scala 89:10] + node _T_50 = or(io.ifu_ic_mb_empty, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 91:39] + node _T_51 = eq(dma_stall, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 91:63] + node _T_52 = and(_T_50, _T_51) @[el2_ifu_ifc_ctl.scala 91:61] + node _T_53 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 91:76] + node _T_54 = and(_T_52, _T_53) @[el2_ifu_ifc_ctl.scala 91:74] + node _T_55 = eq(miss_a, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 91:86] + node _T_56 = and(_T_54, _T_55) @[el2_ifu_ifc_ctl.scala 91:84] + mb_empty_mod <= _T_56 @[el2_ifu_ifc_ctl.scala 91:16] + node _T_57 = and(io.exu_flush_final, io.dec_tlu_flush_noredir_wb) @[el2_ifu_ifc_ctl.scala 93:35] + goto_idle <= _T_57 @[el2_ifu_ifc_ctl.scala 93:13] + node _T_58 = eq(io.dec_tlu_flush_noredir_wb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 95:38] + node _T_59 = and(io.exu_flush_final, _T_58) @[el2_ifu_ifc_ctl.scala 95:36] + node _T_60 = and(_T_59, idle) @[el2_ifu_ifc_ctl.scala 95:67] + leave_idle <= _T_60 @[el2_ifu_ifc_ctl.scala 95:14] + node _T_61 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 97:29] + node _T_62 = eq(_T_61, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 97:23] + node _T_63 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 97:40] + node _T_64 = and(_T_62, _T_63) @[el2_ifu_ifc_ctl.scala 97:33] + node _T_65 = and(_T_64, miss_f) @[el2_ifu_ifc_ctl.scala 97:44] + node _T_66 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 97:55] + node _T_67 = and(_T_65, _T_66) @[el2_ifu_ifc_ctl.scala 97:53] + node _T_68 = bits(state, 1, 1) @[el2_ifu_ifc_ctl.scala 98:11] + node _T_69 = eq(mb_empty_mod, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:17] + node _T_70 = and(_T_68, _T_69) @[el2_ifu_ifc_ctl.scala 98:15] + node _T_71 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 98:33] + node _T_72 = and(_T_70, _T_71) @[el2_ifu_ifc_ctl.scala 98:31] + node next_state_1 = or(_T_67, _T_72) @[el2_ifu_ifc_ctl.scala 97:67] + node _T_73 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 100:23] + node _T_74 = and(_T_73, leave_idle) @[el2_ifu_ifc_ctl.scala 100:34] + node _T_75 = bits(state, 0, 0) @[el2_ifu_ifc_ctl.scala 100:56] + node _T_76 = eq(goto_idle, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 100:62] + node _T_77 = and(_T_75, _T_76) @[el2_ifu_ifc_ctl.scala 100:60] + node next_state_0 = or(_T_74, _T_77) @[el2_ifu_ifc_ctl.scala 100:48] + node _T_78 = cat(next_state_1, next_state_0) @[Cat.scala 29:58] + reg _T_79 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 102:19] + _T_79 <= _T_78 @[el2_ifu_ifc_ctl.scala 102:19] + state <= _T_79 @[el2_ifu_ifc_ctl.scala 102:9] + flush_fb <= io.exu_flush_final @[el2_ifu_ifc_ctl.scala 104:12] + node _T_80 = eq(io.ifu_fb_consume2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 106:38] + node _T_81 = and(io.ifu_fb_consume1, _T_80) @[el2_ifu_ifc_ctl.scala 106:36] + node _T_82 = eq(io.ifc_fetch_req_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 106:61] + node _T_83 = or(_T_82, miss_f) @[el2_ifu_ifc_ctl.scala 106:81] + node _T_84 = and(_T_81, _T_83) @[el2_ifu_ifc_ctl.scala 106:58] + node _T_85 = and(io.ifu_fb_consume2, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 107:25] + node _T_86 = or(_T_84, _T_85) @[el2_ifu_ifc_ctl.scala 106:92] + fb_right <= _T_86 @[el2_ifu_ifc_ctl.scala 106:12] + node _T_87 = not(io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 109:39] + node _T_88 = or(_T_87, miss_f) @[el2_ifu_ifc_ctl.scala 109:59] + node _T_89 = and(io.ifu_fb_consume2, _T_88) @[el2_ifu_ifc_ctl.scala 109:36] + fb_right2 <= _T_89 @[el2_ifu_ifc_ctl.scala 109:13] + node _T_90 = or(io.ifu_fb_consume1, io.ifu_fb_consume2) @[el2_ifu_ifc_ctl.scala 110:56] + node _T_91 = eq(_T_90, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 110:35] + node _T_92 = and(io.ifc_fetch_req_f, _T_91) @[el2_ifu_ifc_ctl.scala 110:33] + node _T_93 = eq(miss_f, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 110:80] + node _T_94 = and(_T_92, _T_93) @[el2_ifu_ifc_ctl.scala 110:78] + fb_left <= _T_94 @[el2_ifu_ifc_ctl.scala 110:11] + node _T_95 = bits(flush_fb, 0, 0) @[el2_ifu_ifc_ctl.scala 112:37] + node _T_96 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 113:6] + node _T_97 = and(_T_96, fb_right) @[el2_ifu_ifc_ctl.scala 113:16] + node _T_98 = bits(_T_97, 0, 0) @[el2_ifu_ifc_ctl.scala 113:28] + node _T_99 = bits(fb_write_f, 3, 1) @[el2_ifu_ifc_ctl.scala 113:62] + node _T_100 = cat(UInt<1>("h00"), _T_99) @[Cat.scala 29:58] + node _T_101 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 114:6] + node _T_102 = and(_T_101, fb_right2) @[el2_ifu_ifc_ctl.scala 114:16] + node _T_103 = bits(_T_102, 0, 0) @[el2_ifu_ifc_ctl.scala 114:29] + node _T_104 = bits(fb_write_f, 3, 2) @[el2_ifu_ifc_ctl.scala 114:63] + node _T_105 = cat(UInt<2>("h00"), _T_104) @[Cat.scala 29:58] + node _T_106 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 115:6] + node _T_107 = and(_T_106, fb_left) @[el2_ifu_ifc_ctl.scala 115:16] + node _T_108 = bits(_T_107, 0, 0) @[el2_ifu_ifc_ctl.scala 115:27] + node _T_109 = bits(fb_write_f, 2, 0) @[el2_ifu_ifc_ctl.scala 115:51] + node _T_110 = cat(_T_109, UInt<1>("h00")) @[Cat.scala 29:58] + node _T_111 = eq(flush_fb, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:6] + node _T_112 = eq(fb_right, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:18] + node _T_113 = and(_T_111, _T_112) @[el2_ifu_ifc_ctl.scala 116:16] + node _T_114 = eq(fb_right2, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:30] + node _T_115 = and(_T_113, _T_114) @[el2_ifu_ifc_ctl.scala 116:28] + node _T_116 = eq(fb_left, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 116:43] + node _T_117 = and(_T_115, _T_116) @[el2_ifu_ifc_ctl.scala 116:41] + node _T_118 = bits(_T_117, 0, 0) @[el2_ifu_ifc_ctl.scala 116:53] + node _T_119 = bits(fb_write_f, 3, 0) @[el2_ifu_ifc_ctl.scala 116:73] + node _T_120 = mux(_T_95, UInt<4>("h01"), UInt<1>("h00")) @[Mux.scala 27:72] + node _T_121 = mux(_T_98, _T_100, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_122 = mux(_T_103, _T_105, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_123 = mux(_T_108, _T_110, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_124 = mux(_T_118, _T_119, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_125 = or(_T_120, _T_121) @[Mux.scala 27:72] node _T_126 = or(_T_125, _T_122) @[Mux.scala 27:72] - wire _T_127 : UInt<4> @[Mux.scala 27:72] - _T_127 <= _T_126 @[Mux.scala 27:72] - fb_write_ns <= _T_127 @[el2_ifu_ifc_ctl.scala 113:15] - node _T_128 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 120:38] - reg _T_129 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 120:26] - _T_129 <= _T_128 @[el2_ifu_ifc_ctl.scala 120:26] - fb_full_f_ns <= _T_129 @[el2_ifu_ifc_ctl.scala 120:16] - node _T_130 = eq(state, UInt<2>("h00")) @[el2_ifu_ifc_ctl.scala 122:17] - idle <= _T_130 @[el2_ifu_ifc_ctl.scala 122:8] - node _T_131 = eq(state, UInt<2>("h03")) @[el2_ifu_ifc_ctl.scala 123:16] - wfm <= _T_131 @[el2_ifu_ifc_ctl.scala 123:7] - node _T_132 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 125:30] - fb_full_f_ns <= _T_132 @[el2_ifu_ifc_ctl.scala 125:16] - reg fb_full_f : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 126:26] - fb_full_f <= fb_full_f_ns @[el2_ifu_ifc_ctl.scala 126:26] - reg _T_133 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 127:24] - _T_133 <= fb_write_ns @[el2_ifu_ifc_ctl.scala 127:24] - fb_write_f <= _T_133 @[el2_ifu_ifc_ctl.scala 127:14] - node _T_134 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 130:40] - node _T_135 = or(_T_134, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 130:61] - node _T_136 = eq(_T_135, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 130:19] - node _T_137 = and(fb_full_f, _T_136) @[el2_ifu_ifc_ctl.scala 130:17] - node _T_138 = or(_T_137, dma_stall) @[el2_ifu_ifc_ctl.scala 130:84] - node _T_139 = and(io.ifc_fetch_req_bf_raw, _T_138) @[el2_ifu_ifc_ctl.scala 129:60] - node _T_140 = or(wfm, _T_139) @[el2_ifu_ifc_ctl.scala 129:33] - io.ifu_pmu_fetch_stall <= _T_140 @[el2_ifu_ifc_ctl.scala 129:26] - node _T_141 = cat(io.ifc_fetch_addr_bf, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_142 = bits(_T_141, 31, 28) @[el2_lib.scala 211:25] - node iccm_acc_in_region_bf = eq(_T_142, UInt<4>("h0e")) @[el2_lib.scala 211:47] - node _T_143 = bits(_T_141, 31, 16) @[el2_lib.scala 214:14] - node iccm_acc_in_range_bf = eq(_T_143, UInt<16>("h0ee00")) @[el2_lib.scala 214:29] - io.ifc_iccm_access_bf <= iccm_acc_in_range_bf @[el2_ifu_ifc_ctl.scala 135:25] - node _T_144 = eq(io.ifc_iccm_access_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 136:30] - node _T_145 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 137:39] - node _T_146 = eq(_T_145, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 137:18] - node _T_147 = and(fb_full_f, _T_146) @[el2_ifu_ifc_ctl.scala 137:16] - node _T_148 = or(_T_144, _T_147) @[el2_ifu_ifc_ctl.scala 136:53] - node _T_149 = eq(io.ifc_fetch_req_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 138:13] - node _T_150 = and(wfm, _T_149) @[el2_ifu_ifc_ctl.scala 138:11] - node _T_151 = or(_T_148, _T_150) @[el2_ifu_ifc_ctl.scala 137:62] - node _T_152 = or(_T_151, idle) @[el2_ifu_ifc_ctl.scala 138:35] - node _T_153 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 138:46] - node _T_154 = and(_T_152, _T_153) @[el2_ifu_ifc_ctl.scala 138:44] - node _T_155 = or(_T_154, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 138:67] - io.ifc_dma_access_ok <= _T_155 @[el2_ifu_ifc_ctl.scala 136:24] - node _T_156 = not(iccm_acc_in_range_bf) @[el2_ifu_ifc_ctl.scala 140:33] - node _T_157 = and(_T_156, iccm_acc_in_region_bf) @[el2_ifu_ifc_ctl.scala 140:55] - io.ifc_region_acc_fault_bf <= _T_157 @[el2_ifu_ifc_ctl.scala 140:30] - node _T_158 = bits(io.ifc_fetch_addr_bf, 30, 27) @[el2_ifu_ifc_ctl.scala 141:78] - node _T_159 = cat(_T_158, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_160 = dshr(io.dec_tlu_mrac_ff, _T_159) @[el2_ifu_ifc_ctl.scala 141:53] - node _T_161 = bits(_T_160, 0, 0) @[el2_ifu_ifc_ctl.scala 141:53] - node _T_162 = not(_T_161) @[el2_ifu_ifc_ctl.scala 141:34] - io.ifc_fetch_uncacheable_bf <= _T_162 @[el2_ifu_ifc_ctl.scala 141:31] - reg _T_163 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 143:32] - _T_163 <= io.ifc_fetch_req_bf @[el2_ifu_ifc_ctl.scala 143:32] - io.ifc_fetch_req_f <= _T_163 @[el2_ifu_ifc_ctl.scala 143:22] - node _T_164 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 145:88] - reg _T_165 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] - when _T_164 : @[Reg.scala 28:19] - _T_165 <= io.ifc_fetch_addr_bf @[Reg.scala 28:23] + node _T_127 = or(_T_126, _T_123) @[Mux.scala 27:72] + node _T_128 = or(_T_127, _T_124) @[Mux.scala 27:72] + wire _T_129 : UInt<4> @[Mux.scala 27:72] + _T_129 <= _T_128 @[Mux.scala 27:72] + fb_write_ns <= _T_129 @[el2_ifu_ifc_ctl.scala 112:15] + node _T_130 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 119:38] + reg _T_131 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 119:26] + _T_131 <= _T_130 @[el2_ifu_ifc_ctl.scala 119:26] + fb_full_f_ns <= _T_131 @[el2_ifu_ifc_ctl.scala 119:16] + node _T_132 = eq(state, UInt<2>("h00")) @[el2_ifu_ifc_ctl.scala 121:17] + idle <= _T_132 @[el2_ifu_ifc_ctl.scala 121:8] + node _T_133 = eq(state, UInt<2>("h03")) @[el2_ifu_ifc_ctl.scala 122:16] + wfm <= _T_133 @[el2_ifu_ifc_ctl.scala 122:7] + node _T_134 = bits(fb_write_ns, 3, 3) @[el2_ifu_ifc_ctl.scala 124:30] + fb_full_f_ns <= _T_134 @[el2_ifu_ifc_ctl.scala 124:16] + reg fb_full_f : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 125:26] + fb_full_f <= fb_full_f_ns @[el2_ifu_ifc_ctl.scala 125:26] + reg _T_135 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 126:24] + _T_135 <= fb_write_ns @[el2_ifu_ifc_ctl.scala 126:24] + fb_write_f <= _T_135 @[el2_ifu_ifc_ctl.scala 126:14] + node _T_136 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 129:40] + node _T_137 = or(_T_136, io.exu_flush_final) @[el2_ifu_ifc_ctl.scala 129:61] + node _T_138 = eq(_T_137, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 129:19] + node _T_139 = and(fb_full_f, _T_138) @[el2_ifu_ifc_ctl.scala 129:17] + node _T_140 = or(_T_139, dma_stall) @[el2_ifu_ifc_ctl.scala 129:84] + node _T_141 = and(io.ifc_fetch_req_bf_raw, _T_140) @[el2_ifu_ifc_ctl.scala 128:60] + node _T_142 = or(wfm, _T_141) @[el2_ifu_ifc_ctl.scala 128:33] + io.ifu_pmu_fetch_stall <= _T_142 @[el2_ifu_ifc_ctl.scala 128:26] + node _T_143 = cat(io.ifc_fetch_addr_bf, UInt<1>("h00")) @[Cat.scala 29:58] + node _T_144 = bits(_T_143, 31, 28) @[el2_lib.scala 211:25] + node iccm_acc_in_region_bf = eq(_T_144, UInt<4>("h0e")) @[el2_lib.scala 211:47] + node _T_145 = bits(_T_143, 31, 16) @[el2_lib.scala 214:14] + node iccm_acc_in_range_bf = eq(_T_145, UInt<16>("h0ee00")) @[el2_lib.scala 214:29] + io.ifc_iccm_access_bf <= iccm_acc_in_range_bf @[el2_ifu_ifc_ctl.scala 134:25] + node _T_146 = eq(io.ifc_iccm_access_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 135:30] + node _T_147 = or(io.ifu_fb_consume2, io.ifu_fb_consume1) @[el2_ifu_ifc_ctl.scala 136:39] + node _T_148 = eq(_T_147, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 136:18] + node _T_149 = and(fb_full_f, _T_148) @[el2_ifu_ifc_ctl.scala 136:16] + node _T_150 = or(_T_146, _T_149) @[el2_ifu_ifc_ctl.scala 135:53] + node _T_151 = eq(io.ifc_fetch_req_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 137:13] + node _T_152 = and(wfm, _T_151) @[el2_ifu_ifc_ctl.scala 137:11] + node _T_153 = or(_T_150, _T_152) @[el2_ifu_ifc_ctl.scala 136:62] + node _T_154 = or(_T_153, idle) @[el2_ifu_ifc_ctl.scala 137:35] + node _T_155 = eq(io.exu_flush_final, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 137:46] + node _T_156 = and(_T_154, _T_155) @[el2_ifu_ifc_ctl.scala 137:44] + node _T_157 = or(_T_156, dma_iccm_stall_any_f) @[el2_ifu_ifc_ctl.scala 137:67] + io.ifc_dma_access_ok <= _T_157 @[el2_ifu_ifc_ctl.scala 135:24] + node _T_158 = eq(iccm_acc_in_range_bf, UInt<1>("h00")) @[el2_ifu_ifc_ctl.scala 139:33] + node _T_159 = and(_T_158, iccm_acc_in_region_bf) @[el2_ifu_ifc_ctl.scala 139:55] + io.ifc_region_acc_fault_bf <= _T_159 @[el2_ifu_ifc_ctl.scala 139:30] + node _T_160 = bits(io.ifc_fetch_addr_bf, 30, 27) @[el2_ifu_ifc_ctl.scala 140:78] + node _T_161 = cat(_T_160, UInt<1>("h00")) @[Cat.scala 29:58] + node _T_162 = dshr(io.dec_tlu_mrac_ff, _T_161) @[el2_ifu_ifc_ctl.scala 140:53] + node _T_163 = bits(_T_162, 0, 0) @[el2_ifu_ifc_ctl.scala 140:53] + node _T_164 = not(_T_163) @[el2_ifu_ifc_ctl.scala 140:34] + io.ifc_fetch_uncacheable_bf <= _T_164 @[el2_ifu_ifc_ctl.scala 140:31] + reg _T_165 : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ifc_ctl.scala 142:32] + _T_165 <= io.ifc_fetch_req_bf @[el2_ifu_ifc_ctl.scala 142:32] + io.ifc_fetch_req_f <= _T_165 @[el2_ifu_ifc_ctl.scala 142:22] + node _T_166 = or(io.exu_flush_final, io.ifc_fetch_req_f) @[el2_ifu_ifc_ctl.scala 144:88] + reg _T_167 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] + when _T_166 : @[Reg.scala 28:19] + _T_167 <= io.ifc_fetch_addr_bf @[Reg.scala 28:23] skip @[Reg.scala 28:19] - io.ifc_fetch_addr_f <= _T_165 @[el2_ifu_ifc_ctl.scala 145:23] + io.ifc_fetch_addr_f <= _T_167 @[el2_ifu_ifc_ctl.scala 144:23] diff --git a/el2_ifu_ifc_ctl.v b/el2_ifu_ifc_ctl.v index c0b5bfd2..873deb1d 100644 --- a/el2_ifu_ifc_ctl.v +++ b/el2_ifu_ifc_ctl.v @@ -37,134 +37,133 @@ module el2_ifu_ifc_ctl( reg [31:0] _RAND_5; reg [31:0] _RAND_6; `endif // RANDOMIZE_REG_INIT - reg dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 62:58] - wire dma_stall = io_ic_dma_active | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 61:36] - reg miss_a; // @[el2_ifu_ifc_ctl.scala 64:44] - wire _T_2 = ~io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 66:26] - wire _T_3 = ~io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 66:49] - wire _T_4 = ~io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 66:71] - wire _T_5 = _T_3 | _T_4; // @[el2_ifu_ifc_ctl.scala 66:69] - wire sel_last_addr_bf = _T_2 & _T_5; // @[el2_ifu_ifc_ctl.scala 66:46] - wire _T_7 = _T_2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 67:46] - wire _T_8 = _T_7 & io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 67:67] - wire sel_btb_addr_bf = _T_8 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 67:92] - wire _T_11 = ~io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 68:69] - wire _T_12 = _T_7 & _T_11; // @[el2_ifu_ifc_ctl.scala 68:67] - wire sel_next_addr_bf = _T_12 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 68:92] + reg dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 63:58] + wire dma_stall = io_ic_dma_active | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 62:36] + reg miss_a; // @[el2_ifu_ifc_ctl.scala 65:44] + wire _T_2 = ~io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 67:26] + wire _T_3 = ~io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 67:49] + wire _T_4 = ~io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 67:71] + wire _T_5 = _T_3 | _T_4; // @[el2_ifu_ifc_ctl.scala 67:69] + wire sel_last_addr_bf = _T_2 & _T_5; // @[el2_ifu_ifc_ctl.scala 67:46] + wire _T_7 = _T_2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 68:46] + wire _T_8 = _T_7 & io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 68:67] + wire sel_btb_addr_bf = _T_8 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 68:92] + wire _T_11 = ~io_ifu_bp_hit_taken_f; // @[el2_ifu_ifc_ctl.scala 69:69] + wire _T_12 = _T_7 & _T_11; // @[el2_ifu_ifc_ctl.scala 69:67] + wire sel_next_addr_bf = _T_12 & io_ic_hit_f; // @[el2_ifu_ifc_ctl.scala 69:92] wire [30:0] _T_17 = io_exu_flush_final ? io_exu_flush_path_final : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_18 = sel_last_addr_bf ? io_ifc_fetch_addr_f : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_19 = sel_btb_addr_bf ? io_ifu_bp_btb_target_f : 31'h0; // @[Mux.scala 27:72] - wire [29:0] _T_29 = io_ifc_fetch_addr_f[30:1] + 30'h1; // @[el2_ifu_ifc_ctl.scala 80:51] - wire [30:0] _T_30 = {_T_29,1'h0}; // @[Cat.scala 29:58] - wire [31:0] fetch_addr_next = {{1'd0}, _T_30}; // @[el2_ifu_ifc_ctl.scala 80:19] - wire [31:0] _T_20 = sel_next_addr_bf ? fetch_addr_next : 32'h0; // @[Mux.scala 27:72] + wire [29:0] address_upper = io_ifc_fetch_addr_f[30:1] + 30'h1; // @[el2_ifu_ifc_ctl.scala 77:48] + wire _T_29 = address_upper[5] ^ io_ifc_fetch_addr_f[5]; // @[el2_ifu_ifc_ctl.scala 78:62] + wire fetch_addr_next_0 = _T_29 & io_ifc_fetch_addr_f[0]; // @[el2_ifu_ifc_ctl.scala 78:108] + wire [30:0] fetch_addr_next = {address_upper,fetch_addr_next_0}; // @[Cat.scala 29:58] + wire [30:0] _T_20 = sel_next_addr_bf ? fetch_addr_next : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_21 = _T_17 | _T_18; // @[Mux.scala 27:72] wire [30:0] _T_22 = _T_21 | _T_19; // @[Mux.scala 27:72] - wire [31:0] _GEN_1 = {{1'd0}, _T_22}; // @[Mux.scala 27:72] - wire [31:0] _T_23 = _GEN_1 | _T_20; // @[Mux.scala 27:72] - reg [1:0] state; // @[el2_ifu_ifc_ctl.scala 103:19] - wire idle = state == 2'h0; // @[el2_ifu_ifc_ctl.scala 122:17] - wire _T_32 = io_ifu_fb_consume2 | io_ifu_fb_consume1; // @[el2_ifu_ifc_ctl.scala 85:91] - wire _T_33 = ~_T_32; // @[el2_ifu_ifc_ctl.scala 85:70] - wire [3:0] _T_118 = io_exu_flush_final ? 4'h1 : 4'h0; // @[Mux.scala 27:72] - wire _T_78 = ~io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 107:38] - wire _T_79 = io_ifu_fb_consume1 & _T_78; // @[el2_ifu_ifc_ctl.scala 107:36] - wire _T_45 = io_ifc_fetch_req_f & _T_4; // @[el2_ifu_ifc_ctl.scala 90:32] - wire miss_f = _T_45 & _T_2; // @[el2_ifu_ifc_ctl.scala 90:47] - wire _T_81 = _T_3 | miss_f; // @[el2_ifu_ifc_ctl.scala 107:81] - wire _T_82 = _T_79 & _T_81; // @[el2_ifu_ifc_ctl.scala 107:58] - wire _T_83 = io_ifu_fb_consume2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 108:25] - wire fb_right = _T_82 | _T_83; // @[el2_ifu_ifc_ctl.scala 107:92] - wire _T_95 = _T_2 & fb_right; // @[el2_ifu_ifc_ctl.scala 114:16] - reg [3:0] fb_write_f; // @[el2_ifu_ifc_ctl.scala 127:24] - wire [3:0] _T_98 = {1'h0,fb_write_f[3:1]}; // @[Cat.scala 29:58] - wire [3:0] _T_119 = _T_95 ? _T_98 : 4'h0; // @[Mux.scala 27:72] - wire [3:0] _T_123 = _T_118 | _T_119; // @[Mux.scala 27:72] - wire fb_right2 = io_ifu_fb_consume2 & _T_81; // @[el2_ifu_ifc_ctl.scala 110:36] - wire _T_100 = _T_2 & fb_right2; // @[el2_ifu_ifc_ctl.scala 115:16] - wire [3:0] _T_103 = {2'h0,fb_write_f[3:2]}; // @[Cat.scala 29:58] - wire [3:0] _T_120 = _T_100 ? _T_103 : 4'h0; // @[Mux.scala 27:72] - wire [3:0] _T_124 = _T_123 | _T_120; // @[Mux.scala 27:72] - wire _T_88 = io_ifu_fb_consume1 | io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 111:56] - wire _T_89 = ~_T_88; // @[el2_ifu_ifc_ctl.scala 111:35] - wire _T_90 = io_ifc_fetch_req_f & _T_89; // @[el2_ifu_ifc_ctl.scala 111:33] - wire _T_91 = ~miss_f; // @[el2_ifu_ifc_ctl.scala 111:80] - wire fb_left = _T_90 & _T_91; // @[el2_ifu_ifc_ctl.scala 111:78] - wire _T_105 = _T_2 & fb_left; // @[el2_ifu_ifc_ctl.scala 116:16] - wire [3:0] _T_108 = {fb_write_f[2:0],1'h0}; // @[Cat.scala 29:58] - wire [3:0] _T_121 = _T_105 ? _T_108 : 4'h0; // @[Mux.scala 27:72] - wire [3:0] _T_125 = _T_124 | _T_121; // @[Mux.scala 27:72] - wire _T_110 = ~fb_right; // @[el2_ifu_ifc_ctl.scala 117:18] - wire _T_111 = _T_2 & _T_110; // @[el2_ifu_ifc_ctl.scala 117:16] - wire _T_112 = ~fb_right2; // @[el2_ifu_ifc_ctl.scala 117:30] - wire _T_113 = _T_111 & _T_112; // @[el2_ifu_ifc_ctl.scala 117:28] - wire _T_114 = ~fb_left; // @[el2_ifu_ifc_ctl.scala 117:43] - wire _T_115 = _T_113 & _T_114; // @[el2_ifu_ifc_ctl.scala 117:41] - wire [3:0] _T_122 = _T_115 ? fb_write_f : 4'h0; // @[Mux.scala 27:72] - wire [3:0] fb_write_ns = _T_125 | _T_122; // @[Mux.scala 27:72] - wire fb_full_f_ns = fb_write_ns[3]; // @[el2_ifu_ifc_ctl.scala 125:30] - wire _T_34 = fb_full_f_ns & _T_33; // @[el2_ifu_ifc_ctl.scala 85:68] - wire _T_35 = ~_T_34; // @[el2_ifu_ifc_ctl.scala 85:53] - wire _T_36 = io_ifc_fetch_req_bf_raw & _T_35; // @[el2_ifu_ifc_ctl.scala 85:51] - wire _T_37 = ~dma_stall; // @[el2_ifu_ifc_ctl.scala 86:5] - wire _T_38 = _T_36 & _T_37; // @[el2_ifu_ifc_ctl.scala 85:114] - wire _T_39 = ~io_ic_write_stall; // @[el2_ifu_ifc_ctl.scala 86:18] - wire _T_40 = _T_38 & _T_39; // @[el2_ifu_ifc_ctl.scala 86:16] - wire _T_41 = ~io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 86:39] - wire fetch_bf_en = io_exu_flush_final | io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 88:37] - wire _T_48 = io_ifu_ic_mb_empty | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 92:39] - wire _T_50 = _T_48 & _T_37; // @[el2_ifu_ifc_ctl.scala 92:61] - wire _T_52 = _T_50 & _T_91; // @[el2_ifu_ifc_ctl.scala 92:74] - wire _T_53 = ~miss_a; // @[el2_ifu_ifc_ctl.scala 92:86] - wire mb_empty_mod = _T_52 & _T_53; // @[el2_ifu_ifc_ctl.scala 92:84] - wire goto_idle = io_exu_flush_final & io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 94:35] - wire _T_57 = io_exu_flush_final & _T_41; // @[el2_ifu_ifc_ctl.scala 96:36] - wire leave_idle = _T_57 & idle; // @[el2_ifu_ifc_ctl.scala 96:67] - wire _T_60 = ~state[1]; // @[el2_ifu_ifc_ctl.scala 98:23] - wire _T_62 = _T_60 & state[0]; // @[el2_ifu_ifc_ctl.scala 98:33] - wire _T_63 = _T_62 & miss_f; // @[el2_ifu_ifc_ctl.scala 98:44] - wire _T_64 = ~goto_idle; // @[el2_ifu_ifc_ctl.scala 98:55] - wire _T_65 = _T_63 & _T_64; // @[el2_ifu_ifc_ctl.scala 98:53] - wire _T_67 = ~mb_empty_mod; // @[el2_ifu_ifc_ctl.scala 99:17] - wire _T_68 = state[1] & _T_67; // @[el2_ifu_ifc_ctl.scala 99:15] - wire _T_70 = _T_68 & _T_64; // @[el2_ifu_ifc_ctl.scala 99:31] - wire next_state_1 = _T_65 | _T_70; // @[el2_ifu_ifc_ctl.scala 98:67] - wire _T_72 = _T_64 & leave_idle; // @[el2_ifu_ifc_ctl.scala 101:34] - wire _T_75 = state[0] & _T_64; // @[el2_ifu_ifc_ctl.scala 101:60] - wire next_state_0 = _T_72 | _T_75; // @[el2_ifu_ifc_ctl.scala 101:48] - wire wfm = state == 2'h3; // @[el2_ifu_ifc_ctl.scala 123:16] - reg fb_full_f; // @[el2_ifu_ifc_ctl.scala 126:26] - wire _T_135 = _T_32 | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 130:61] - wire _T_136 = ~_T_135; // @[el2_ifu_ifc_ctl.scala 130:19] - wire _T_137 = fb_full_f & _T_136; // @[el2_ifu_ifc_ctl.scala 130:17] - wire _T_138 = _T_137 | dma_stall; // @[el2_ifu_ifc_ctl.scala 130:84] - wire _T_139 = io_ifc_fetch_req_bf_raw & _T_138; // @[el2_ifu_ifc_ctl.scala 129:60] - wire [31:0] _T_141 = {io_ifc_fetch_addr_bf,1'h0}; // @[Cat.scala 29:58] - wire iccm_acc_in_region_bf = _T_141[31:28] == 4'he; // @[el2_lib.scala 211:47] - wire iccm_acc_in_range_bf = _T_141[31:16] == 16'hee00; // @[el2_lib.scala 214:29] - wire _T_144 = ~io_ifc_iccm_access_bf; // @[el2_ifu_ifc_ctl.scala 136:30] - wire _T_147 = fb_full_f & _T_33; // @[el2_ifu_ifc_ctl.scala 137:16] - wire _T_148 = _T_144 | _T_147; // @[el2_ifu_ifc_ctl.scala 136:53] - wire _T_149 = ~io_ifc_fetch_req_bf; // @[el2_ifu_ifc_ctl.scala 138:13] - wire _T_150 = wfm & _T_149; // @[el2_ifu_ifc_ctl.scala 138:11] - wire _T_151 = _T_148 | _T_150; // @[el2_ifu_ifc_ctl.scala 137:62] - wire _T_152 = _T_151 | idle; // @[el2_ifu_ifc_ctl.scala 138:35] - wire _T_154 = _T_152 & _T_2; // @[el2_ifu_ifc_ctl.scala 138:44] - wire _T_156 = ~iccm_acc_in_range_bf; // @[el2_ifu_ifc_ctl.scala 140:33] - wire [4:0] _T_159 = {io_ifc_fetch_addr_bf[30:27],1'h0}; // @[Cat.scala 29:58] - wire [31:0] _T_160 = io_dec_tlu_mrac_ff >> _T_159; // @[el2_ifu_ifc_ctl.scala 141:53] - reg _T_163; // @[el2_ifu_ifc_ctl.scala 143:32] - reg [30:0] _T_165; // @[Reg.scala 27:20] - assign io_ifc_fetch_addr_f = _T_165; // @[el2_ifu_ifc_ctl.scala 145:23] - assign io_ifc_fetch_addr_bf = _T_23[30:0]; // @[el2_ifu_ifc_ctl.scala 71:24] - assign io_ifc_fetch_req_f = _T_163; // @[el2_ifu_ifc_ctl.scala 143:22] - assign io_ifu_pmu_fetch_stall = wfm | _T_139; // @[el2_ifu_ifc_ctl.scala 129:26] - assign io_ifc_fetch_uncacheable_bf = ~_T_160[0]; // @[el2_ifu_ifc_ctl.scala 141:31] - assign io_ifc_fetch_req_bf = _T_40 & _T_41; // @[el2_ifu_ifc_ctl.scala 85:23] - assign io_ifc_fetch_req_bf_raw = ~idle; // @[el2_ifu_ifc_ctl.scala 83:27] - assign io_ifc_iccm_access_bf = _T_141[31:16] == 16'hee00; // @[el2_ifu_ifc_ctl.scala 135:25] - assign io_ifc_region_acc_fault_bf = _T_156 & iccm_acc_in_region_bf; // @[el2_ifu_ifc_ctl.scala 140:30] - assign io_ifc_dma_access_ok = _T_154 | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 136:24] + reg [1:0] state; // @[el2_ifu_ifc_ctl.scala 102:19] + wire idle = state == 2'h0; // @[el2_ifu_ifc_ctl.scala 121:17] + wire _T_34 = io_ifu_fb_consume2 | io_ifu_fb_consume1; // @[el2_ifu_ifc_ctl.scala 84:91] + wire _T_35 = ~_T_34; // @[el2_ifu_ifc_ctl.scala 84:70] + wire [3:0] _T_120 = io_exu_flush_final ? 4'h1 : 4'h0; // @[Mux.scala 27:72] + wire _T_80 = ~io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 106:38] + wire _T_81 = io_ifu_fb_consume1 & _T_80; // @[el2_ifu_ifc_ctl.scala 106:36] + wire _T_47 = io_ifc_fetch_req_f & _T_4; // @[el2_ifu_ifc_ctl.scala 89:32] + wire miss_f = _T_47 & _T_2; // @[el2_ifu_ifc_ctl.scala 89:47] + wire _T_83 = _T_3 | miss_f; // @[el2_ifu_ifc_ctl.scala 106:81] + wire _T_84 = _T_81 & _T_83; // @[el2_ifu_ifc_ctl.scala 106:58] + wire _T_85 = io_ifu_fb_consume2 & io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 107:25] + wire fb_right = _T_84 | _T_85; // @[el2_ifu_ifc_ctl.scala 106:92] + wire _T_97 = _T_2 & fb_right; // @[el2_ifu_ifc_ctl.scala 113:16] + reg [3:0] fb_write_f; // @[el2_ifu_ifc_ctl.scala 126:24] + wire [3:0] _T_100 = {1'h0,fb_write_f[3:1]}; // @[Cat.scala 29:58] + wire [3:0] _T_121 = _T_97 ? _T_100 : 4'h0; // @[Mux.scala 27:72] + wire [3:0] _T_125 = _T_120 | _T_121; // @[Mux.scala 27:72] + wire fb_right2 = io_ifu_fb_consume2 & _T_83; // @[el2_ifu_ifc_ctl.scala 109:36] + wire _T_102 = _T_2 & fb_right2; // @[el2_ifu_ifc_ctl.scala 114:16] + wire [3:0] _T_105 = {2'h0,fb_write_f[3:2]}; // @[Cat.scala 29:58] + wire [3:0] _T_122 = _T_102 ? _T_105 : 4'h0; // @[Mux.scala 27:72] + wire [3:0] _T_126 = _T_125 | _T_122; // @[Mux.scala 27:72] + wire _T_90 = io_ifu_fb_consume1 | io_ifu_fb_consume2; // @[el2_ifu_ifc_ctl.scala 110:56] + wire _T_91 = ~_T_90; // @[el2_ifu_ifc_ctl.scala 110:35] + wire _T_92 = io_ifc_fetch_req_f & _T_91; // @[el2_ifu_ifc_ctl.scala 110:33] + wire _T_93 = ~miss_f; // @[el2_ifu_ifc_ctl.scala 110:80] + wire fb_left = _T_92 & _T_93; // @[el2_ifu_ifc_ctl.scala 110:78] + wire _T_107 = _T_2 & fb_left; // @[el2_ifu_ifc_ctl.scala 115:16] + wire [3:0] _T_110 = {fb_write_f[2:0],1'h0}; // @[Cat.scala 29:58] + wire [3:0] _T_123 = _T_107 ? _T_110 : 4'h0; // @[Mux.scala 27:72] + wire [3:0] _T_127 = _T_126 | _T_123; // @[Mux.scala 27:72] + wire _T_112 = ~fb_right; // @[el2_ifu_ifc_ctl.scala 116:18] + wire _T_113 = _T_2 & _T_112; // @[el2_ifu_ifc_ctl.scala 116:16] + wire _T_114 = ~fb_right2; // @[el2_ifu_ifc_ctl.scala 116:30] + wire _T_115 = _T_113 & _T_114; // @[el2_ifu_ifc_ctl.scala 116:28] + wire _T_116 = ~fb_left; // @[el2_ifu_ifc_ctl.scala 116:43] + wire _T_117 = _T_115 & _T_116; // @[el2_ifu_ifc_ctl.scala 116:41] + wire [3:0] _T_124 = _T_117 ? fb_write_f : 4'h0; // @[Mux.scala 27:72] + wire [3:0] fb_write_ns = _T_127 | _T_124; // @[Mux.scala 27:72] + wire fb_full_f_ns = fb_write_ns[3]; // @[el2_ifu_ifc_ctl.scala 124:30] + wire _T_36 = fb_full_f_ns & _T_35; // @[el2_ifu_ifc_ctl.scala 84:68] + wire _T_37 = ~_T_36; // @[el2_ifu_ifc_ctl.scala 84:53] + wire _T_38 = io_ifc_fetch_req_bf_raw & _T_37; // @[el2_ifu_ifc_ctl.scala 84:51] + wire _T_39 = ~dma_stall; // @[el2_ifu_ifc_ctl.scala 85:5] + wire _T_40 = _T_38 & _T_39; // @[el2_ifu_ifc_ctl.scala 84:114] + wire _T_41 = ~io_ic_write_stall; // @[el2_ifu_ifc_ctl.scala 85:18] + wire _T_42 = _T_40 & _T_41; // @[el2_ifu_ifc_ctl.scala 85:16] + wire _T_43 = ~io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 85:39] + wire fetch_bf_en = io_exu_flush_final | io_ifc_fetch_req_f; // @[el2_ifu_ifc_ctl.scala 87:37] + wire _T_50 = io_ifu_ic_mb_empty | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 91:39] + wire _T_52 = _T_50 & _T_39; // @[el2_ifu_ifc_ctl.scala 91:61] + wire _T_54 = _T_52 & _T_93; // @[el2_ifu_ifc_ctl.scala 91:74] + wire _T_55 = ~miss_a; // @[el2_ifu_ifc_ctl.scala 91:86] + wire mb_empty_mod = _T_54 & _T_55; // @[el2_ifu_ifc_ctl.scala 91:84] + wire goto_idle = io_exu_flush_final & io_dec_tlu_flush_noredir_wb; // @[el2_ifu_ifc_ctl.scala 93:35] + wire _T_59 = io_exu_flush_final & _T_43; // @[el2_ifu_ifc_ctl.scala 95:36] + wire leave_idle = _T_59 & idle; // @[el2_ifu_ifc_ctl.scala 95:67] + wire _T_62 = ~state[1]; // @[el2_ifu_ifc_ctl.scala 97:23] + wire _T_64 = _T_62 & state[0]; // @[el2_ifu_ifc_ctl.scala 97:33] + wire _T_65 = _T_64 & miss_f; // @[el2_ifu_ifc_ctl.scala 97:44] + wire _T_66 = ~goto_idle; // @[el2_ifu_ifc_ctl.scala 97:55] + wire _T_67 = _T_65 & _T_66; // @[el2_ifu_ifc_ctl.scala 97:53] + wire _T_69 = ~mb_empty_mod; // @[el2_ifu_ifc_ctl.scala 98:17] + wire _T_70 = state[1] & _T_69; // @[el2_ifu_ifc_ctl.scala 98:15] + wire _T_72 = _T_70 & _T_66; // @[el2_ifu_ifc_ctl.scala 98:31] + wire next_state_1 = _T_67 | _T_72; // @[el2_ifu_ifc_ctl.scala 97:67] + wire _T_74 = _T_66 & leave_idle; // @[el2_ifu_ifc_ctl.scala 100:34] + wire _T_77 = state[0] & _T_66; // @[el2_ifu_ifc_ctl.scala 100:60] + wire next_state_0 = _T_74 | _T_77; // @[el2_ifu_ifc_ctl.scala 100:48] + wire wfm = state == 2'h3; // @[el2_ifu_ifc_ctl.scala 122:16] + reg fb_full_f; // @[el2_ifu_ifc_ctl.scala 125:26] + wire _T_137 = _T_34 | io_exu_flush_final; // @[el2_ifu_ifc_ctl.scala 129:61] + wire _T_138 = ~_T_137; // @[el2_ifu_ifc_ctl.scala 129:19] + wire _T_139 = fb_full_f & _T_138; // @[el2_ifu_ifc_ctl.scala 129:17] + wire _T_140 = _T_139 | dma_stall; // @[el2_ifu_ifc_ctl.scala 129:84] + wire _T_141 = io_ifc_fetch_req_bf_raw & _T_140; // @[el2_ifu_ifc_ctl.scala 128:60] + wire [31:0] _T_143 = {io_ifc_fetch_addr_bf,1'h0}; // @[Cat.scala 29:58] + wire iccm_acc_in_region_bf = _T_143[31:28] == 4'he; // @[el2_lib.scala 211:47] + wire iccm_acc_in_range_bf = _T_143[31:16] == 16'hee00; // @[el2_lib.scala 214:29] + wire _T_146 = ~io_ifc_iccm_access_bf; // @[el2_ifu_ifc_ctl.scala 135:30] + wire _T_149 = fb_full_f & _T_35; // @[el2_ifu_ifc_ctl.scala 136:16] + wire _T_150 = _T_146 | _T_149; // @[el2_ifu_ifc_ctl.scala 135:53] + wire _T_151 = ~io_ifc_fetch_req_bf; // @[el2_ifu_ifc_ctl.scala 137:13] + wire _T_152 = wfm & _T_151; // @[el2_ifu_ifc_ctl.scala 137:11] + wire _T_153 = _T_150 | _T_152; // @[el2_ifu_ifc_ctl.scala 136:62] + wire _T_154 = _T_153 | idle; // @[el2_ifu_ifc_ctl.scala 137:35] + wire _T_156 = _T_154 & _T_2; // @[el2_ifu_ifc_ctl.scala 137:44] + wire _T_158 = ~iccm_acc_in_range_bf; // @[el2_ifu_ifc_ctl.scala 139:33] + wire [4:0] _T_161 = {io_ifc_fetch_addr_bf[30:27],1'h0}; // @[Cat.scala 29:58] + wire [31:0] _T_162 = io_dec_tlu_mrac_ff >> _T_161; // @[el2_ifu_ifc_ctl.scala 140:53] + reg _T_165; // @[el2_ifu_ifc_ctl.scala 142:32] + reg [30:0] _T_167; // @[Reg.scala 27:20] + assign io_ifc_fetch_addr_f = _T_167; // @[el2_ifu_ifc_ctl.scala 144:23] + assign io_ifc_fetch_addr_bf = _T_22 | _T_20; // @[el2_ifu_ifc_ctl.scala 72:24] + assign io_ifc_fetch_req_f = _T_165; // @[el2_ifu_ifc_ctl.scala 142:22] + assign io_ifu_pmu_fetch_stall = wfm | _T_141; // @[el2_ifu_ifc_ctl.scala 128:26] + assign io_ifc_fetch_uncacheable_bf = ~_T_162[0]; // @[el2_ifu_ifc_ctl.scala 140:31] + assign io_ifc_fetch_req_bf = _T_42 & _T_43; // @[el2_ifu_ifc_ctl.scala 84:23] + assign io_ifc_fetch_req_bf_raw = ~idle; // @[el2_ifu_ifc_ctl.scala 82:27] + assign io_ifc_iccm_access_bf = _T_143[31:16] == 16'hee00; // @[el2_ifu_ifc_ctl.scala 134:25] + assign io_ifc_region_acc_fault_bf = _T_158 & iccm_acc_in_region_bf; // @[el2_ifu_ifc_ctl.scala 139:30] + assign io_ifc_dma_access_ok = _T_156 | dma_iccm_stall_any_f; // @[el2_ifu_ifc_ctl.scala 135:24] `ifdef RANDOMIZE_GARBAGE_ASSIGN `define RANDOMIZE `endif @@ -211,9 +210,9 @@ initial begin _RAND_4 = {1{`RANDOM}}; fb_full_f = _RAND_4[0:0]; _RAND_5 = {1{`RANDOM}}; - _T_163 = _RAND_5[0:0]; + _T_165 = _RAND_5[0:0]; _RAND_6 = {1{`RANDOM}}; - _T_165 = _RAND_6[30:0]; + _T_167 = _RAND_6[30:0]; `endif // RANDOMIZE_REG_INIT if (reset) begin dma_iccm_stall_any_f = 1'h0; @@ -231,10 +230,10 @@ initial begin fb_full_f = 1'h0; end if (reset) begin - _T_163 = 1'h0; + _T_165 = 1'h0; end if (reset) begin - _T_165 = 31'h0; + _T_167 = 31'h0; end `endif // RANDOMIZE end // initial @@ -253,7 +252,7 @@ end // initial if (reset) begin miss_a <= 1'h0; end else begin - miss_a <= _T_45 & _T_2; + miss_a <= _T_47 & _T_2; end end always @(posedge clock or posedge reset) begin @@ -267,7 +266,7 @@ end // initial if (reset) begin fb_write_f <= 4'h0; end else begin - fb_write_f <= _T_125 | _T_122; + fb_write_f <= _T_127 | _T_124; end end always @(posedge clock or posedge reset) begin @@ -279,16 +278,16 @@ end // initial end always @(posedge clock or posedge reset) begin if (reset) begin - _T_163 <= 1'h0; + _T_165 <= 1'h0; end else begin - _T_163 <= io_ifc_fetch_req_bf; + _T_165 <= io_ifc_fetch_req_bf; end end always @(posedge clock or posedge reset) begin if (reset) begin - _T_165 <= 31'h0; + _T_167 <= 31'h0; end else if (fetch_bf_en) begin - _T_165 <= io_ifc_fetch_addr_bf; + _T_167 <= io_ifc_fetch_addr_bf; end end endmodule diff --git a/src/main/scala/ifu/el2_ifu_ic_mem.scala b/src/main/scala/ifu/el2_ifu_ic_mem.scala index 742b1d1e..18eb6367 100644 --- a/src/main/scala/ifu/el2_ifu_ic_mem.scala +++ b/src/main/scala/ifu/el2_ifu_ic_mem.scala @@ -186,7 +186,7 @@ class EL2_IC_DATA extends Module with el2_lib { val ic_sel_premux_data = Input(Bool()) val ic_rd_hit = Input(UInt(ICACHE_NUM_WAYS.W)) val scan_mode = Input(UInt(1.W)) - + val test_in = Input(UInt(71.W)) val test = Output(UInt()) // val test_port = Output(Vec(ICACHE_BANKS_WAY, Vec(ICACHE_NUM_WAYS, UInt(71.W)))) }) @@ -243,12 +243,16 @@ class EL2_IC_DATA extends Module with el2_lib { //////////////////////////////////////////// Memory stated val (data_mem_word, tag_mem_word, ecc_offset) = DATA_MEM_LINE -// val data_mem = Mem(ICACHE_DATA_DEPTH, Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W)))) -// for(i<-0 until ICACHE_NUM_WAYS; k<-0 until ICACHE_BANKS_WAY){ -// when((ic_b_sb_wren(k)(i)&ic_bank_way_clken(k)(i)).asBool){ -// data_mem() -// } -// } + val data_mem = Mem(ICACHE_DATA_DEPTH, Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W)))) + for(i<-0 until ICACHE_NUM_WAYS; k<-0 until ICACHE_BANKS_WAY){ +// val + when((ic_b_sb_wren(k)(i)&ic_bank_way_clken(k)(i)).asBool){ + data_mem(ic_rw_addr_bank_q(k))(k)(i) := io.test_in + }.elsewhen((!ic_b_sb_wren(k)(i)&ic_bank_way_clken(k)(i)).asBool){ + io.test := data_mem(ic_rw_addr_bank_q(k))(k)(i) + } + } + // val ic_bank_way_clken = new Array[UInt](ICACHE_NUM_WAYS) // ic_bank_way_clken(0) = (repl(ICACHE_NUM_WAYS,ic_b_rden(0)) | io.clk_override | ic_b_sb_wren(0)) // for(i<-1 until ICACHE_NUM_WAYS){ diff --git a/src/main/scala/ifu/el2_ifu_ifc_ctl.scala b/src/main/scala/ifu/el2_ifu_ifc_ctl.scala index 2982800f..b397133f 100644 --- a/src/main/scala/ifu/el2_ifu_ifc_ctl.scala +++ b/src/main/scala/ifu/el2_ifu_ifc_ctl.scala @@ -35,8 +35,9 @@ class el2_ifu_ifc_ctl extends Module with el2_lib with RequireAsyncReset { val ifc_dma_access_ok = Output(Bool()) }) - val fetch_addr_bf = WireInit(UInt(32.W), init = 0.U) - val fetch_addr_next = WireInit(UInt(32.W), init = 0.U) + val fetch_addr_bf = WireInit(UInt(31.W), init = 0.U) + val fetch_addr_next_0 = WireInit(Bool(), 0.U) + val fetch_addr_next = WireInit(UInt(31.W), init = 0.U) val fb_write_ns = WireInit(UInt(4.W), init = 0.U) val fb_write_f = WireInit(UInt(4.W), init = 0.U) val fb_full_f_ns = WireInit(Bool(), init = 0.U) @@ -73,12 +74,10 @@ class el2_ifu_ifc_ctl extends Module with el2_lib with RequireAsyncReset { sel_btb_addr_bf.asBool -> io.ifu_bp_btb_target_f, // Take the predicted PC sel_next_addr_bf.asBool -> fetch_addr_next)) // PC+4 - //io.test_out := io.ifc_fetch_addr_bf + val address_upper = io.ifc_fetch_addr_f(30,1)+1.U + fetch_addr_next_0 := (address_upper(ICACHE_TAG_INDEX_LO-1) ^ io.ifc_fetch_addr_f(ICACHE_TAG_INDEX_LO-1)) & io.ifc_fetch_addr_f(0) - line_wrap := 0.U//fetch_addr_next(ICACHE_TAG_INDEX_LO) ^ io.ifc_fetch_addr_f(ICACHE_TAG_INDEX_LO) - val fetch_addr_next_1 = Mux(line_wrap.asBool(), 0.U, io.ifc_fetch_addr_f(0)) - fetch_addr_next := Cat(io.ifc_fetch_addr_f(30,1)+1.U, 0.U) //| - //Mux(line_wrap.asBool(), 0.U, io.ifc_fetch_addr_f(0))) + fetch_addr_next := Cat(address_upper, fetch_addr_next_0) io.ifc_fetch_req_bf_raw := ~idle @@ -137,7 +136,7 @@ class el2_ifu_ifc_ctl extends Module with el2_lib with RequireAsyncReset { (fb_full_f & !(io.ifu_fb_consume2 | io.ifu_fb_consume1)) | (wfm & !io.ifc_fetch_req_bf) | idle ) & !io.exu_flush_final) | dma_iccm_stall_any_f - io.ifc_region_acc_fault_bf := ~iccm_acc_in_range_bf & iccm_acc_in_region_bf + io.ifc_region_acc_fault_bf := !iccm_acc_in_range_bf & iccm_acc_in_region_bf io.ifc_fetch_uncacheable_bf := ~io.dec_tlu_mrac_ff(Cat(io.ifc_fetch_addr_bf(30,27), 0.U)) io.ifc_fetch_req_f := RegNext(io.ifc_fetch_req_bf, init=0.U) diff --git a/target/scala-2.12/classes/META-INF/chisel-module-template.kotlin_module b/target/scala-2.12/classes/META-INF/chisel-module-template.kotlin_module deleted file mode 100644 index a49347afef10a9b5f95305e1058ba36adec7d6dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|0RRA102TlM diff --git a/target/scala-2.12/classes/ifu/EL2_IC_DATA$$anon$3.class b/target/scala-2.12/classes/ifu/EL2_IC_DATA$$anon$3.class index 06431eb1c3c296c0e8aa0a788734f8d9c079c131..f1d5a1b265687c448b72bdd4e1f53a005977e20d 100644 GIT binary patch literal 4964 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 GWB(6d3$ZW& diff --git a/target/scala-2.12/classes/ifu/el2_ifu_ifc_ctl.class b/target/scala-2.12/classes/ifu/el2_ifu_ifc_ctl.class index bb6e2092c72437db812289959633e0be8aa4e275..bdfca9d8fb291f32eeda885f6f1270ce2bf46086 100644 GIT binary patch literal 115810 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 VXyml&pb{F#=t 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 p#{$To#p4QA6$B0xUGP!v)nd7l8Xl-FF84p p#{$To#p4QA6$B10&ZYv<`7Pk$M6z74+OHR(?u>kUy^SFXl iNls?twFI+b7^h60%j?TJg+ZNR^5plt6+qDpzTE&-rXTwN delta 99 zcmZ21w^(k&3ogbflV5V#0!as6@yT}Fo>10&ZYv<`7Pk$M6z74+OHR(?u>kUy^SFXl iNls?twFI+b7^hC2%j?TJl|h|h%H;RF6+qDpzTE&<@gN8Q diff --git a/target/scala-2.12/classes/ifu/ifu_ifc$delayedInit$body.class b/target/scala-2.12/classes/ifu/ifu_ifc$delayedInit$body.class index e0a936eefedf5371ed3e1886a6d954cb6a66061d..632a3a69823cb128141798a138a05437e388bfec 100644 GIT binary patch delta 19 ZcmaFB`hazVGZW+F$u3L*KyoURHvmRY28I9t delta 19 ZcmaFB`hazVGZW*K$u3L*KyoURHvmRo28aLv