From 2e5d1560babe7c36813116350c7604c2d00c1d01 Mon Sep 17 00:00:00 2001 From: waleed-lm Date: Wed, 14 Oct 2020 14:28:01 +0500 Subject: [PATCH] I$ started --- el2_ifu_ic_mem.anno.json | 120 +- el2_ifu_ic_mem.fir | 2267 +++-------------- el2_ifu_ic_mem.v | 892 ++----- src/main/scala/ifu/el2_ifu_ic_mem.scala | 455 ++-- .../classes/ifu/EL2_IC_DATA$$anon$3.class | Bin 4700 -> 0 bytes .../scala-2.12/classes/ifu/EL2_IC_DATA.class | Bin 89207 -> 0 bytes .../classes/ifu/EL2_IC_TAG$$anon$2.class | Bin 3799 -> 0 bytes .../scala-2.12/classes/ifu/EL2_IC_TAG.class | Bin 83729 -> 0 bytes .../classes/ifu/el2_ifu_ic_mem.class | Bin 85305 -> 92679 bytes target/scala-2.12/classes/ifu/ifu_ic$.class | Bin 3868 -> 3868 bytes .../classes/ifu/ifu_ic$delayedInit$body.class | Bin 729 -> 729 bytes 11 files changed, 944 insertions(+), 2790 deletions(-) delete mode 100644 target/scala-2.12/classes/ifu/EL2_IC_DATA$$anon$3.class delete mode 100644 target/scala-2.12/classes/ifu/EL2_IC_DATA.class delete mode 100644 target/scala-2.12/classes/ifu/EL2_IC_TAG$$anon$2.class delete mode 100644 target/scala-2.12/classes/ifu/EL2_IC_TAG.class diff --git a/el2_ifu_ic_mem.anno.json b/el2_ifu_ic_mem.anno.json index 51ed856b..4feca8f8 100644 --- a/el2_ifu_ic_mem.anno.json +++ b/el2_ifu_ic_mem.anno.json @@ -1,86 +1,4 @@ [ - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_eccerr", - "sources":[ - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_hit", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_way", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_clk_override", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rw_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_tag_valid" - ] - }, - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ictag_debug_rd_data", - "sources":[ - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rw_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_way", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_clk_override", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array" - ] - }, - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_tag_perr", - "sources":[ - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_tag_valid", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_dec_tlu_core_ecc_disable", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rw_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_way", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_clk_override", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array" - ] - }, - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_hit", - "sources":[ - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_tag_valid", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rw_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_way", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_clk_override", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array" - ] - }, - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_parerr", - "sources":[ - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_hit", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_way", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_clk_override", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rw_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_wr_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_tag_valid" - ] - }, { "class":"firrtl.transforms.CombinationalPath", "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_data", @@ -96,8 +14,7 @@ "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array", "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_tag_valid" + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en" ] }, { @@ -113,8 +30,39 @@ "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array", "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en", - "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_tag_valid" + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_eccerr", + "sources":[ + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_hit", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_wr_en", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_way", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_clk_override", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rw_addr", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_wr_en", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en" + ] + }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_parerr", + "sources":[ + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_hit", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_wr_en", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_way", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_clk_override", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rw_addr", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_wr_en", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_addr", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_tag_array", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_debug_rd_en", + "~el2_ifu_ic_mem|el2_ifu_ic_mem>io_ic_rd_en" ] }, { diff --git a/el2_ifu_ic_mem.fir b/el2_ifu_ic_mem.fir index 0fd5a61b..f211d6fe 100644 --- a/el2_ifu_ic_mem.fir +++ b/el2_ifu_ic_mem.fir @@ -1,1546 +1,82 @@ ;buildInfoPackage: chisel3, version: 3.3.1, scalaVersion: 2.12.11, sbtVersion: 1.3.10 circuit el2_ifu_ic_mem : - module EL2_IC_TAG : + module el2_ifu_ic_mem : input clock : Clock - input reset : Reset - output io : {flip scan_mode : UInt<1>, flip clk_override : UInt<1>, flip dec_tlu_core_ecc_disable : UInt<1>, flip ic_rw_addr : UInt<29>, flip ic_wr_en : UInt<2>, flip ic_tag_valid : UInt<2>, flip ic_rd_en : UInt<1>, flip ic_debug_addr : UInt<10>, 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>, ictag_debug_rd_data : UInt<26>, flip ic_debug_wr_data : UInt<71>, ic_rd_hit : UInt<2>, ic_tag_perr : UInt<1>} + input reset : UInt<1> + output io : {flip scan_mode : UInt<1>, flip clk_override : UInt<1>, flip dec_tlu_core_ecc_disable : UInt<1>, flip ic_rw_addr : UInt<31>, flip ic_wr_en : UInt<2>, flip ic_rd_en : UInt<1>, 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_tag_valid : UInt<2>, flip ic_debug_wr_data : UInt<71>, flip ic_wr_data : UInt<71>[2], ic_rd_data : UInt<64>, ic_debug_rd_data : UInt<71>, ictag_debug_rd_data : UInt<26>, ic_eccerr : UInt<2>, ic_parerr : UInt<2>, ic_rd_hit : UInt<2>, ic_tag_perr : UInt<1>} - io.ictag_debug_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 104:26] - io.ic_rd_hit <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 105:16] - io.ic_tag_perr <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 106:18] - wire ic_debug_wr_way_en : UInt<2> - ic_debug_wr_way_en <= UInt<1>("h00") - wire ic_debug_rd_way_en : UInt<2> - ic_debug_rd_way_en <= UInt<1>("h00") - node _T = bits(io.ic_rw_addr, 2, 1) @[el2_ifu_ic_mem.scala 110:70] - node _T_1 = eq(_T, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 110:95] + io.ic_tag_perr <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 34:18] + io.ic_rd_hit <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 35:16] + io.ic_parerr <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 36:16] + io.ic_eccerr <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 37:16] + io.ictag_debug_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 38:26] + io.ic_debug_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 39:23] + io.ic_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 40:17] + node _T = eq(io.ic_debug_tag_array, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 42:70] + node _T_1 = and(io.ic_debug_rd_en, _T) @[el2_ifu_ic_mem.scala 42:68] node _T_2 = bits(_T_1, 0, 0) @[Bitwise.scala 72:15] node _T_3 = mux(_T_2, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node ic_tag_wren = and(io.ic_wr_en, _T_3) @[el2_ifu_ic_mem.scala 110:33] - node _T_4 = or(io.ic_rd_en, io.clk_override) @[el2_ifu_ic_mem.scala 111:55] - node _T_5 = bits(_T_4, 0, 0) @[Bitwise.scala 72:15] - node _T_6 = mux(_T_5, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_7 = or(_T_6, io.ic_wr_en) @[el2_ifu_ic_mem.scala 111:73] - node _T_8 = or(_T_7, ic_debug_wr_way_en) @[el2_ifu_ic_mem.scala 111:87] - node ic_tag_clken = or(_T_8, ic_debug_rd_way_en) @[el2_ifu_ic_mem.scala 111:108] - reg ic_rd_en_ff : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 113:28] - ic_rd_en_ff <= io.ic_rd_en @[el2_ifu_ic_mem.scala 113:28] - node _T_9 = bits(io.ic_rw_addr, 18, 0) @[el2_ifu_ic_mem.scala 114:44] - reg ic_rw_addr_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 114:30] - ic_rw_addr_ff <= _T_9 @[el2_ifu_ic_mem.scala 114:30] - node _T_10 = and(io.ic_debug_rd_en, io.ic_debug_tag_array) @[el2_ifu_ic_mem.scala 118:65] - node _T_11 = bits(_T_10, 0, 0) @[Bitwise.scala 72:15] - node _T_12 = mux(_T_11, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_13 = and(_T_12, io.ic_debug_way) @[el2_ifu_ic_mem.scala 118:90] - ic_debug_rd_way_en <= _T_13 @[el2_ifu_ic_mem.scala 118:22] - node _T_14 = and(io.ic_debug_wr_en, io.ic_debug_tag_array) @[el2_ifu_ic_mem.scala 119:65] - node _T_15 = bits(_T_14, 0, 0) @[Bitwise.scala 72:15] - node _T_16 = mux(_T_15, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_17 = and(_T_16, io.ic_debug_way) @[el2_ifu_ic_mem.scala 119:90] - ic_debug_wr_way_en <= _T_17 @[el2_ifu_ic_mem.scala 119:22] - node ic_tag_wren_q = or(ic_tag_wren, ic_debug_wr_way_en) @[el2_ifu_ic_mem.scala 121:35] - node _T_18 = mux(UInt<1>("h00"), UInt<13>("h01fff"), UInt<13>("h00")) @[Bitwise.scala 72:12] - node _T_19 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 123:89] - node _T_20 = cat(_T_18, _T_19) @[Cat.scala 29:58] - wire _T_21 : UInt<1>[18] @[el2_lib.scala 245:18] - wire _T_22 : UInt<1>[18] @[el2_lib.scala 246:18] - wire _T_23 : UInt<1>[18] @[el2_lib.scala 247:18] - wire _T_24 : UInt<1>[15] @[el2_lib.scala 248:18] - wire _T_25 : UInt<1>[15] @[el2_lib.scala 249:18] - wire _T_26 : UInt<1>[6] @[el2_lib.scala 250:18] - node _T_27 = bits(_T_20, 0, 0) @[el2_lib.scala 257:36] - _T_22[0] <= _T_27 @[el2_lib.scala 257:30] - node _T_28 = bits(_T_20, 0, 0) @[el2_lib.scala 258:36] - _T_23[0] <= _T_28 @[el2_lib.scala 258:30] - node _T_29 = bits(_T_20, 0, 0) @[el2_lib.scala 261:36] - _T_26[0] <= _T_29 @[el2_lib.scala 261:30] - node _T_30 = bits(_T_20, 1, 1) @[el2_lib.scala 256:36] - _T_21[0] <= _T_30 @[el2_lib.scala 256:30] - node _T_31 = bits(_T_20, 1, 1) @[el2_lib.scala 258:36] - _T_23[1] <= _T_31 @[el2_lib.scala 258:30] - node _T_32 = bits(_T_20, 1, 1) @[el2_lib.scala 261:36] - _T_26[1] <= _T_32 @[el2_lib.scala 261:30] - node _T_33 = bits(_T_20, 2, 2) @[el2_lib.scala 258:36] - _T_23[2] <= _T_33 @[el2_lib.scala 258:30] - node _T_34 = bits(_T_20, 2, 2) @[el2_lib.scala 261:36] - _T_26[2] <= _T_34 @[el2_lib.scala 261:30] - node _T_35 = bits(_T_20, 3, 3) @[el2_lib.scala 256:36] - _T_21[1] <= _T_35 @[el2_lib.scala 256:30] - node _T_36 = bits(_T_20, 3, 3) @[el2_lib.scala 257:36] - _T_22[1] <= _T_36 @[el2_lib.scala 257:30] - node _T_37 = bits(_T_20, 3, 3) @[el2_lib.scala 261:36] - _T_26[3] <= _T_37 @[el2_lib.scala 261:30] - node _T_38 = bits(_T_20, 4, 4) @[el2_lib.scala 257:36] - _T_22[2] <= _T_38 @[el2_lib.scala 257:30] - node _T_39 = bits(_T_20, 4, 4) @[el2_lib.scala 261:36] - _T_26[4] <= _T_39 @[el2_lib.scala 261:30] - node _T_40 = bits(_T_20, 5, 5) @[el2_lib.scala 256:36] - _T_21[2] <= _T_40 @[el2_lib.scala 256:30] - node _T_41 = bits(_T_20, 5, 5) @[el2_lib.scala 261:36] - _T_26[5] <= _T_41 @[el2_lib.scala 261:30] - node _T_42 = bits(_T_20, 6, 6) @[el2_lib.scala 256:36] - _T_21[3] <= _T_42 @[el2_lib.scala 256:30] - node _T_43 = bits(_T_20, 6, 6) @[el2_lib.scala 257:36] - _T_22[3] <= _T_43 @[el2_lib.scala 257:30] - node _T_44 = bits(_T_20, 6, 6) @[el2_lib.scala 258:36] - _T_23[3] <= _T_44 @[el2_lib.scala 258:30] - node _T_45 = bits(_T_20, 6, 6) @[el2_lib.scala 259:36] - _T_24[0] <= _T_45 @[el2_lib.scala 259:30] - node _T_46 = bits(_T_20, 6, 6) @[el2_lib.scala 260:36] - _T_25[0] <= _T_46 @[el2_lib.scala 260:30] - node _T_47 = bits(_T_20, 7, 7) @[el2_lib.scala 257:36] - _T_22[4] <= _T_47 @[el2_lib.scala 257:30] - node _T_48 = bits(_T_20, 7, 7) @[el2_lib.scala 258:36] - _T_23[4] <= _T_48 @[el2_lib.scala 258:30] - node _T_49 = bits(_T_20, 7, 7) @[el2_lib.scala 259:36] - _T_24[1] <= _T_49 @[el2_lib.scala 259:30] - node _T_50 = bits(_T_20, 7, 7) @[el2_lib.scala 260:36] - _T_25[1] <= _T_50 @[el2_lib.scala 260:30] - node _T_51 = bits(_T_20, 8, 8) @[el2_lib.scala 256:36] - _T_21[4] <= _T_51 @[el2_lib.scala 256:30] - node _T_52 = bits(_T_20, 8, 8) @[el2_lib.scala 258:36] - _T_23[5] <= _T_52 @[el2_lib.scala 258:30] - node _T_53 = bits(_T_20, 8, 8) @[el2_lib.scala 259:36] - _T_24[2] <= _T_53 @[el2_lib.scala 259:30] - node _T_54 = bits(_T_20, 8, 8) @[el2_lib.scala 260:36] - _T_25[2] <= _T_54 @[el2_lib.scala 260:30] - node _T_55 = bits(_T_20, 9, 9) @[el2_lib.scala 258:36] - _T_23[6] <= _T_55 @[el2_lib.scala 258:30] - node _T_56 = bits(_T_20, 9, 9) @[el2_lib.scala 259:36] - _T_24[3] <= _T_56 @[el2_lib.scala 259:30] - node _T_57 = bits(_T_20, 9, 9) @[el2_lib.scala 260:36] - _T_25[3] <= _T_57 @[el2_lib.scala 260:30] - node _T_58 = bits(_T_20, 10, 10) @[el2_lib.scala 256:36] - _T_21[5] <= _T_58 @[el2_lib.scala 256:30] - node _T_59 = bits(_T_20, 10, 10) @[el2_lib.scala 257:36] - _T_22[5] <= _T_59 @[el2_lib.scala 257:30] - node _T_60 = bits(_T_20, 10, 10) @[el2_lib.scala 259:36] - _T_24[4] <= _T_60 @[el2_lib.scala 259:30] - node _T_61 = bits(_T_20, 10, 10) @[el2_lib.scala 260:36] - _T_25[4] <= _T_61 @[el2_lib.scala 260:30] - node _T_62 = bits(_T_20, 11, 11) @[el2_lib.scala 257:36] - _T_22[6] <= _T_62 @[el2_lib.scala 257:30] - node _T_63 = bits(_T_20, 11, 11) @[el2_lib.scala 259:36] - _T_24[5] <= _T_63 @[el2_lib.scala 259:30] - node _T_64 = bits(_T_20, 11, 11) @[el2_lib.scala 260:36] - _T_25[5] <= _T_64 @[el2_lib.scala 260:30] - node _T_65 = bits(_T_20, 12, 12) @[el2_lib.scala 256:36] - _T_21[6] <= _T_65 @[el2_lib.scala 256:30] - node _T_66 = bits(_T_20, 12, 12) @[el2_lib.scala 259:36] - _T_24[6] <= _T_66 @[el2_lib.scala 259:30] - node _T_67 = bits(_T_20, 12, 12) @[el2_lib.scala 260:36] - _T_25[6] <= _T_67 @[el2_lib.scala 260:30] - node _T_68 = bits(_T_20, 13, 13) @[el2_lib.scala 259:36] - _T_24[7] <= _T_68 @[el2_lib.scala 259:30] - node _T_69 = bits(_T_20, 13, 13) @[el2_lib.scala 260:36] - _T_25[7] <= _T_69 @[el2_lib.scala 260:30] - node _T_70 = bits(_T_20, 14, 14) @[el2_lib.scala 256:36] - _T_21[7] <= _T_70 @[el2_lib.scala 256:30] - node _T_71 = bits(_T_20, 14, 14) @[el2_lib.scala 257:36] - _T_22[7] <= _T_71 @[el2_lib.scala 257:30] - node _T_72 = bits(_T_20, 14, 14) @[el2_lib.scala 258:36] - _T_23[7] <= _T_72 @[el2_lib.scala 258:30] - node _T_73 = bits(_T_20, 14, 14) @[el2_lib.scala 260:36] - _T_25[8] <= _T_73 @[el2_lib.scala 260:30] - node _T_74 = bits(_T_20, 15, 15) @[el2_lib.scala 257:36] - _T_22[8] <= _T_74 @[el2_lib.scala 257:30] - node _T_75 = bits(_T_20, 15, 15) @[el2_lib.scala 258:36] - _T_23[8] <= _T_75 @[el2_lib.scala 258:30] - node _T_76 = bits(_T_20, 15, 15) @[el2_lib.scala 260:36] - _T_25[9] <= _T_76 @[el2_lib.scala 260:30] - node _T_77 = bits(_T_20, 16, 16) @[el2_lib.scala 256:36] - _T_21[8] <= _T_77 @[el2_lib.scala 256:30] - node _T_78 = bits(_T_20, 16, 16) @[el2_lib.scala 258:36] - _T_23[9] <= _T_78 @[el2_lib.scala 258:30] - node _T_79 = bits(_T_20, 16, 16) @[el2_lib.scala 260:36] - _T_25[10] <= _T_79 @[el2_lib.scala 260:30] - node _T_80 = bits(_T_20, 17, 17) @[el2_lib.scala 258:36] - _T_23[10] <= _T_80 @[el2_lib.scala 258:30] - node _T_81 = bits(_T_20, 17, 17) @[el2_lib.scala 260:36] - _T_25[11] <= _T_81 @[el2_lib.scala 260:30] - node _T_82 = bits(_T_20, 18, 18) @[el2_lib.scala 256:36] - _T_21[9] <= _T_82 @[el2_lib.scala 256:30] - node _T_83 = bits(_T_20, 18, 18) @[el2_lib.scala 257:36] - _T_22[9] <= _T_83 @[el2_lib.scala 257:30] - node _T_84 = bits(_T_20, 18, 18) @[el2_lib.scala 260:36] - _T_25[12] <= _T_84 @[el2_lib.scala 260:30] - node _T_85 = bits(_T_20, 19, 19) @[el2_lib.scala 257:36] - _T_22[10] <= _T_85 @[el2_lib.scala 257:30] - node _T_86 = bits(_T_20, 19, 19) @[el2_lib.scala 260:36] - _T_25[13] <= _T_86 @[el2_lib.scala 260:30] - node _T_87 = bits(_T_20, 20, 20) @[el2_lib.scala 256:36] - _T_21[10] <= _T_87 @[el2_lib.scala 256:30] - node _T_88 = bits(_T_20, 20, 20) @[el2_lib.scala 260:36] - _T_25[14] <= _T_88 @[el2_lib.scala 260:30] - node _T_89 = bits(_T_20, 21, 21) @[el2_lib.scala 256:36] - _T_21[11] <= _T_89 @[el2_lib.scala 256:30] - node _T_90 = bits(_T_20, 21, 21) @[el2_lib.scala 257:36] - _T_22[11] <= _T_90 @[el2_lib.scala 257:30] - node _T_91 = bits(_T_20, 21, 21) @[el2_lib.scala 258:36] - _T_23[11] <= _T_91 @[el2_lib.scala 258:30] - node _T_92 = bits(_T_20, 21, 21) @[el2_lib.scala 259:36] - _T_24[8] <= _T_92 @[el2_lib.scala 259:30] - node _T_93 = bits(_T_20, 22, 22) @[el2_lib.scala 257:36] - _T_22[12] <= _T_93 @[el2_lib.scala 257:30] - node _T_94 = bits(_T_20, 22, 22) @[el2_lib.scala 258:36] - _T_23[12] <= _T_94 @[el2_lib.scala 258:30] - node _T_95 = bits(_T_20, 22, 22) @[el2_lib.scala 259:36] - _T_24[9] <= _T_95 @[el2_lib.scala 259:30] - node _T_96 = bits(_T_20, 23, 23) @[el2_lib.scala 256:36] - _T_21[12] <= _T_96 @[el2_lib.scala 256:30] - node _T_97 = bits(_T_20, 23, 23) @[el2_lib.scala 258:36] - _T_23[13] <= _T_97 @[el2_lib.scala 258:30] - node _T_98 = bits(_T_20, 23, 23) @[el2_lib.scala 259:36] - _T_24[10] <= _T_98 @[el2_lib.scala 259:30] - node _T_99 = bits(_T_20, 24, 24) @[el2_lib.scala 258:36] - _T_23[14] <= _T_99 @[el2_lib.scala 258:30] - node _T_100 = bits(_T_20, 24, 24) @[el2_lib.scala 259:36] - _T_24[11] <= _T_100 @[el2_lib.scala 259:30] - node _T_101 = bits(_T_20, 25, 25) @[el2_lib.scala 256:36] - _T_21[13] <= _T_101 @[el2_lib.scala 256:30] - node _T_102 = bits(_T_20, 25, 25) @[el2_lib.scala 257:36] - _T_22[13] <= _T_102 @[el2_lib.scala 257:30] - node _T_103 = bits(_T_20, 25, 25) @[el2_lib.scala 259:36] - _T_24[12] <= _T_103 @[el2_lib.scala 259:30] - node _T_104 = bits(_T_20, 26, 26) @[el2_lib.scala 257:36] - _T_22[14] <= _T_104 @[el2_lib.scala 257:30] - node _T_105 = bits(_T_20, 26, 26) @[el2_lib.scala 259:36] - _T_24[13] <= _T_105 @[el2_lib.scala 259:30] - node _T_106 = bits(_T_20, 27, 27) @[el2_lib.scala 256:36] - _T_21[14] <= _T_106 @[el2_lib.scala 256:30] - node _T_107 = bits(_T_20, 27, 27) @[el2_lib.scala 259:36] - _T_24[14] <= _T_107 @[el2_lib.scala 259:30] - node _T_108 = bits(_T_20, 28, 28) @[el2_lib.scala 256:36] - _T_21[15] <= _T_108 @[el2_lib.scala 256:30] - node _T_109 = bits(_T_20, 28, 28) @[el2_lib.scala 257:36] - _T_22[15] <= _T_109 @[el2_lib.scala 257:30] - node _T_110 = bits(_T_20, 28, 28) @[el2_lib.scala 258:36] - _T_23[15] <= _T_110 @[el2_lib.scala 258:30] - node _T_111 = bits(_T_20, 29, 29) @[el2_lib.scala 257:36] - _T_22[16] <= _T_111 @[el2_lib.scala 257:30] - node _T_112 = bits(_T_20, 29, 29) @[el2_lib.scala 258:36] - _T_23[16] <= _T_112 @[el2_lib.scala 258:30] - node _T_113 = bits(_T_20, 30, 30) @[el2_lib.scala 256:36] - _T_21[16] <= _T_113 @[el2_lib.scala 256:30] - node _T_114 = bits(_T_20, 30, 30) @[el2_lib.scala 258:36] - _T_23[17] <= _T_114 @[el2_lib.scala 258:30] - node _T_115 = bits(_T_20, 31, 31) @[el2_lib.scala 256:36] - _T_21[17] <= _T_115 @[el2_lib.scala 256:30] - node _T_116 = bits(_T_20, 31, 31) @[el2_lib.scala 257:36] - _T_22[17] <= _T_116 @[el2_lib.scala 257:30] - node _T_117 = cat(_T_21[1], _T_21[0]) @[el2_lib.scala 263:22] - node _T_118 = cat(_T_21[3], _T_21[2]) @[el2_lib.scala 263:22] - node _T_119 = cat(_T_118, _T_117) @[el2_lib.scala 263:22] - node _T_120 = cat(_T_21[5], _T_21[4]) @[el2_lib.scala 263:22] - node _T_121 = cat(_T_21[8], _T_21[7]) @[el2_lib.scala 263:22] - node _T_122 = cat(_T_121, _T_21[6]) @[el2_lib.scala 263:22] - node _T_123 = cat(_T_122, _T_120) @[el2_lib.scala 263:22] - node _T_124 = cat(_T_123, _T_119) @[el2_lib.scala 263:22] - node _T_125 = cat(_T_21[10], _T_21[9]) @[el2_lib.scala 263:22] - node _T_126 = cat(_T_21[12], _T_21[11]) @[el2_lib.scala 263:22] - node _T_127 = cat(_T_126, _T_125) @[el2_lib.scala 263:22] - node _T_128 = cat(_T_21[14], _T_21[13]) @[el2_lib.scala 263:22] - node _T_129 = cat(_T_21[17], _T_21[16]) @[el2_lib.scala 263:22] - node _T_130 = cat(_T_129, _T_21[15]) @[el2_lib.scala 263:22] - node _T_131 = cat(_T_130, _T_128) @[el2_lib.scala 263:22] - node _T_132 = cat(_T_131, _T_127) @[el2_lib.scala 263:22] - node _T_133 = cat(_T_132, _T_124) @[el2_lib.scala 263:22] - node _T_134 = xorr(_T_133) @[el2_lib.scala 263:29] - node _T_135 = cat(_T_22[1], _T_22[0]) @[el2_lib.scala 263:39] - node _T_136 = cat(_T_22[3], _T_22[2]) @[el2_lib.scala 263:39] - node _T_137 = cat(_T_136, _T_135) @[el2_lib.scala 263:39] - node _T_138 = cat(_T_22[5], _T_22[4]) @[el2_lib.scala 263:39] - node _T_139 = cat(_T_22[8], _T_22[7]) @[el2_lib.scala 263:39] - node _T_140 = cat(_T_139, _T_22[6]) @[el2_lib.scala 263:39] - node _T_141 = cat(_T_140, _T_138) @[el2_lib.scala 263:39] - node _T_142 = cat(_T_141, _T_137) @[el2_lib.scala 263:39] - node _T_143 = cat(_T_22[10], _T_22[9]) @[el2_lib.scala 263:39] - node _T_144 = cat(_T_22[12], _T_22[11]) @[el2_lib.scala 263:39] - node _T_145 = cat(_T_144, _T_143) @[el2_lib.scala 263:39] - node _T_146 = cat(_T_22[14], _T_22[13]) @[el2_lib.scala 263:39] - node _T_147 = cat(_T_22[17], _T_22[16]) @[el2_lib.scala 263:39] - node _T_148 = cat(_T_147, _T_22[15]) @[el2_lib.scala 263:39] - node _T_149 = cat(_T_148, _T_146) @[el2_lib.scala 263:39] - node _T_150 = cat(_T_149, _T_145) @[el2_lib.scala 263:39] - node _T_151 = cat(_T_150, _T_142) @[el2_lib.scala 263:39] - node _T_152 = xorr(_T_151) @[el2_lib.scala 263:46] - node _T_153 = cat(_T_23[1], _T_23[0]) @[el2_lib.scala 263:56] - node _T_154 = cat(_T_23[3], _T_23[2]) @[el2_lib.scala 263:56] - node _T_155 = cat(_T_154, _T_153) @[el2_lib.scala 263:56] - node _T_156 = cat(_T_23[5], _T_23[4]) @[el2_lib.scala 263:56] - node _T_157 = cat(_T_23[8], _T_23[7]) @[el2_lib.scala 263:56] - node _T_158 = cat(_T_157, _T_23[6]) @[el2_lib.scala 263:56] - node _T_159 = cat(_T_158, _T_156) @[el2_lib.scala 263:56] - node _T_160 = cat(_T_159, _T_155) @[el2_lib.scala 263:56] - node _T_161 = cat(_T_23[10], _T_23[9]) @[el2_lib.scala 263:56] - node _T_162 = cat(_T_23[12], _T_23[11]) @[el2_lib.scala 263:56] - node _T_163 = cat(_T_162, _T_161) @[el2_lib.scala 263:56] - node _T_164 = cat(_T_23[14], _T_23[13]) @[el2_lib.scala 263:56] - node _T_165 = cat(_T_23[17], _T_23[16]) @[el2_lib.scala 263:56] - node _T_166 = cat(_T_165, _T_23[15]) @[el2_lib.scala 263:56] - node _T_167 = cat(_T_166, _T_164) @[el2_lib.scala 263:56] - node _T_168 = cat(_T_167, _T_163) @[el2_lib.scala 263:56] - node _T_169 = cat(_T_168, _T_160) @[el2_lib.scala 263:56] - node _T_170 = xorr(_T_169) @[el2_lib.scala 263:63] - node _T_171 = cat(_T_24[2], _T_24[1]) @[el2_lib.scala 263:73] - node _T_172 = cat(_T_171, _T_24[0]) @[el2_lib.scala 263:73] - node _T_173 = cat(_T_24[4], _T_24[3]) @[el2_lib.scala 263:73] - node _T_174 = cat(_T_24[6], _T_24[5]) @[el2_lib.scala 263:73] - node _T_175 = cat(_T_174, _T_173) @[el2_lib.scala 263:73] - node _T_176 = cat(_T_175, _T_172) @[el2_lib.scala 263:73] - node _T_177 = cat(_T_24[8], _T_24[7]) @[el2_lib.scala 263:73] - node _T_178 = cat(_T_24[10], _T_24[9]) @[el2_lib.scala 263:73] - node _T_179 = cat(_T_178, _T_177) @[el2_lib.scala 263:73] - node _T_180 = cat(_T_24[12], _T_24[11]) @[el2_lib.scala 263:73] - node _T_181 = cat(_T_24[14], _T_24[13]) @[el2_lib.scala 263:73] - node _T_182 = cat(_T_181, _T_180) @[el2_lib.scala 263:73] - node _T_183 = cat(_T_182, _T_179) @[el2_lib.scala 263:73] - node _T_184 = cat(_T_183, _T_176) @[el2_lib.scala 263:73] - node _T_185 = xorr(_T_184) @[el2_lib.scala 263:80] - node _T_186 = cat(_T_25[2], _T_25[1]) @[el2_lib.scala 263:90] - node _T_187 = cat(_T_186, _T_25[0]) @[el2_lib.scala 263:90] - node _T_188 = cat(_T_25[4], _T_25[3]) @[el2_lib.scala 263:90] - node _T_189 = cat(_T_25[6], _T_25[5]) @[el2_lib.scala 263:90] - node _T_190 = cat(_T_189, _T_188) @[el2_lib.scala 263:90] - node _T_191 = cat(_T_190, _T_187) @[el2_lib.scala 263:90] - node _T_192 = cat(_T_25[8], _T_25[7]) @[el2_lib.scala 263:90] - node _T_193 = cat(_T_25[10], _T_25[9]) @[el2_lib.scala 263:90] - node _T_194 = cat(_T_193, _T_192) @[el2_lib.scala 263:90] - node _T_195 = cat(_T_25[12], _T_25[11]) @[el2_lib.scala 263:90] - node _T_196 = cat(_T_25[14], _T_25[13]) @[el2_lib.scala 263:90] - node _T_197 = cat(_T_196, _T_195) @[el2_lib.scala 263:90] - node _T_198 = cat(_T_197, _T_194) @[el2_lib.scala 263:90] - node _T_199 = cat(_T_198, _T_191) @[el2_lib.scala 263:90] - node _T_200 = xorr(_T_199) @[el2_lib.scala 263:97] - node _T_201 = cat(_T_26[2], _T_26[1]) @[el2_lib.scala 263:107] - node _T_202 = cat(_T_201, _T_26[0]) @[el2_lib.scala 263:107] - node _T_203 = cat(_T_26[5], _T_26[4]) @[el2_lib.scala 263:107] - node _T_204 = cat(_T_203, _T_26[3]) @[el2_lib.scala 263:107] - node _T_205 = cat(_T_204, _T_202) @[el2_lib.scala 263:107] - node _T_206 = xorr(_T_205) @[el2_lib.scala 263:114] - node _T_207 = cat(_T_185, _T_200) @[Cat.scala 29:58] - node _T_208 = cat(_T_207, _T_206) @[Cat.scala 29:58] - node _T_209 = cat(_T_134, _T_152) @[Cat.scala 29:58] - node _T_210 = cat(_T_209, _T_170) @[Cat.scala 29:58] - node _T_211 = cat(_T_210, _T_208) @[Cat.scala 29:58] - node _T_212 = xorr(_T_20) @[el2_lib.scala 264:13] - node _T_213 = xorr(_T_211) @[el2_lib.scala 264:23] - node _T_214 = xor(_T_212, _T_213) @[el2_lib.scala 264:18] - node ic_tag_ecc = cat(_T_214, _T_211) @[Cat.scala 29:58] - node _T_215 = mux(UInt<1>("h00"), UInt<13>("h01fff"), UInt<13>("h00")) @[Bitwise.scala 72:12] - node _T_216 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 125:96] - node _T_217 = cat(_T_215, _T_216) @[Cat.scala 29:58] - node ic_tag_parity = xorr(_T_217) @[el2_lib.scala 203:13] - node _T_218 = and(io.ic_debug_wr_en, io.ic_debug_tag_array) @[el2_ifu_ic_mem.scala 129:30] - node _T_219 = bits(io.ic_debug_wr_data, 68, 64) @[el2_ifu_ic_mem.scala 129:93] - node _T_220 = bits(io.ic_debug_wr_data, 31, 11) @[el2_ifu_ic_mem.scala 129:150] - node _T_221 = cat(_T_219, _T_220) @[Cat.scala 29:58] - node _T_222 = bits(ic_tag_ecc, 4, 0) @[el2_ifu_ic_mem.scala 130:38] - node _T_223 = mux(UInt<1>("h00"), UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_224 = cat(_T_222, _T_223) @[Cat.scala 29:58] - node _T_225 = bits(io.ic_rw_addr, 28, 10) @[el2_ifu_ic_mem.scala 130:121] - node _T_226 = cat(_T_224, _T_225) @[Cat.scala 29:58] - node ic_tag_wr_data = mux(_T_218, _T_221, _T_226) @[el2_ifu_ic_mem.scala 129:11] - node _T_227 = or(io.ic_debug_rd_en, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 132:45] - node _T_228 = bits(_T_227, 0, 0) @[el2_ifu_ic_mem.scala 132:66] - node _T_229 = bits(io.ic_debug_addr, 9, 3) @[el2_ifu_ic_mem.scala 132:89] - node ic_rw_addr_q = mux(_T_228, _T_229, io.ic_rw_addr) @[el2_ifu_ic_mem.scala 132:25] - reg ic_debug_rd_way_en_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 134:38] - ic_debug_rd_way_en_ff <= ic_debug_rd_way_en @[el2_ifu_ic_mem.scala 134:38] - cmem tag_mem : UInt<26>[2][128] @[el2_ifu_ic_mem.scala 136:20] - node _T_230 = bits(ic_tag_wren_q, 0, 0) @[el2_ifu_ic_mem.scala 138:69] - node _T_231 = bits(ic_tag_clken, 0, 0) @[el2_ifu_ic_mem.scala 138:85] - node _T_232 = and(_T_230, _T_231) @[el2_ifu_ic_mem.scala 138:72] - node _T_233 = bits(ic_tag_wren_q, 1, 1) @[el2_ifu_ic_mem.scala 138:69] - node _T_234 = bits(ic_tag_clken, 1, 1) @[el2_ifu_ic_mem.scala 138:85] - node _T_235 = and(_T_233, _T_234) @[el2_ifu_ic_mem.scala 138:72] - wire write_vec : UInt<1>[2] @[el2_ifu_ic_mem.scala 138:52] - write_vec[0] <= _T_232 @[el2_ifu_ic_mem.scala 138:52] - write_vec[1] <= _T_235 @[el2_ifu_ic_mem.scala 138:52] - wire _T_236 : UInt<26>[2] @[el2_ifu_ic_mem.scala 139:64] - _T_236[0] <= ic_tag_wr_data @[el2_ifu_ic_mem.scala 139:64] - _T_236[1] <= ic_tag_wr_data @[el2_ifu_ic_mem.scala 139:64] - node _T_237 = bits(ic_rw_addr_q, 6, 0) - write mport _T_238 = tag_mem[_T_237], clock - when write_vec[0] : - _T_238[0] <= _T_236[0] - skip - when write_vec[1] : - _T_238[1] <= _T_236[1] - skip - node _T_239 = bits(ic_tag_wren_q, 0, 0) @[el2_ifu_ic_mem.scala 141:73] - node _T_240 = eq(_T_239, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 141:59] - node _T_241 = bits(ic_tag_clken, 0, 0) @[el2_ifu_ic_mem.scala 141:90] - node _T_242 = and(_T_240, _T_241) @[el2_ifu_ic_mem.scala 141:77] - node _T_243 = bits(ic_tag_wren_q, 1, 1) @[el2_ifu_ic_mem.scala 141:73] - node _T_244 = eq(_T_243, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 141:59] - node _T_245 = bits(ic_tag_clken, 1, 1) @[el2_ifu_ic_mem.scala 141:90] - node _T_246 = and(_T_244, _T_245) @[el2_ifu_ic_mem.scala 141:77] - wire read_enable : UInt<1>[2] @[el2_ifu_ic_mem.scala 141:54] - read_enable[0] <= _T_242 @[el2_ifu_ic_mem.scala 141:54] - read_enable[1] <= _T_246 @[el2_ifu_ic_mem.scala 141:54] - node _T_247 = bits(read_enable[0], 0, 0) @[Bitwise.scala 72:15] - node _T_248 = mux(_T_247, UInt<26>("h03ffffff"), UInt<26>("h00")) @[Bitwise.scala 72:12] - node _T_249 = bits(ic_rw_addr_q, 6, 0) @[el2_ifu_ic_mem.scala 143:100] - read mport _T_250 = tag_mem[_T_249], clock @[el2_ifu_ic_mem.scala 143:100] - node ic_tag_data_raw_0 = and(_T_248, _T_250[0]) @[el2_ifu_ic_mem.scala 143:87] - node _T_251 = bits(read_enable[1], 0, 0) @[Bitwise.scala 72:15] - node _T_252 = mux(_T_251, UInt<26>("h03ffffff"), UInt<26>("h00")) @[Bitwise.scala 72:12] - node _T_253 = bits(ic_rw_addr_q, 6, 0) @[el2_ifu_ic_mem.scala 143:100] - read mport _T_254 = tag_mem[_T_253], clock @[el2_ifu_ic_mem.scala 143:100] - node ic_tag_data_raw_1 = and(_T_252, _T_254[1]) @[el2_ifu_ic_mem.scala 143:87] - node _T_255 = bits(ic_tag_data_raw_0, 25, 21) @[el2_ifu_ic_mem.scala 145:90] - node _T_256 = bits(ic_tag_data_raw_0, 18, 0) @[el2_ifu_ic_mem.scala 145:117] - node _T_257 = cat(_T_255, _T_256) @[Cat.scala 29:58] - node _T_258 = bits(ic_tag_data_raw_1, 25, 21) @[el2_ifu_ic_mem.scala 145:90] - node _T_259 = bits(ic_tag_data_raw_1, 18, 0) @[el2_ifu_ic_mem.scala 145:117] - node _T_260 = cat(_T_258, _T_259) @[Cat.scala 29:58] - wire w_tout : UInt<24>[2] @[el2_ifu_ic_mem.scala 145:64] - w_tout[0] <= _T_257 @[el2_ifu_ic_mem.scala 145:64] - w_tout[1] <= _T_260 @[el2_ifu_ic_mem.scala 145:64] - wire ic_tag_corrected_ecc_unc : UInt<7>[2] @[el2_ifu_ic_mem.scala 148:38] - wire ic_tag_corrected_data_unc : UInt<32>[2] @[el2_ifu_ic_mem.scala 149:39] - wire ic_tag_single_ecc_error : UInt<1>[2] @[el2_ifu_ic_mem.scala 150:37] - wire ic_tag_double_ecc_error : UInt<1>[2] @[el2_ifu_ic_mem.scala 151:37] - node _T_261 = not(io.dec_tlu_core_ecc_disable) @[el2_ifu_ic_mem.scala 153:51] - node _T_262 = and(_T_261, ic_rd_en_ff) @[el2_ifu_ic_mem.scala 153:80] - node _T_263 = bits(ic_tag_data_raw_0, 20, 0) @[el2_ifu_ic_mem.scala 153:127] - node _T_264 = cat(UInt<11>("h00"), _T_263) @[Cat.scala 29:58] - node _T_265 = bits(ic_tag_data_raw_0, 25, 21) @[el2_ifu_ic_mem.scala 153:167] - node _T_266 = cat(UInt<2>("h00"), _T_265) @[Cat.scala 29:58] - wire _T_267 : UInt<1>[18] @[el2_lib.scala 276:18] - wire _T_268 : UInt<1>[18] @[el2_lib.scala 277:18] - wire _T_269 : UInt<1>[18] @[el2_lib.scala 278:18] - wire _T_270 : UInt<1>[15] @[el2_lib.scala 279:18] - wire _T_271 : UInt<1>[15] @[el2_lib.scala 280:18] - wire _T_272 : UInt<1>[6] @[el2_lib.scala 281:18] - node _T_273 = bits(_T_264, 0, 0) @[el2_lib.scala 288:36] - _T_267[0] <= _T_273 @[el2_lib.scala 288:30] - node _T_274 = bits(_T_264, 0, 0) @[el2_lib.scala 289:36] - _T_268[0] <= _T_274 @[el2_lib.scala 289:30] - node _T_275 = bits(_T_264, 1, 1) @[el2_lib.scala 288:36] - _T_267[1] <= _T_275 @[el2_lib.scala 288:30] - node _T_276 = bits(_T_264, 1, 1) @[el2_lib.scala 290:36] - _T_269[0] <= _T_276 @[el2_lib.scala 290:30] - node _T_277 = bits(_T_264, 2, 2) @[el2_lib.scala 289:36] - _T_268[1] <= _T_277 @[el2_lib.scala 289:30] - node _T_278 = bits(_T_264, 2, 2) @[el2_lib.scala 290:36] - _T_269[1] <= _T_278 @[el2_lib.scala 290:30] - node _T_279 = bits(_T_264, 3, 3) @[el2_lib.scala 288:36] - _T_267[2] <= _T_279 @[el2_lib.scala 288:30] - node _T_280 = bits(_T_264, 3, 3) @[el2_lib.scala 289:36] - _T_268[2] <= _T_280 @[el2_lib.scala 289:30] - node _T_281 = bits(_T_264, 3, 3) @[el2_lib.scala 290:36] - _T_269[2] <= _T_281 @[el2_lib.scala 290:30] - node _T_282 = bits(_T_264, 4, 4) @[el2_lib.scala 288:36] - _T_267[3] <= _T_282 @[el2_lib.scala 288:30] - node _T_283 = bits(_T_264, 4, 4) @[el2_lib.scala 291:36] - _T_270[0] <= _T_283 @[el2_lib.scala 291:30] - node _T_284 = bits(_T_264, 5, 5) @[el2_lib.scala 289:36] - _T_268[3] <= _T_284 @[el2_lib.scala 289:30] - node _T_285 = bits(_T_264, 5, 5) @[el2_lib.scala 291:36] - _T_270[1] <= _T_285 @[el2_lib.scala 291:30] - node _T_286 = bits(_T_264, 6, 6) @[el2_lib.scala 288:36] - _T_267[4] <= _T_286 @[el2_lib.scala 288:30] - node _T_287 = bits(_T_264, 6, 6) @[el2_lib.scala 289:36] - _T_268[4] <= _T_287 @[el2_lib.scala 289:30] - node _T_288 = bits(_T_264, 6, 6) @[el2_lib.scala 291:36] - _T_270[2] <= _T_288 @[el2_lib.scala 291:30] - node _T_289 = bits(_T_264, 7, 7) @[el2_lib.scala 290:36] - _T_269[3] <= _T_289 @[el2_lib.scala 290:30] - node _T_290 = bits(_T_264, 7, 7) @[el2_lib.scala 291:36] - _T_270[3] <= _T_290 @[el2_lib.scala 291:30] - node _T_291 = bits(_T_264, 8, 8) @[el2_lib.scala 288:36] - _T_267[5] <= _T_291 @[el2_lib.scala 288:30] - node _T_292 = bits(_T_264, 8, 8) @[el2_lib.scala 290:36] - _T_269[4] <= _T_292 @[el2_lib.scala 290:30] - node _T_293 = bits(_T_264, 8, 8) @[el2_lib.scala 291:36] - _T_270[4] <= _T_293 @[el2_lib.scala 291:30] - node _T_294 = bits(_T_264, 9, 9) @[el2_lib.scala 289:36] - _T_268[5] <= _T_294 @[el2_lib.scala 289:30] - node _T_295 = bits(_T_264, 9, 9) @[el2_lib.scala 290:36] - _T_269[5] <= _T_295 @[el2_lib.scala 290:30] - node _T_296 = bits(_T_264, 9, 9) @[el2_lib.scala 291:36] - _T_270[5] <= _T_296 @[el2_lib.scala 291:30] - node _T_297 = bits(_T_264, 10, 10) @[el2_lib.scala 288:36] - _T_267[6] <= _T_297 @[el2_lib.scala 288:30] - node _T_298 = bits(_T_264, 10, 10) @[el2_lib.scala 289:36] - _T_268[6] <= _T_298 @[el2_lib.scala 289:30] - node _T_299 = bits(_T_264, 10, 10) @[el2_lib.scala 290:36] - _T_269[6] <= _T_299 @[el2_lib.scala 290:30] - node _T_300 = bits(_T_264, 10, 10) @[el2_lib.scala 291:36] - _T_270[6] <= _T_300 @[el2_lib.scala 291:30] - node _T_301 = bits(_T_264, 11, 11) @[el2_lib.scala 288:36] - _T_267[7] <= _T_301 @[el2_lib.scala 288:30] - node _T_302 = bits(_T_264, 11, 11) @[el2_lib.scala 292:36] - _T_271[0] <= _T_302 @[el2_lib.scala 292:30] - node _T_303 = bits(_T_264, 12, 12) @[el2_lib.scala 289:36] - _T_268[7] <= _T_303 @[el2_lib.scala 289:30] - node _T_304 = bits(_T_264, 12, 12) @[el2_lib.scala 292:36] - _T_271[1] <= _T_304 @[el2_lib.scala 292:30] - node _T_305 = bits(_T_264, 13, 13) @[el2_lib.scala 288:36] - _T_267[8] <= _T_305 @[el2_lib.scala 288:30] - node _T_306 = bits(_T_264, 13, 13) @[el2_lib.scala 289:36] - _T_268[8] <= _T_306 @[el2_lib.scala 289:30] - node _T_307 = bits(_T_264, 13, 13) @[el2_lib.scala 292:36] - _T_271[2] <= _T_307 @[el2_lib.scala 292:30] - node _T_308 = bits(_T_264, 14, 14) @[el2_lib.scala 290:36] - _T_269[7] <= _T_308 @[el2_lib.scala 290:30] - node _T_309 = bits(_T_264, 14, 14) @[el2_lib.scala 292:36] - _T_271[3] <= _T_309 @[el2_lib.scala 292:30] - node _T_310 = bits(_T_264, 15, 15) @[el2_lib.scala 288:36] - _T_267[9] <= _T_310 @[el2_lib.scala 288:30] - node _T_311 = bits(_T_264, 15, 15) @[el2_lib.scala 290:36] - _T_269[8] <= _T_311 @[el2_lib.scala 290:30] - node _T_312 = bits(_T_264, 15, 15) @[el2_lib.scala 292:36] - _T_271[4] <= _T_312 @[el2_lib.scala 292:30] - node _T_313 = bits(_T_264, 16, 16) @[el2_lib.scala 289:36] - _T_268[9] <= _T_313 @[el2_lib.scala 289:30] - node _T_314 = bits(_T_264, 16, 16) @[el2_lib.scala 290:36] - _T_269[9] <= _T_314 @[el2_lib.scala 290:30] - node _T_315 = bits(_T_264, 16, 16) @[el2_lib.scala 292:36] - _T_271[5] <= _T_315 @[el2_lib.scala 292:30] - node _T_316 = bits(_T_264, 17, 17) @[el2_lib.scala 288:36] - _T_267[10] <= _T_316 @[el2_lib.scala 288:30] - node _T_317 = bits(_T_264, 17, 17) @[el2_lib.scala 289:36] - _T_268[10] <= _T_317 @[el2_lib.scala 289:30] - node _T_318 = bits(_T_264, 17, 17) @[el2_lib.scala 290:36] - _T_269[10] <= _T_318 @[el2_lib.scala 290:30] - node _T_319 = bits(_T_264, 17, 17) @[el2_lib.scala 292:36] - _T_271[6] <= _T_319 @[el2_lib.scala 292:30] - node _T_320 = bits(_T_264, 18, 18) @[el2_lib.scala 291:36] - _T_270[7] <= _T_320 @[el2_lib.scala 291:30] - node _T_321 = bits(_T_264, 18, 18) @[el2_lib.scala 292:36] - _T_271[7] <= _T_321 @[el2_lib.scala 292:30] - node _T_322 = bits(_T_264, 19, 19) @[el2_lib.scala 288:36] - _T_267[11] <= _T_322 @[el2_lib.scala 288:30] - node _T_323 = bits(_T_264, 19, 19) @[el2_lib.scala 291:36] - _T_270[8] <= _T_323 @[el2_lib.scala 291:30] - node _T_324 = bits(_T_264, 19, 19) @[el2_lib.scala 292:36] - _T_271[8] <= _T_324 @[el2_lib.scala 292:30] - node _T_325 = bits(_T_264, 20, 20) @[el2_lib.scala 289:36] - _T_268[11] <= _T_325 @[el2_lib.scala 289:30] - node _T_326 = bits(_T_264, 20, 20) @[el2_lib.scala 291:36] - _T_270[9] <= _T_326 @[el2_lib.scala 291:30] - node _T_327 = bits(_T_264, 20, 20) @[el2_lib.scala 292:36] - _T_271[9] <= _T_327 @[el2_lib.scala 292:30] - node _T_328 = bits(_T_264, 21, 21) @[el2_lib.scala 288:36] - _T_267[12] <= _T_328 @[el2_lib.scala 288:30] - node _T_329 = bits(_T_264, 21, 21) @[el2_lib.scala 289:36] - _T_268[12] <= _T_329 @[el2_lib.scala 289:30] - node _T_330 = bits(_T_264, 21, 21) @[el2_lib.scala 291:36] - _T_270[10] <= _T_330 @[el2_lib.scala 291:30] - node _T_331 = bits(_T_264, 21, 21) @[el2_lib.scala 292:36] - _T_271[10] <= _T_331 @[el2_lib.scala 292:30] - node _T_332 = bits(_T_264, 22, 22) @[el2_lib.scala 290:36] - _T_269[11] <= _T_332 @[el2_lib.scala 290:30] - node _T_333 = bits(_T_264, 22, 22) @[el2_lib.scala 291:36] - _T_270[11] <= _T_333 @[el2_lib.scala 291:30] - node _T_334 = bits(_T_264, 22, 22) @[el2_lib.scala 292:36] - _T_271[11] <= _T_334 @[el2_lib.scala 292:30] - node _T_335 = bits(_T_264, 23, 23) @[el2_lib.scala 288:36] - _T_267[13] <= _T_335 @[el2_lib.scala 288:30] - node _T_336 = bits(_T_264, 23, 23) @[el2_lib.scala 290:36] - _T_269[12] <= _T_336 @[el2_lib.scala 290:30] - node _T_337 = bits(_T_264, 23, 23) @[el2_lib.scala 291:36] - _T_270[12] <= _T_337 @[el2_lib.scala 291:30] - node _T_338 = bits(_T_264, 23, 23) @[el2_lib.scala 292:36] - _T_271[12] <= _T_338 @[el2_lib.scala 292:30] - node _T_339 = bits(_T_264, 24, 24) @[el2_lib.scala 289:36] - _T_268[13] <= _T_339 @[el2_lib.scala 289:30] - node _T_340 = bits(_T_264, 24, 24) @[el2_lib.scala 290:36] - _T_269[13] <= _T_340 @[el2_lib.scala 290:30] - node _T_341 = bits(_T_264, 24, 24) @[el2_lib.scala 291:36] - _T_270[13] <= _T_341 @[el2_lib.scala 291:30] - node _T_342 = bits(_T_264, 24, 24) @[el2_lib.scala 292:36] - _T_271[13] <= _T_342 @[el2_lib.scala 292:30] - node _T_343 = bits(_T_264, 25, 25) @[el2_lib.scala 288:36] - _T_267[14] <= _T_343 @[el2_lib.scala 288:30] - node _T_344 = bits(_T_264, 25, 25) @[el2_lib.scala 289:36] - _T_268[14] <= _T_344 @[el2_lib.scala 289:30] - node _T_345 = bits(_T_264, 25, 25) @[el2_lib.scala 290:36] - _T_269[14] <= _T_345 @[el2_lib.scala 290:30] - node _T_346 = bits(_T_264, 25, 25) @[el2_lib.scala 291:36] - _T_270[14] <= _T_346 @[el2_lib.scala 291:30] - node _T_347 = bits(_T_264, 25, 25) @[el2_lib.scala 292:36] - _T_271[14] <= _T_347 @[el2_lib.scala 292:30] - node _T_348 = bits(_T_264, 26, 26) @[el2_lib.scala 288:36] - _T_267[15] <= _T_348 @[el2_lib.scala 288:30] - node _T_349 = bits(_T_264, 26, 26) @[el2_lib.scala 293:36] - _T_272[0] <= _T_349 @[el2_lib.scala 293:30] - node _T_350 = bits(_T_264, 27, 27) @[el2_lib.scala 289:36] - _T_268[15] <= _T_350 @[el2_lib.scala 289:30] - node _T_351 = bits(_T_264, 27, 27) @[el2_lib.scala 293:36] - _T_272[1] <= _T_351 @[el2_lib.scala 293:30] - node _T_352 = bits(_T_264, 28, 28) @[el2_lib.scala 288:36] - _T_267[16] <= _T_352 @[el2_lib.scala 288:30] - node _T_353 = bits(_T_264, 28, 28) @[el2_lib.scala 289:36] - _T_268[16] <= _T_353 @[el2_lib.scala 289:30] - node _T_354 = bits(_T_264, 28, 28) @[el2_lib.scala 293:36] - _T_272[2] <= _T_354 @[el2_lib.scala 293:30] - node _T_355 = bits(_T_264, 29, 29) @[el2_lib.scala 290:36] - _T_269[15] <= _T_355 @[el2_lib.scala 290:30] - node _T_356 = bits(_T_264, 29, 29) @[el2_lib.scala 293:36] - _T_272[3] <= _T_356 @[el2_lib.scala 293:30] - node _T_357 = bits(_T_264, 30, 30) @[el2_lib.scala 288:36] - _T_267[17] <= _T_357 @[el2_lib.scala 288:30] - node _T_358 = bits(_T_264, 30, 30) @[el2_lib.scala 290:36] - _T_269[16] <= _T_358 @[el2_lib.scala 290:30] - node _T_359 = bits(_T_264, 30, 30) @[el2_lib.scala 293:36] - _T_272[4] <= _T_359 @[el2_lib.scala 293:30] - node _T_360 = bits(_T_264, 31, 31) @[el2_lib.scala 289:36] - _T_268[17] <= _T_360 @[el2_lib.scala 289:30] - node _T_361 = bits(_T_264, 31, 31) @[el2_lib.scala 290:36] - _T_269[17] <= _T_361 @[el2_lib.scala 290:30] - node _T_362 = bits(_T_264, 31, 31) @[el2_lib.scala 293:36] - _T_272[5] <= _T_362 @[el2_lib.scala 293:30] - node _T_363 = xorr(_T_264) @[el2_lib.scala 296:30] - node _T_364 = xorr(_T_266) @[el2_lib.scala 296:44] - node _T_365 = xor(_T_363, _T_364) @[el2_lib.scala 296:35] - node _T_366 = not(UInt<1>("h01")) @[el2_lib.scala 296:52] - node _T_367 = and(_T_365, _T_366) @[el2_lib.scala 296:50] - node _T_368 = bits(_T_266, 5, 5) @[el2_lib.scala 296:68] - node _T_369 = cat(_T_272[2], _T_272[1]) @[el2_lib.scala 296:76] - node _T_370 = cat(_T_369, _T_272[0]) @[el2_lib.scala 296:76] - node _T_371 = cat(_T_272[5], _T_272[4]) @[el2_lib.scala 296:76] - node _T_372 = cat(_T_371, _T_272[3]) @[el2_lib.scala 296:76] - node _T_373 = cat(_T_372, _T_370) @[el2_lib.scala 296:76] - node _T_374 = xorr(_T_373) @[el2_lib.scala 296:83] - node _T_375 = xor(_T_368, _T_374) @[el2_lib.scala 296:71] - node _T_376 = bits(_T_266, 4, 4) @[el2_lib.scala 296:95] - node _T_377 = cat(_T_271[2], _T_271[1]) @[el2_lib.scala 296:103] - node _T_378 = cat(_T_377, _T_271[0]) @[el2_lib.scala 296:103] - node _T_379 = cat(_T_271[4], _T_271[3]) @[el2_lib.scala 296:103] - node _T_380 = cat(_T_271[6], _T_271[5]) @[el2_lib.scala 296:103] - node _T_381 = cat(_T_380, _T_379) @[el2_lib.scala 296:103] - node _T_382 = cat(_T_381, _T_378) @[el2_lib.scala 296:103] - node _T_383 = cat(_T_271[8], _T_271[7]) @[el2_lib.scala 296:103] - node _T_384 = cat(_T_271[10], _T_271[9]) @[el2_lib.scala 296:103] - node _T_385 = cat(_T_384, _T_383) @[el2_lib.scala 296:103] - node _T_386 = cat(_T_271[12], _T_271[11]) @[el2_lib.scala 296:103] - node _T_387 = cat(_T_271[14], _T_271[13]) @[el2_lib.scala 296:103] - node _T_388 = cat(_T_387, _T_386) @[el2_lib.scala 296:103] - node _T_389 = cat(_T_388, _T_385) @[el2_lib.scala 296:103] - node _T_390 = cat(_T_389, _T_382) @[el2_lib.scala 296:103] - node _T_391 = xorr(_T_390) @[el2_lib.scala 296:110] - node _T_392 = xor(_T_376, _T_391) @[el2_lib.scala 296:98] - node _T_393 = bits(_T_266, 3, 3) @[el2_lib.scala 296:122] - node _T_394 = cat(_T_270[2], _T_270[1]) @[el2_lib.scala 296:130] - node _T_395 = cat(_T_394, _T_270[0]) @[el2_lib.scala 296:130] - node _T_396 = cat(_T_270[4], _T_270[3]) @[el2_lib.scala 296:130] - node _T_397 = cat(_T_270[6], _T_270[5]) @[el2_lib.scala 296:130] - node _T_398 = cat(_T_397, _T_396) @[el2_lib.scala 296:130] - node _T_399 = cat(_T_398, _T_395) @[el2_lib.scala 296:130] - node _T_400 = cat(_T_270[8], _T_270[7]) @[el2_lib.scala 296:130] - node _T_401 = cat(_T_270[10], _T_270[9]) @[el2_lib.scala 296:130] - node _T_402 = cat(_T_401, _T_400) @[el2_lib.scala 296:130] - node _T_403 = cat(_T_270[12], _T_270[11]) @[el2_lib.scala 296:130] - node _T_404 = cat(_T_270[14], _T_270[13]) @[el2_lib.scala 296:130] - node _T_405 = cat(_T_404, _T_403) @[el2_lib.scala 296:130] - node _T_406 = cat(_T_405, _T_402) @[el2_lib.scala 296:130] - node _T_407 = cat(_T_406, _T_399) @[el2_lib.scala 296:130] - node _T_408 = xorr(_T_407) @[el2_lib.scala 296:137] - node _T_409 = xor(_T_393, _T_408) @[el2_lib.scala 296:125] - node _T_410 = bits(_T_266, 2, 2) @[el2_lib.scala 296:149] - node _T_411 = cat(_T_269[1], _T_269[0]) @[el2_lib.scala 296:157] - node _T_412 = cat(_T_269[3], _T_269[2]) @[el2_lib.scala 296:157] - node _T_413 = cat(_T_412, _T_411) @[el2_lib.scala 296:157] - node _T_414 = cat(_T_269[5], _T_269[4]) @[el2_lib.scala 296:157] - node _T_415 = cat(_T_269[8], _T_269[7]) @[el2_lib.scala 296:157] - node _T_416 = cat(_T_415, _T_269[6]) @[el2_lib.scala 296:157] - node _T_417 = cat(_T_416, _T_414) @[el2_lib.scala 296:157] - node _T_418 = cat(_T_417, _T_413) @[el2_lib.scala 296:157] - node _T_419 = cat(_T_269[10], _T_269[9]) @[el2_lib.scala 296:157] - node _T_420 = cat(_T_269[12], _T_269[11]) @[el2_lib.scala 296:157] - node _T_421 = cat(_T_420, _T_419) @[el2_lib.scala 296:157] - node _T_422 = cat(_T_269[14], _T_269[13]) @[el2_lib.scala 296:157] - node _T_423 = cat(_T_269[17], _T_269[16]) @[el2_lib.scala 296:157] - node _T_424 = cat(_T_423, _T_269[15]) @[el2_lib.scala 296:157] - node _T_425 = cat(_T_424, _T_422) @[el2_lib.scala 296:157] - node _T_426 = cat(_T_425, _T_421) @[el2_lib.scala 296:157] - node _T_427 = cat(_T_426, _T_418) @[el2_lib.scala 296:157] - node _T_428 = xorr(_T_427) @[el2_lib.scala 296:164] - node _T_429 = xor(_T_410, _T_428) @[el2_lib.scala 296:152] - node _T_430 = bits(_T_266, 1, 1) @[el2_lib.scala 296:176] - node _T_431 = cat(_T_268[1], _T_268[0]) @[el2_lib.scala 296:184] - node _T_432 = cat(_T_268[3], _T_268[2]) @[el2_lib.scala 296:184] - node _T_433 = cat(_T_432, _T_431) @[el2_lib.scala 296:184] - node _T_434 = cat(_T_268[5], _T_268[4]) @[el2_lib.scala 296:184] - node _T_435 = cat(_T_268[8], _T_268[7]) @[el2_lib.scala 296:184] - node _T_436 = cat(_T_435, _T_268[6]) @[el2_lib.scala 296:184] - node _T_437 = cat(_T_436, _T_434) @[el2_lib.scala 296:184] - node _T_438 = cat(_T_437, _T_433) @[el2_lib.scala 296:184] - node _T_439 = cat(_T_268[10], _T_268[9]) @[el2_lib.scala 296:184] - node _T_440 = cat(_T_268[12], _T_268[11]) @[el2_lib.scala 296:184] - node _T_441 = cat(_T_440, _T_439) @[el2_lib.scala 296:184] - node _T_442 = cat(_T_268[14], _T_268[13]) @[el2_lib.scala 296:184] - node _T_443 = cat(_T_268[17], _T_268[16]) @[el2_lib.scala 296:184] - node _T_444 = cat(_T_443, _T_268[15]) @[el2_lib.scala 296:184] - node _T_445 = cat(_T_444, _T_442) @[el2_lib.scala 296:184] - node _T_446 = cat(_T_445, _T_441) @[el2_lib.scala 296:184] - node _T_447 = cat(_T_446, _T_438) @[el2_lib.scala 296:184] - node _T_448 = xorr(_T_447) @[el2_lib.scala 296:191] - node _T_449 = xor(_T_430, _T_448) @[el2_lib.scala 296:179] - node _T_450 = bits(_T_266, 0, 0) @[el2_lib.scala 296:203] - node _T_451 = cat(_T_267[1], _T_267[0]) @[el2_lib.scala 296:211] - node _T_452 = cat(_T_267[3], _T_267[2]) @[el2_lib.scala 296:211] - node _T_453 = cat(_T_452, _T_451) @[el2_lib.scala 296:211] - node _T_454 = cat(_T_267[5], _T_267[4]) @[el2_lib.scala 296:211] - node _T_455 = cat(_T_267[8], _T_267[7]) @[el2_lib.scala 296:211] - node _T_456 = cat(_T_455, _T_267[6]) @[el2_lib.scala 296:211] - node _T_457 = cat(_T_456, _T_454) @[el2_lib.scala 296:211] - node _T_458 = cat(_T_457, _T_453) @[el2_lib.scala 296:211] - node _T_459 = cat(_T_267[10], _T_267[9]) @[el2_lib.scala 296:211] - node _T_460 = cat(_T_267[12], _T_267[11]) @[el2_lib.scala 296:211] - node _T_461 = cat(_T_460, _T_459) @[el2_lib.scala 296:211] - node _T_462 = cat(_T_267[14], _T_267[13]) @[el2_lib.scala 296:211] - node _T_463 = cat(_T_267[17], _T_267[16]) @[el2_lib.scala 296:211] - node _T_464 = cat(_T_463, _T_267[15]) @[el2_lib.scala 296:211] - node _T_465 = cat(_T_464, _T_462) @[el2_lib.scala 296:211] - node _T_466 = cat(_T_465, _T_461) @[el2_lib.scala 296:211] - node _T_467 = cat(_T_466, _T_458) @[el2_lib.scala 296:211] - node _T_468 = xorr(_T_467) @[el2_lib.scala 296:218] - node _T_469 = xor(_T_450, _T_468) @[el2_lib.scala 296:206] - node _T_470 = cat(_T_429, _T_449) @[Cat.scala 29:58] - node _T_471 = cat(_T_470, _T_469) @[Cat.scala 29:58] - node _T_472 = cat(_T_392, _T_409) @[Cat.scala 29:58] - node _T_473 = cat(_T_367, _T_375) @[Cat.scala 29:58] - node _T_474 = cat(_T_473, _T_472) @[Cat.scala 29:58] - node _T_475 = cat(_T_474, _T_471) @[Cat.scala 29:58] - node _T_476 = neq(_T_475, UInt<1>("h00")) @[el2_lib.scala 297:44] - node _T_477 = and(_T_262, _T_476) @[el2_lib.scala 297:32] - node _T_478 = bits(_T_475, 6, 6) @[el2_lib.scala 297:64] - node _T_479 = and(_T_477, _T_478) @[el2_lib.scala 297:53] - node _T_480 = neq(_T_475, UInt<1>("h00")) @[el2_lib.scala 298:44] - node _T_481 = and(_T_262, _T_480) @[el2_lib.scala 298:32] - node _T_482 = bits(_T_475, 6, 6) @[el2_lib.scala 298:65] - node _T_483 = not(_T_482) @[el2_lib.scala 298:55] - node _T_484 = and(_T_481, _T_483) @[el2_lib.scala 298:53] - wire _T_485 : UInt<1>[39] @[el2_lib.scala 299:26] - node _T_486 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_487 = eq(_T_486, UInt<1>("h01")) @[el2_lib.scala 302:41] - _T_485[0] <= _T_487 @[el2_lib.scala 302:23] - node _T_488 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_489 = eq(_T_488, UInt<2>("h02")) @[el2_lib.scala 302:41] - _T_485[1] <= _T_489 @[el2_lib.scala 302:23] - node _T_490 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_491 = eq(_T_490, UInt<2>("h03")) @[el2_lib.scala 302:41] - _T_485[2] <= _T_491 @[el2_lib.scala 302:23] - node _T_492 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_493 = eq(_T_492, UInt<3>("h04")) @[el2_lib.scala 302:41] - _T_485[3] <= _T_493 @[el2_lib.scala 302:23] - node _T_494 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_495 = eq(_T_494, UInt<3>("h05")) @[el2_lib.scala 302:41] - _T_485[4] <= _T_495 @[el2_lib.scala 302:23] - node _T_496 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_497 = eq(_T_496, UInt<3>("h06")) @[el2_lib.scala 302:41] - _T_485[5] <= _T_497 @[el2_lib.scala 302:23] - node _T_498 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_499 = eq(_T_498, UInt<3>("h07")) @[el2_lib.scala 302:41] - _T_485[6] <= _T_499 @[el2_lib.scala 302:23] - node _T_500 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_501 = eq(_T_500, UInt<4>("h08")) @[el2_lib.scala 302:41] - _T_485[7] <= _T_501 @[el2_lib.scala 302:23] - node _T_502 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_503 = eq(_T_502, UInt<4>("h09")) @[el2_lib.scala 302:41] - _T_485[8] <= _T_503 @[el2_lib.scala 302:23] - node _T_504 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_505 = eq(_T_504, UInt<4>("h0a")) @[el2_lib.scala 302:41] - _T_485[9] <= _T_505 @[el2_lib.scala 302:23] - node _T_506 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_507 = eq(_T_506, UInt<4>("h0b")) @[el2_lib.scala 302:41] - _T_485[10] <= _T_507 @[el2_lib.scala 302:23] - node _T_508 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_509 = eq(_T_508, UInt<4>("h0c")) @[el2_lib.scala 302:41] - _T_485[11] <= _T_509 @[el2_lib.scala 302:23] - node _T_510 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_511 = eq(_T_510, UInt<4>("h0d")) @[el2_lib.scala 302:41] - _T_485[12] <= _T_511 @[el2_lib.scala 302:23] - node _T_512 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_513 = eq(_T_512, UInt<4>("h0e")) @[el2_lib.scala 302:41] - _T_485[13] <= _T_513 @[el2_lib.scala 302:23] - node _T_514 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_515 = eq(_T_514, UInt<4>("h0f")) @[el2_lib.scala 302:41] - _T_485[14] <= _T_515 @[el2_lib.scala 302:23] - node _T_516 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_517 = eq(_T_516, UInt<5>("h010")) @[el2_lib.scala 302:41] - _T_485[15] <= _T_517 @[el2_lib.scala 302:23] - node _T_518 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_519 = eq(_T_518, UInt<5>("h011")) @[el2_lib.scala 302:41] - _T_485[16] <= _T_519 @[el2_lib.scala 302:23] - node _T_520 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_521 = eq(_T_520, UInt<5>("h012")) @[el2_lib.scala 302:41] - _T_485[17] <= _T_521 @[el2_lib.scala 302:23] - node _T_522 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_523 = eq(_T_522, UInt<5>("h013")) @[el2_lib.scala 302:41] - _T_485[18] <= _T_523 @[el2_lib.scala 302:23] - node _T_524 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_525 = eq(_T_524, UInt<5>("h014")) @[el2_lib.scala 302:41] - _T_485[19] <= _T_525 @[el2_lib.scala 302:23] - node _T_526 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_527 = eq(_T_526, UInt<5>("h015")) @[el2_lib.scala 302:41] - _T_485[20] <= _T_527 @[el2_lib.scala 302:23] - node _T_528 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_529 = eq(_T_528, UInt<5>("h016")) @[el2_lib.scala 302:41] - _T_485[21] <= _T_529 @[el2_lib.scala 302:23] - node _T_530 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_531 = eq(_T_530, UInt<5>("h017")) @[el2_lib.scala 302:41] - _T_485[22] <= _T_531 @[el2_lib.scala 302:23] - node _T_532 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_533 = eq(_T_532, UInt<5>("h018")) @[el2_lib.scala 302:41] - _T_485[23] <= _T_533 @[el2_lib.scala 302:23] - node _T_534 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_535 = eq(_T_534, UInt<5>("h019")) @[el2_lib.scala 302:41] - _T_485[24] <= _T_535 @[el2_lib.scala 302:23] - node _T_536 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_537 = eq(_T_536, UInt<5>("h01a")) @[el2_lib.scala 302:41] - _T_485[25] <= _T_537 @[el2_lib.scala 302:23] - node _T_538 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_539 = eq(_T_538, UInt<5>("h01b")) @[el2_lib.scala 302:41] - _T_485[26] <= _T_539 @[el2_lib.scala 302:23] - node _T_540 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_541 = eq(_T_540, UInt<5>("h01c")) @[el2_lib.scala 302:41] - _T_485[27] <= _T_541 @[el2_lib.scala 302:23] - node _T_542 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_543 = eq(_T_542, UInt<5>("h01d")) @[el2_lib.scala 302:41] - _T_485[28] <= _T_543 @[el2_lib.scala 302:23] - node _T_544 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_545 = eq(_T_544, UInt<5>("h01e")) @[el2_lib.scala 302:41] - _T_485[29] <= _T_545 @[el2_lib.scala 302:23] - node _T_546 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_547 = eq(_T_546, UInt<5>("h01f")) @[el2_lib.scala 302:41] - _T_485[30] <= _T_547 @[el2_lib.scala 302:23] - node _T_548 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_549 = eq(_T_548, UInt<6>("h020")) @[el2_lib.scala 302:41] - _T_485[31] <= _T_549 @[el2_lib.scala 302:23] - node _T_550 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_551 = eq(_T_550, UInt<6>("h021")) @[el2_lib.scala 302:41] - _T_485[32] <= _T_551 @[el2_lib.scala 302:23] - node _T_552 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_553 = eq(_T_552, UInt<6>("h022")) @[el2_lib.scala 302:41] - _T_485[33] <= _T_553 @[el2_lib.scala 302:23] - node _T_554 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_555 = eq(_T_554, UInt<6>("h023")) @[el2_lib.scala 302:41] - _T_485[34] <= _T_555 @[el2_lib.scala 302:23] - node _T_556 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_557 = eq(_T_556, UInt<6>("h024")) @[el2_lib.scala 302:41] - _T_485[35] <= _T_557 @[el2_lib.scala 302:23] - node _T_558 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_559 = eq(_T_558, UInt<6>("h025")) @[el2_lib.scala 302:41] - _T_485[36] <= _T_559 @[el2_lib.scala 302:23] - node _T_560 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_561 = eq(_T_560, UInt<6>("h026")) @[el2_lib.scala 302:41] - _T_485[37] <= _T_561 @[el2_lib.scala 302:23] - node _T_562 = bits(_T_475, 5, 0) @[el2_lib.scala 302:35] - node _T_563 = eq(_T_562, UInt<6>("h027")) @[el2_lib.scala 302:41] - _T_485[38] <= _T_563 @[el2_lib.scala 302:23] - node _T_564 = bits(_T_266, 6, 6) @[el2_lib.scala 304:37] - node _T_565 = bits(_T_264, 31, 26) @[el2_lib.scala 304:45] - node _T_566 = bits(_T_266, 5, 5) @[el2_lib.scala 304:60] - node _T_567 = bits(_T_264, 25, 11) @[el2_lib.scala 304:68] - node _T_568 = bits(_T_266, 4, 4) @[el2_lib.scala 304:83] - node _T_569 = bits(_T_264, 10, 4) @[el2_lib.scala 304:91] - node _T_570 = bits(_T_266, 3, 3) @[el2_lib.scala 304:105] - node _T_571 = bits(_T_264, 3, 1) @[el2_lib.scala 304:113] - node _T_572 = bits(_T_266, 2, 2) @[el2_lib.scala 304:126] - node _T_573 = bits(_T_264, 0, 0) @[el2_lib.scala 304:134] - node _T_574 = bits(_T_266, 1, 0) @[el2_lib.scala 304:145] - node _T_575 = cat(_T_573, _T_574) @[Cat.scala 29:58] - node _T_576 = cat(_T_570, _T_571) @[Cat.scala 29:58] - node _T_577 = cat(_T_576, _T_572) @[Cat.scala 29:58] - node _T_578 = cat(_T_577, _T_575) @[Cat.scala 29:58] - node _T_579 = cat(_T_567, _T_568) @[Cat.scala 29:58] - node _T_580 = cat(_T_579, _T_569) @[Cat.scala 29:58] - node _T_581 = cat(_T_564, _T_565) @[Cat.scala 29:58] - node _T_582 = cat(_T_581, _T_566) @[Cat.scala 29:58] - node _T_583 = cat(_T_582, _T_580) @[Cat.scala 29:58] - node _T_584 = cat(_T_583, _T_578) @[Cat.scala 29:58] - node _T_585 = bits(_T_479, 0, 0) @[el2_lib.scala 305:49] - node _T_586 = cat(_T_485[1], _T_485[0]) @[el2_lib.scala 305:69] - node _T_587 = cat(_T_485[3], _T_485[2]) @[el2_lib.scala 305:69] - node _T_588 = cat(_T_587, _T_586) @[el2_lib.scala 305:69] - node _T_589 = cat(_T_485[5], _T_485[4]) @[el2_lib.scala 305:69] - node _T_590 = cat(_T_485[8], _T_485[7]) @[el2_lib.scala 305:69] - node _T_591 = cat(_T_590, _T_485[6]) @[el2_lib.scala 305:69] - node _T_592 = cat(_T_591, _T_589) @[el2_lib.scala 305:69] - node _T_593 = cat(_T_592, _T_588) @[el2_lib.scala 305:69] - node _T_594 = cat(_T_485[10], _T_485[9]) @[el2_lib.scala 305:69] - node _T_595 = cat(_T_485[13], _T_485[12]) @[el2_lib.scala 305:69] - node _T_596 = cat(_T_595, _T_485[11]) @[el2_lib.scala 305:69] - node _T_597 = cat(_T_596, _T_594) @[el2_lib.scala 305:69] - node _T_598 = cat(_T_485[15], _T_485[14]) @[el2_lib.scala 305:69] - node _T_599 = cat(_T_485[18], _T_485[17]) @[el2_lib.scala 305:69] - node _T_600 = cat(_T_599, _T_485[16]) @[el2_lib.scala 305:69] - node _T_601 = cat(_T_600, _T_598) @[el2_lib.scala 305:69] - node _T_602 = cat(_T_601, _T_597) @[el2_lib.scala 305:69] - node _T_603 = cat(_T_602, _T_593) @[el2_lib.scala 305:69] - node _T_604 = cat(_T_485[20], _T_485[19]) @[el2_lib.scala 305:69] - node _T_605 = cat(_T_485[23], _T_485[22]) @[el2_lib.scala 305:69] - node _T_606 = cat(_T_605, _T_485[21]) @[el2_lib.scala 305:69] - node _T_607 = cat(_T_606, _T_604) @[el2_lib.scala 305:69] - node _T_608 = cat(_T_485[25], _T_485[24]) @[el2_lib.scala 305:69] - node _T_609 = cat(_T_485[28], _T_485[27]) @[el2_lib.scala 305:69] - node _T_610 = cat(_T_609, _T_485[26]) @[el2_lib.scala 305:69] - node _T_611 = cat(_T_610, _T_608) @[el2_lib.scala 305:69] - node _T_612 = cat(_T_611, _T_607) @[el2_lib.scala 305:69] - node _T_613 = cat(_T_485[30], _T_485[29]) @[el2_lib.scala 305:69] - node _T_614 = cat(_T_485[33], _T_485[32]) @[el2_lib.scala 305:69] - node _T_615 = cat(_T_614, _T_485[31]) @[el2_lib.scala 305:69] - node _T_616 = cat(_T_615, _T_613) @[el2_lib.scala 305:69] - node _T_617 = cat(_T_485[35], _T_485[34]) @[el2_lib.scala 305:69] - node _T_618 = cat(_T_485[38], _T_485[37]) @[el2_lib.scala 305:69] - node _T_619 = cat(_T_618, _T_485[36]) @[el2_lib.scala 305:69] - node _T_620 = cat(_T_619, _T_617) @[el2_lib.scala 305:69] - node _T_621 = cat(_T_620, _T_616) @[el2_lib.scala 305:69] - node _T_622 = cat(_T_621, _T_612) @[el2_lib.scala 305:69] - node _T_623 = cat(_T_622, _T_603) @[el2_lib.scala 305:69] - node _T_624 = xor(_T_623, _T_584) @[el2_lib.scala 305:76] - node _T_625 = mux(_T_585, _T_624, _T_584) @[el2_lib.scala 305:31] - node _T_626 = bits(_T_625, 37, 32) @[el2_lib.scala 307:37] - node _T_627 = bits(_T_625, 30, 16) @[el2_lib.scala 307:61] - node _T_628 = bits(_T_625, 14, 8) @[el2_lib.scala 307:86] - node _T_629 = bits(_T_625, 6, 4) @[el2_lib.scala 307:110] - node _T_630 = bits(_T_625, 2, 2) @[el2_lib.scala 307:133] - node _T_631 = cat(_T_629, _T_630) @[Cat.scala 29:58] - node _T_632 = cat(_T_626, _T_627) @[Cat.scala 29:58] - node _T_633 = cat(_T_632, _T_628) @[Cat.scala 29:58] - node _T_634 = cat(_T_633, _T_631) @[Cat.scala 29:58] - node _T_635 = bits(_T_625, 38, 38) @[el2_lib.scala 308:39] - node _T_636 = bits(_T_475, 6, 0) @[el2_lib.scala 308:56] - node _T_637 = eq(_T_636, UInt<7>("h040")) @[el2_lib.scala 308:62] - node _T_638 = xor(_T_635, _T_637) @[el2_lib.scala 308:44] - node _T_639 = bits(_T_625, 31, 31) @[el2_lib.scala 308:102] - node _T_640 = bits(_T_625, 15, 15) @[el2_lib.scala 308:124] - node _T_641 = bits(_T_625, 7, 7) @[el2_lib.scala 308:146] - node _T_642 = bits(_T_625, 3, 3) @[el2_lib.scala 308:167] - node _T_643 = bits(_T_625, 1, 0) @[el2_lib.scala 308:188] - node _T_644 = cat(_T_641, _T_642) @[Cat.scala 29:58] - node _T_645 = cat(_T_644, _T_643) @[Cat.scala 29:58] - node _T_646 = cat(_T_638, _T_639) @[Cat.scala 29:58] - node _T_647 = cat(_T_646, _T_640) @[Cat.scala 29:58] - node _T_648 = cat(_T_647, _T_645) @[Cat.scala 29:58] - ic_tag_corrected_ecc_unc[0] <= _T_648 @[el2_ifu_ic_mem.scala 155:33] - ic_tag_corrected_data_unc[0] <= _T_634 @[el2_ifu_ic_mem.scala 156:34] - ic_tag_single_ecc_error[0] <= _T_479 @[el2_ifu_ic_mem.scala 157:31] - ic_tag_double_ecc_error[0] <= _T_484 @[el2_ifu_ic_mem.scala 158:32] - node _T_649 = not(io.dec_tlu_core_ecc_disable) @[el2_ifu_ic_mem.scala 153:51] - node _T_650 = and(_T_649, ic_rd_en_ff) @[el2_ifu_ic_mem.scala 153:80] - node _T_651 = bits(ic_tag_data_raw_1, 20, 0) @[el2_ifu_ic_mem.scala 153:127] - node _T_652 = cat(UInt<11>("h00"), _T_651) @[Cat.scala 29:58] - node _T_653 = bits(ic_tag_data_raw_1, 25, 21) @[el2_ifu_ic_mem.scala 153:167] - node _T_654 = cat(UInt<2>("h00"), _T_653) @[Cat.scala 29:58] - wire _T_655 : UInt<1>[18] @[el2_lib.scala 276:18] - wire _T_656 : UInt<1>[18] @[el2_lib.scala 277:18] - wire _T_657 : UInt<1>[18] @[el2_lib.scala 278:18] - wire _T_658 : UInt<1>[15] @[el2_lib.scala 279:18] - wire _T_659 : UInt<1>[15] @[el2_lib.scala 280:18] - wire _T_660 : UInt<1>[6] @[el2_lib.scala 281:18] - node _T_661 = bits(_T_652, 0, 0) @[el2_lib.scala 288:36] - _T_655[0] <= _T_661 @[el2_lib.scala 288:30] - node _T_662 = bits(_T_652, 0, 0) @[el2_lib.scala 289:36] - _T_656[0] <= _T_662 @[el2_lib.scala 289:30] - node _T_663 = bits(_T_652, 1, 1) @[el2_lib.scala 288:36] - _T_655[1] <= _T_663 @[el2_lib.scala 288:30] - node _T_664 = bits(_T_652, 1, 1) @[el2_lib.scala 290:36] - _T_657[0] <= _T_664 @[el2_lib.scala 290:30] - node _T_665 = bits(_T_652, 2, 2) @[el2_lib.scala 289:36] - _T_656[1] <= _T_665 @[el2_lib.scala 289:30] - node _T_666 = bits(_T_652, 2, 2) @[el2_lib.scala 290:36] - _T_657[1] <= _T_666 @[el2_lib.scala 290:30] - node _T_667 = bits(_T_652, 3, 3) @[el2_lib.scala 288:36] - _T_655[2] <= _T_667 @[el2_lib.scala 288:30] - node _T_668 = bits(_T_652, 3, 3) @[el2_lib.scala 289:36] - _T_656[2] <= _T_668 @[el2_lib.scala 289:30] - node _T_669 = bits(_T_652, 3, 3) @[el2_lib.scala 290:36] - _T_657[2] <= _T_669 @[el2_lib.scala 290:30] - node _T_670 = bits(_T_652, 4, 4) @[el2_lib.scala 288:36] - _T_655[3] <= _T_670 @[el2_lib.scala 288:30] - node _T_671 = bits(_T_652, 4, 4) @[el2_lib.scala 291:36] - _T_658[0] <= _T_671 @[el2_lib.scala 291:30] - node _T_672 = bits(_T_652, 5, 5) @[el2_lib.scala 289:36] - _T_656[3] <= _T_672 @[el2_lib.scala 289:30] - node _T_673 = bits(_T_652, 5, 5) @[el2_lib.scala 291:36] - _T_658[1] <= _T_673 @[el2_lib.scala 291:30] - node _T_674 = bits(_T_652, 6, 6) @[el2_lib.scala 288:36] - _T_655[4] <= _T_674 @[el2_lib.scala 288:30] - node _T_675 = bits(_T_652, 6, 6) @[el2_lib.scala 289:36] - _T_656[4] <= _T_675 @[el2_lib.scala 289:30] - node _T_676 = bits(_T_652, 6, 6) @[el2_lib.scala 291:36] - _T_658[2] <= _T_676 @[el2_lib.scala 291:30] - node _T_677 = bits(_T_652, 7, 7) @[el2_lib.scala 290:36] - _T_657[3] <= _T_677 @[el2_lib.scala 290:30] - node _T_678 = bits(_T_652, 7, 7) @[el2_lib.scala 291:36] - _T_658[3] <= _T_678 @[el2_lib.scala 291:30] - node _T_679 = bits(_T_652, 8, 8) @[el2_lib.scala 288:36] - _T_655[5] <= _T_679 @[el2_lib.scala 288:30] - node _T_680 = bits(_T_652, 8, 8) @[el2_lib.scala 290:36] - _T_657[4] <= _T_680 @[el2_lib.scala 290:30] - node _T_681 = bits(_T_652, 8, 8) @[el2_lib.scala 291:36] - _T_658[4] <= _T_681 @[el2_lib.scala 291:30] - node _T_682 = bits(_T_652, 9, 9) @[el2_lib.scala 289:36] - _T_656[5] <= _T_682 @[el2_lib.scala 289:30] - node _T_683 = bits(_T_652, 9, 9) @[el2_lib.scala 290:36] - _T_657[5] <= _T_683 @[el2_lib.scala 290:30] - node _T_684 = bits(_T_652, 9, 9) @[el2_lib.scala 291:36] - _T_658[5] <= _T_684 @[el2_lib.scala 291:30] - node _T_685 = bits(_T_652, 10, 10) @[el2_lib.scala 288:36] - _T_655[6] <= _T_685 @[el2_lib.scala 288:30] - node _T_686 = bits(_T_652, 10, 10) @[el2_lib.scala 289:36] - _T_656[6] <= _T_686 @[el2_lib.scala 289:30] - node _T_687 = bits(_T_652, 10, 10) @[el2_lib.scala 290:36] - _T_657[6] <= _T_687 @[el2_lib.scala 290:30] - node _T_688 = bits(_T_652, 10, 10) @[el2_lib.scala 291:36] - _T_658[6] <= _T_688 @[el2_lib.scala 291:30] - node _T_689 = bits(_T_652, 11, 11) @[el2_lib.scala 288:36] - _T_655[7] <= _T_689 @[el2_lib.scala 288:30] - node _T_690 = bits(_T_652, 11, 11) @[el2_lib.scala 292:36] - _T_659[0] <= _T_690 @[el2_lib.scala 292:30] - node _T_691 = bits(_T_652, 12, 12) @[el2_lib.scala 289:36] - _T_656[7] <= _T_691 @[el2_lib.scala 289:30] - node _T_692 = bits(_T_652, 12, 12) @[el2_lib.scala 292:36] - _T_659[1] <= _T_692 @[el2_lib.scala 292:30] - node _T_693 = bits(_T_652, 13, 13) @[el2_lib.scala 288:36] - _T_655[8] <= _T_693 @[el2_lib.scala 288:30] - node _T_694 = bits(_T_652, 13, 13) @[el2_lib.scala 289:36] - _T_656[8] <= _T_694 @[el2_lib.scala 289:30] - node _T_695 = bits(_T_652, 13, 13) @[el2_lib.scala 292:36] - _T_659[2] <= _T_695 @[el2_lib.scala 292:30] - node _T_696 = bits(_T_652, 14, 14) @[el2_lib.scala 290:36] - _T_657[7] <= _T_696 @[el2_lib.scala 290:30] - node _T_697 = bits(_T_652, 14, 14) @[el2_lib.scala 292:36] - _T_659[3] <= _T_697 @[el2_lib.scala 292:30] - node _T_698 = bits(_T_652, 15, 15) @[el2_lib.scala 288:36] - _T_655[9] <= _T_698 @[el2_lib.scala 288:30] - node _T_699 = bits(_T_652, 15, 15) @[el2_lib.scala 290:36] - _T_657[8] <= _T_699 @[el2_lib.scala 290:30] - node _T_700 = bits(_T_652, 15, 15) @[el2_lib.scala 292:36] - _T_659[4] <= _T_700 @[el2_lib.scala 292:30] - node _T_701 = bits(_T_652, 16, 16) @[el2_lib.scala 289:36] - _T_656[9] <= _T_701 @[el2_lib.scala 289:30] - node _T_702 = bits(_T_652, 16, 16) @[el2_lib.scala 290:36] - _T_657[9] <= _T_702 @[el2_lib.scala 290:30] - node _T_703 = bits(_T_652, 16, 16) @[el2_lib.scala 292:36] - _T_659[5] <= _T_703 @[el2_lib.scala 292:30] - node _T_704 = bits(_T_652, 17, 17) @[el2_lib.scala 288:36] - _T_655[10] <= _T_704 @[el2_lib.scala 288:30] - node _T_705 = bits(_T_652, 17, 17) @[el2_lib.scala 289:36] - _T_656[10] <= _T_705 @[el2_lib.scala 289:30] - node _T_706 = bits(_T_652, 17, 17) @[el2_lib.scala 290:36] - _T_657[10] <= _T_706 @[el2_lib.scala 290:30] - node _T_707 = bits(_T_652, 17, 17) @[el2_lib.scala 292:36] - _T_659[6] <= _T_707 @[el2_lib.scala 292:30] - node _T_708 = bits(_T_652, 18, 18) @[el2_lib.scala 291:36] - _T_658[7] <= _T_708 @[el2_lib.scala 291:30] - node _T_709 = bits(_T_652, 18, 18) @[el2_lib.scala 292:36] - _T_659[7] <= _T_709 @[el2_lib.scala 292:30] - node _T_710 = bits(_T_652, 19, 19) @[el2_lib.scala 288:36] - _T_655[11] <= _T_710 @[el2_lib.scala 288:30] - node _T_711 = bits(_T_652, 19, 19) @[el2_lib.scala 291:36] - _T_658[8] <= _T_711 @[el2_lib.scala 291:30] - node _T_712 = bits(_T_652, 19, 19) @[el2_lib.scala 292:36] - _T_659[8] <= _T_712 @[el2_lib.scala 292:30] - node _T_713 = bits(_T_652, 20, 20) @[el2_lib.scala 289:36] - _T_656[11] <= _T_713 @[el2_lib.scala 289:30] - node _T_714 = bits(_T_652, 20, 20) @[el2_lib.scala 291:36] - _T_658[9] <= _T_714 @[el2_lib.scala 291:30] - node _T_715 = bits(_T_652, 20, 20) @[el2_lib.scala 292:36] - _T_659[9] <= _T_715 @[el2_lib.scala 292:30] - node _T_716 = bits(_T_652, 21, 21) @[el2_lib.scala 288:36] - _T_655[12] <= _T_716 @[el2_lib.scala 288:30] - node _T_717 = bits(_T_652, 21, 21) @[el2_lib.scala 289:36] - _T_656[12] <= _T_717 @[el2_lib.scala 289:30] - node _T_718 = bits(_T_652, 21, 21) @[el2_lib.scala 291:36] - _T_658[10] <= _T_718 @[el2_lib.scala 291:30] - node _T_719 = bits(_T_652, 21, 21) @[el2_lib.scala 292:36] - _T_659[10] <= _T_719 @[el2_lib.scala 292:30] - node _T_720 = bits(_T_652, 22, 22) @[el2_lib.scala 290:36] - _T_657[11] <= _T_720 @[el2_lib.scala 290:30] - node _T_721 = bits(_T_652, 22, 22) @[el2_lib.scala 291:36] - _T_658[11] <= _T_721 @[el2_lib.scala 291:30] - node _T_722 = bits(_T_652, 22, 22) @[el2_lib.scala 292:36] - _T_659[11] <= _T_722 @[el2_lib.scala 292:30] - node _T_723 = bits(_T_652, 23, 23) @[el2_lib.scala 288:36] - _T_655[13] <= _T_723 @[el2_lib.scala 288:30] - node _T_724 = bits(_T_652, 23, 23) @[el2_lib.scala 290:36] - _T_657[12] <= _T_724 @[el2_lib.scala 290:30] - node _T_725 = bits(_T_652, 23, 23) @[el2_lib.scala 291:36] - _T_658[12] <= _T_725 @[el2_lib.scala 291:30] - node _T_726 = bits(_T_652, 23, 23) @[el2_lib.scala 292:36] - _T_659[12] <= _T_726 @[el2_lib.scala 292:30] - node _T_727 = bits(_T_652, 24, 24) @[el2_lib.scala 289:36] - _T_656[13] <= _T_727 @[el2_lib.scala 289:30] - node _T_728 = bits(_T_652, 24, 24) @[el2_lib.scala 290:36] - _T_657[13] <= _T_728 @[el2_lib.scala 290:30] - node _T_729 = bits(_T_652, 24, 24) @[el2_lib.scala 291:36] - _T_658[13] <= _T_729 @[el2_lib.scala 291:30] - node _T_730 = bits(_T_652, 24, 24) @[el2_lib.scala 292:36] - _T_659[13] <= _T_730 @[el2_lib.scala 292:30] - node _T_731 = bits(_T_652, 25, 25) @[el2_lib.scala 288:36] - _T_655[14] <= _T_731 @[el2_lib.scala 288:30] - node _T_732 = bits(_T_652, 25, 25) @[el2_lib.scala 289:36] - _T_656[14] <= _T_732 @[el2_lib.scala 289:30] - node _T_733 = bits(_T_652, 25, 25) @[el2_lib.scala 290:36] - _T_657[14] <= _T_733 @[el2_lib.scala 290:30] - node _T_734 = bits(_T_652, 25, 25) @[el2_lib.scala 291:36] - _T_658[14] <= _T_734 @[el2_lib.scala 291:30] - node _T_735 = bits(_T_652, 25, 25) @[el2_lib.scala 292:36] - _T_659[14] <= _T_735 @[el2_lib.scala 292:30] - node _T_736 = bits(_T_652, 26, 26) @[el2_lib.scala 288:36] - _T_655[15] <= _T_736 @[el2_lib.scala 288:30] - node _T_737 = bits(_T_652, 26, 26) @[el2_lib.scala 293:36] - _T_660[0] <= _T_737 @[el2_lib.scala 293:30] - node _T_738 = bits(_T_652, 27, 27) @[el2_lib.scala 289:36] - _T_656[15] <= _T_738 @[el2_lib.scala 289:30] - node _T_739 = bits(_T_652, 27, 27) @[el2_lib.scala 293:36] - _T_660[1] <= _T_739 @[el2_lib.scala 293:30] - node _T_740 = bits(_T_652, 28, 28) @[el2_lib.scala 288:36] - _T_655[16] <= _T_740 @[el2_lib.scala 288:30] - node _T_741 = bits(_T_652, 28, 28) @[el2_lib.scala 289:36] - _T_656[16] <= _T_741 @[el2_lib.scala 289:30] - node _T_742 = bits(_T_652, 28, 28) @[el2_lib.scala 293:36] - _T_660[2] <= _T_742 @[el2_lib.scala 293:30] - node _T_743 = bits(_T_652, 29, 29) @[el2_lib.scala 290:36] - _T_657[15] <= _T_743 @[el2_lib.scala 290:30] - node _T_744 = bits(_T_652, 29, 29) @[el2_lib.scala 293:36] - _T_660[3] <= _T_744 @[el2_lib.scala 293:30] - node _T_745 = bits(_T_652, 30, 30) @[el2_lib.scala 288:36] - _T_655[17] <= _T_745 @[el2_lib.scala 288:30] - node _T_746 = bits(_T_652, 30, 30) @[el2_lib.scala 290:36] - _T_657[16] <= _T_746 @[el2_lib.scala 290:30] - node _T_747 = bits(_T_652, 30, 30) @[el2_lib.scala 293:36] - _T_660[4] <= _T_747 @[el2_lib.scala 293:30] - node _T_748 = bits(_T_652, 31, 31) @[el2_lib.scala 289:36] - _T_656[17] <= _T_748 @[el2_lib.scala 289:30] - node _T_749 = bits(_T_652, 31, 31) @[el2_lib.scala 290:36] - _T_657[17] <= _T_749 @[el2_lib.scala 290:30] - node _T_750 = bits(_T_652, 31, 31) @[el2_lib.scala 293:36] - _T_660[5] <= _T_750 @[el2_lib.scala 293:30] - node _T_751 = xorr(_T_652) @[el2_lib.scala 296:30] - node _T_752 = xorr(_T_654) @[el2_lib.scala 296:44] - node _T_753 = xor(_T_751, _T_752) @[el2_lib.scala 296:35] - node _T_754 = not(UInt<1>("h01")) @[el2_lib.scala 296:52] - node _T_755 = and(_T_753, _T_754) @[el2_lib.scala 296:50] - node _T_756 = bits(_T_654, 5, 5) @[el2_lib.scala 296:68] - node _T_757 = cat(_T_660[2], _T_660[1]) @[el2_lib.scala 296:76] - node _T_758 = cat(_T_757, _T_660[0]) @[el2_lib.scala 296:76] - node _T_759 = cat(_T_660[5], _T_660[4]) @[el2_lib.scala 296:76] - node _T_760 = cat(_T_759, _T_660[3]) @[el2_lib.scala 296:76] - node _T_761 = cat(_T_760, _T_758) @[el2_lib.scala 296:76] - node _T_762 = xorr(_T_761) @[el2_lib.scala 296:83] - node _T_763 = xor(_T_756, _T_762) @[el2_lib.scala 296:71] - node _T_764 = bits(_T_654, 4, 4) @[el2_lib.scala 296:95] - node _T_765 = cat(_T_659[2], _T_659[1]) @[el2_lib.scala 296:103] - node _T_766 = cat(_T_765, _T_659[0]) @[el2_lib.scala 296:103] - node _T_767 = cat(_T_659[4], _T_659[3]) @[el2_lib.scala 296:103] - node _T_768 = cat(_T_659[6], _T_659[5]) @[el2_lib.scala 296:103] - node _T_769 = cat(_T_768, _T_767) @[el2_lib.scala 296:103] - node _T_770 = cat(_T_769, _T_766) @[el2_lib.scala 296:103] - node _T_771 = cat(_T_659[8], _T_659[7]) @[el2_lib.scala 296:103] - node _T_772 = cat(_T_659[10], _T_659[9]) @[el2_lib.scala 296:103] - node _T_773 = cat(_T_772, _T_771) @[el2_lib.scala 296:103] - node _T_774 = cat(_T_659[12], _T_659[11]) @[el2_lib.scala 296:103] - node _T_775 = cat(_T_659[14], _T_659[13]) @[el2_lib.scala 296:103] - node _T_776 = cat(_T_775, _T_774) @[el2_lib.scala 296:103] - node _T_777 = cat(_T_776, _T_773) @[el2_lib.scala 296:103] - node _T_778 = cat(_T_777, _T_770) @[el2_lib.scala 296:103] - node _T_779 = xorr(_T_778) @[el2_lib.scala 296:110] - node _T_780 = xor(_T_764, _T_779) @[el2_lib.scala 296:98] - node _T_781 = bits(_T_654, 3, 3) @[el2_lib.scala 296:122] - node _T_782 = cat(_T_658[2], _T_658[1]) @[el2_lib.scala 296:130] - node _T_783 = cat(_T_782, _T_658[0]) @[el2_lib.scala 296:130] - node _T_784 = cat(_T_658[4], _T_658[3]) @[el2_lib.scala 296:130] - node _T_785 = cat(_T_658[6], _T_658[5]) @[el2_lib.scala 296:130] - node _T_786 = cat(_T_785, _T_784) @[el2_lib.scala 296:130] - node _T_787 = cat(_T_786, _T_783) @[el2_lib.scala 296:130] - node _T_788 = cat(_T_658[8], _T_658[7]) @[el2_lib.scala 296:130] - node _T_789 = cat(_T_658[10], _T_658[9]) @[el2_lib.scala 296:130] - node _T_790 = cat(_T_789, _T_788) @[el2_lib.scala 296:130] - node _T_791 = cat(_T_658[12], _T_658[11]) @[el2_lib.scala 296:130] - node _T_792 = cat(_T_658[14], _T_658[13]) @[el2_lib.scala 296:130] - node _T_793 = cat(_T_792, _T_791) @[el2_lib.scala 296:130] - node _T_794 = cat(_T_793, _T_790) @[el2_lib.scala 296:130] - node _T_795 = cat(_T_794, _T_787) @[el2_lib.scala 296:130] - node _T_796 = xorr(_T_795) @[el2_lib.scala 296:137] - node _T_797 = xor(_T_781, _T_796) @[el2_lib.scala 296:125] - node _T_798 = bits(_T_654, 2, 2) @[el2_lib.scala 296:149] - node _T_799 = cat(_T_657[1], _T_657[0]) @[el2_lib.scala 296:157] - node _T_800 = cat(_T_657[3], _T_657[2]) @[el2_lib.scala 296:157] - node _T_801 = cat(_T_800, _T_799) @[el2_lib.scala 296:157] - node _T_802 = cat(_T_657[5], _T_657[4]) @[el2_lib.scala 296:157] - node _T_803 = cat(_T_657[8], _T_657[7]) @[el2_lib.scala 296:157] - node _T_804 = cat(_T_803, _T_657[6]) @[el2_lib.scala 296:157] - node _T_805 = cat(_T_804, _T_802) @[el2_lib.scala 296:157] - node _T_806 = cat(_T_805, _T_801) @[el2_lib.scala 296:157] - node _T_807 = cat(_T_657[10], _T_657[9]) @[el2_lib.scala 296:157] - node _T_808 = cat(_T_657[12], _T_657[11]) @[el2_lib.scala 296:157] - node _T_809 = cat(_T_808, _T_807) @[el2_lib.scala 296:157] - node _T_810 = cat(_T_657[14], _T_657[13]) @[el2_lib.scala 296:157] - node _T_811 = cat(_T_657[17], _T_657[16]) @[el2_lib.scala 296:157] - node _T_812 = cat(_T_811, _T_657[15]) @[el2_lib.scala 296:157] - node _T_813 = cat(_T_812, _T_810) @[el2_lib.scala 296:157] - node _T_814 = cat(_T_813, _T_809) @[el2_lib.scala 296:157] - node _T_815 = cat(_T_814, _T_806) @[el2_lib.scala 296:157] - node _T_816 = xorr(_T_815) @[el2_lib.scala 296:164] - node _T_817 = xor(_T_798, _T_816) @[el2_lib.scala 296:152] - node _T_818 = bits(_T_654, 1, 1) @[el2_lib.scala 296:176] - node _T_819 = cat(_T_656[1], _T_656[0]) @[el2_lib.scala 296:184] - node _T_820 = cat(_T_656[3], _T_656[2]) @[el2_lib.scala 296:184] - node _T_821 = cat(_T_820, _T_819) @[el2_lib.scala 296:184] - node _T_822 = cat(_T_656[5], _T_656[4]) @[el2_lib.scala 296:184] - node _T_823 = cat(_T_656[8], _T_656[7]) @[el2_lib.scala 296:184] - node _T_824 = cat(_T_823, _T_656[6]) @[el2_lib.scala 296:184] - node _T_825 = cat(_T_824, _T_822) @[el2_lib.scala 296:184] - node _T_826 = cat(_T_825, _T_821) @[el2_lib.scala 296:184] - node _T_827 = cat(_T_656[10], _T_656[9]) @[el2_lib.scala 296:184] - node _T_828 = cat(_T_656[12], _T_656[11]) @[el2_lib.scala 296:184] - node _T_829 = cat(_T_828, _T_827) @[el2_lib.scala 296:184] - node _T_830 = cat(_T_656[14], _T_656[13]) @[el2_lib.scala 296:184] - node _T_831 = cat(_T_656[17], _T_656[16]) @[el2_lib.scala 296:184] - node _T_832 = cat(_T_831, _T_656[15]) @[el2_lib.scala 296:184] - node _T_833 = cat(_T_832, _T_830) @[el2_lib.scala 296:184] - node _T_834 = cat(_T_833, _T_829) @[el2_lib.scala 296:184] - node _T_835 = cat(_T_834, _T_826) @[el2_lib.scala 296:184] - node _T_836 = xorr(_T_835) @[el2_lib.scala 296:191] - node _T_837 = xor(_T_818, _T_836) @[el2_lib.scala 296:179] - node _T_838 = bits(_T_654, 0, 0) @[el2_lib.scala 296:203] - node _T_839 = cat(_T_655[1], _T_655[0]) @[el2_lib.scala 296:211] - node _T_840 = cat(_T_655[3], _T_655[2]) @[el2_lib.scala 296:211] - node _T_841 = cat(_T_840, _T_839) @[el2_lib.scala 296:211] - node _T_842 = cat(_T_655[5], _T_655[4]) @[el2_lib.scala 296:211] - node _T_843 = cat(_T_655[8], _T_655[7]) @[el2_lib.scala 296:211] - node _T_844 = cat(_T_843, _T_655[6]) @[el2_lib.scala 296:211] - node _T_845 = cat(_T_844, _T_842) @[el2_lib.scala 296:211] - node _T_846 = cat(_T_845, _T_841) @[el2_lib.scala 296:211] - node _T_847 = cat(_T_655[10], _T_655[9]) @[el2_lib.scala 296:211] - node _T_848 = cat(_T_655[12], _T_655[11]) @[el2_lib.scala 296:211] - node _T_849 = cat(_T_848, _T_847) @[el2_lib.scala 296:211] - node _T_850 = cat(_T_655[14], _T_655[13]) @[el2_lib.scala 296:211] - node _T_851 = cat(_T_655[17], _T_655[16]) @[el2_lib.scala 296:211] - node _T_852 = cat(_T_851, _T_655[15]) @[el2_lib.scala 296:211] - node _T_853 = cat(_T_852, _T_850) @[el2_lib.scala 296:211] - node _T_854 = cat(_T_853, _T_849) @[el2_lib.scala 296:211] - node _T_855 = cat(_T_854, _T_846) @[el2_lib.scala 296:211] - node _T_856 = xorr(_T_855) @[el2_lib.scala 296:218] - node _T_857 = xor(_T_838, _T_856) @[el2_lib.scala 296:206] - node _T_858 = cat(_T_817, _T_837) @[Cat.scala 29:58] - node _T_859 = cat(_T_858, _T_857) @[Cat.scala 29:58] - node _T_860 = cat(_T_780, _T_797) @[Cat.scala 29:58] - node _T_861 = cat(_T_755, _T_763) @[Cat.scala 29:58] - node _T_862 = cat(_T_861, _T_860) @[Cat.scala 29:58] - node _T_863 = cat(_T_862, _T_859) @[Cat.scala 29:58] - node _T_864 = neq(_T_863, UInt<1>("h00")) @[el2_lib.scala 297:44] - node _T_865 = and(_T_650, _T_864) @[el2_lib.scala 297:32] - node _T_866 = bits(_T_863, 6, 6) @[el2_lib.scala 297:64] - node _T_867 = and(_T_865, _T_866) @[el2_lib.scala 297:53] - node _T_868 = neq(_T_863, UInt<1>("h00")) @[el2_lib.scala 298:44] - node _T_869 = and(_T_650, _T_868) @[el2_lib.scala 298:32] - node _T_870 = bits(_T_863, 6, 6) @[el2_lib.scala 298:65] - node _T_871 = not(_T_870) @[el2_lib.scala 298:55] - node _T_872 = and(_T_869, _T_871) @[el2_lib.scala 298:53] - wire _T_873 : UInt<1>[39] @[el2_lib.scala 299:26] - node _T_874 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_875 = eq(_T_874, UInt<1>("h01")) @[el2_lib.scala 302:41] - _T_873[0] <= _T_875 @[el2_lib.scala 302:23] - node _T_876 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_877 = eq(_T_876, UInt<2>("h02")) @[el2_lib.scala 302:41] - _T_873[1] <= _T_877 @[el2_lib.scala 302:23] - node _T_878 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_879 = eq(_T_878, UInt<2>("h03")) @[el2_lib.scala 302:41] - _T_873[2] <= _T_879 @[el2_lib.scala 302:23] - node _T_880 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_881 = eq(_T_880, UInt<3>("h04")) @[el2_lib.scala 302:41] - _T_873[3] <= _T_881 @[el2_lib.scala 302:23] - node _T_882 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_883 = eq(_T_882, UInt<3>("h05")) @[el2_lib.scala 302:41] - _T_873[4] <= _T_883 @[el2_lib.scala 302:23] - node _T_884 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_885 = eq(_T_884, UInt<3>("h06")) @[el2_lib.scala 302:41] - _T_873[5] <= _T_885 @[el2_lib.scala 302:23] - node _T_886 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_887 = eq(_T_886, UInt<3>("h07")) @[el2_lib.scala 302:41] - _T_873[6] <= _T_887 @[el2_lib.scala 302:23] - node _T_888 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_889 = eq(_T_888, UInt<4>("h08")) @[el2_lib.scala 302:41] - _T_873[7] <= _T_889 @[el2_lib.scala 302:23] - node _T_890 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_891 = eq(_T_890, UInt<4>("h09")) @[el2_lib.scala 302:41] - _T_873[8] <= _T_891 @[el2_lib.scala 302:23] - node _T_892 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_893 = eq(_T_892, UInt<4>("h0a")) @[el2_lib.scala 302:41] - _T_873[9] <= _T_893 @[el2_lib.scala 302:23] - node _T_894 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_895 = eq(_T_894, UInt<4>("h0b")) @[el2_lib.scala 302:41] - _T_873[10] <= _T_895 @[el2_lib.scala 302:23] - node _T_896 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_897 = eq(_T_896, UInt<4>("h0c")) @[el2_lib.scala 302:41] - _T_873[11] <= _T_897 @[el2_lib.scala 302:23] - node _T_898 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_899 = eq(_T_898, UInt<4>("h0d")) @[el2_lib.scala 302:41] - _T_873[12] <= _T_899 @[el2_lib.scala 302:23] - node _T_900 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_901 = eq(_T_900, UInt<4>("h0e")) @[el2_lib.scala 302:41] - _T_873[13] <= _T_901 @[el2_lib.scala 302:23] - node _T_902 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_903 = eq(_T_902, UInt<4>("h0f")) @[el2_lib.scala 302:41] - _T_873[14] <= _T_903 @[el2_lib.scala 302:23] - node _T_904 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_905 = eq(_T_904, UInt<5>("h010")) @[el2_lib.scala 302:41] - _T_873[15] <= _T_905 @[el2_lib.scala 302:23] - node _T_906 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_907 = eq(_T_906, UInt<5>("h011")) @[el2_lib.scala 302:41] - _T_873[16] <= _T_907 @[el2_lib.scala 302:23] - node _T_908 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_909 = eq(_T_908, UInt<5>("h012")) @[el2_lib.scala 302:41] - _T_873[17] <= _T_909 @[el2_lib.scala 302:23] - node _T_910 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_911 = eq(_T_910, UInt<5>("h013")) @[el2_lib.scala 302:41] - _T_873[18] <= _T_911 @[el2_lib.scala 302:23] - node _T_912 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_913 = eq(_T_912, UInt<5>("h014")) @[el2_lib.scala 302:41] - _T_873[19] <= _T_913 @[el2_lib.scala 302:23] - node _T_914 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_915 = eq(_T_914, UInt<5>("h015")) @[el2_lib.scala 302:41] - _T_873[20] <= _T_915 @[el2_lib.scala 302:23] - node _T_916 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_917 = eq(_T_916, UInt<5>("h016")) @[el2_lib.scala 302:41] - _T_873[21] <= _T_917 @[el2_lib.scala 302:23] - node _T_918 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_919 = eq(_T_918, UInt<5>("h017")) @[el2_lib.scala 302:41] - _T_873[22] <= _T_919 @[el2_lib.scala 302:23] - node _T_920 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_921 = eq(_T_920, UInt<5>("h018")) @[el2_lib.scala 302:41] - _T_873[23] <= _T_921 @[el2_lib.scala 302:23] - node _T_922 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_923 = eq(_T_922, UInt<5>("h019")) @[el2_lib.scala 302:41] - _T_873[24] <= _T_923 @[el2_lib.scala 302:23] - node _T_924 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_925 = eq(_T_924, UInt<5>("h01a")) @[el2_lib.scala 302:41] - _T_873[25] <= _T_925 @[el2_lib.scala 302:23] - node _T_926 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_927 = eq(_T_926, UInt<5>("h01b")) @[el2_lib.scala 302:41] - _T_873[26] <= _T_927 @[el2_lib.scala 302:23] - node _T_928 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_929 = eq(_T_928, UInt<5>("h01c")) @[el2_lib.scala 302:41] - _T_873[27] <= _T_929 @[el2_lib.scala 302:23] - node _T_930 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_931 = eq(_T_930, UInt<5>("h01d")) @[el2_lib.scala 302:41] - _T_873[28] <= _T_931 @[el2_lib.scala 302:23] - node _T_932 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_933 = eq(_T_932, UInt<5>("h01e")) @[el2_lib.scala 302:41] - _T_873[29] <= _T_933 @[el2_lib.scala 302:23] - node _T_934 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_935 = eq(_T_934, UInt<5>("h01f")) @[el2_lib.scala 302:41] - _T_873[30] <= _T_935 @[el2_lib.scala 302:23] - node _T_936 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_937 = eq(_T_936, UInt<6>("h020")) @[el2_lib.scala 302:41] - _T_873[31] <= _T_937 @[el2_lib.scala 302:23] - node _T_938 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_939 = eq(_T_938, UInt<6>("h021")) @[el2_lib.scala 302:41] - _T_873[32] <= _T_939 @[el2_lib.scala 302:23] - node _T_940 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_941 = eq(_T_940, UInt<6>("h022")) @[el2_lib.scala 302:41] - _T_873[33] <= _T_941 @[el2_lib.scala 302:23] - node _T_942 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_943 = eq(_T_942, UInt<6>("h023")) @[el2_lib.scala 302:41] - _T_873[34] <= _T_943 @[el2_lib.scala 302:23] - node _T_944 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_945 = eq(_T_944, UInt<6>("h024")) @[el2_lib.scala 302:41] - _T_873[35] <= _T_945 @[el2_lib.scala 302:23] - node _T_946 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_947 = eq(_T_946, UInt<6>("h025")) @[el2_lib.scala 302:41] - _T_873[36] <= _T_947 @[el2_lib.scala 302:23] - node _T_948 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_949 = eq(_T_948, UInt<6>("h026")) @[el2_lib.scala 302:41] - _T_873[37] <= _T_949 @[el2_lib.scala 302:23] - node _T_950 = bits(_T_863, 5, 0) @[el2_lib.scala 302:35] - node _T_951 = eq(_T_950, UInt<6>("h027")) @[el2_lib.scala 302:41] - _T_873[38] <= _T_951 @[el2_lib.scala 302:23] - node _T_952 = bits(_T_654, 6, 6) @[el2_lib.scala 304:37] - node _T_953 = bits(_T_652, 31, 26) @[el2_lib.scala 304:45] - node _T_954 = bits(_T_654, 5, 5) @[el2_lib.scala 304:60] - node _T_955 = bits(_T_652, 25, 11) @[el2_lib.scala 304:68] - node _T_956 = bits(_T_654, 4, 4) @[el2_lib.scala 304:83] - node _T_957 = bits(_T_652, 10, 4) @[el2_lib.scala 304:91] - node _T_958 = bits(_T_654, 3, 3) @[el2_lib.scala 304:105] - node _T_959 = bits(_T_652, 3, 1) @[el2_lib.scala 304:113] - node _T_960 = bits(_T_654, 2, 2) @[el2_lib.scala 304:126] - node _T_961 = bits(_T_652, 0, 0) @[el2_lib.scala 304:134] - node _T_962 = bits(_T_654, 1, 0) @[el2_lib.scala 304:145] - node _T_963 = cat(_T_961, _T_962) @[Cat.scala 29:58] - node _T_964 = cat(_T_958, _T_959) @[Cat.scala 29:58] - node _T_965 = cat(_T_964, _T_960) @[Cat.scala 29:58] - node _T_966 = cat(_T_965, _T_963) @[Cat.scala 29:58] - node _T_967 = cat(_T_955, _T_956) @[Cat.scala 29:58] - node _T_968 = cat(_T_967, _T_957) @[Cat.scala 29:58] - node _T_969 = cat(_T_952, _T_953) @[Cat.scala 29:58] - node _T_970 = cat(_T_969, _T_954) @[Cat.scala 29:58] - node _T_971 = cat(_T_970, _T_968) @[Cat.scala 29:58] - node _T_972 = cat(_T_971, _T_966) @[Cat.scala 29:58] - node _T_973 = bits(_T_867, 0, 0) @[el2_lib.scala 305:49] - node _T_974 = cat(_T_873[1], _T_873[0]) @[el2_lib.scala 305:69] - node _T_975 = cat(_T_873[3], _T_873[2]) @[el2_lib.scala 305:69] - node _T_976 = cat(_T_975, _T_974) @[el2_lib.scala 305:69] - node _T_977 = cat(_T_873[5], _T_873[4]) @[el2_lib.scala 305:69] - node _T_978 = cat(_T_873[8], _T_873[7]) @[el2_lib.scala 305:69] - node _T_979 = cat(_T_978, _T_873[6]) @[el2_lib.scala 305:69] - node _T_980 = cat(_T_979, _T_977) @[el2_lib.scala 305:69] - node _T_981 = cat(_T_980, _T_976) @[el2_lib.scala 305:69] - node _T_982 = cat(_T_873[10], _T_873[9]) @[el2_lib.scala 305:69] - node _T_983 = cat(_T_873[13], _T_873[12]) @[el2_lib.scala 305:69] - node _T_984 = cat(_T_983, _T_873[11]) @[el2_lib.scala 305:69] - node _T_985 = cat(_T_984, _T_982) @[el2_lib.scala 305:69] - node _T_986 = cat(_T_873[15], _T_873[14]) @[el2_lib.scala 305:69] - node _T_987 = cat(_T_873[18], _T_873[17]) @[el2_lib.scala 305:69] - node _T_988 = cat(_T_987, _T_873[16]) @[el2_lib.scala 305:69] - node _T_989 = cat(_T_988, _T_986) @[el2_lib.scala 305:69] - node _T_990 = cat(_T_989, _T_985) @[el2_lib.scala 305:69] - node _T_991 = cat(_T_990, _T_981) @[el2_lib.scala 305:69] - node _T_992 = cat(_T_873[20], _T_873[19]) @[el2_lib.scala 305:69] - node _T_993 = cat(_T_873[23], _T_873[22]) @[el2_lib.scala 305:69] - node _T_994 = cat(_T_993, _T_873[21]) @[el2_lib.scala 305:69] - node _T_995 = cat(_T_994, _T_992) @[el2_lib.scala 305:69] - node _T_996 = cat(_T_873[25], _T_873[24]) @[el2_lib.scala 305:69] - node _T_997 = cat(_T_873[28], _T_873[27]) @[el2_lib.scala 305:69] - node _T_998 = cat(_T_997, _T_873[26]) @[el2_lib.scala 305:69] - node _T_999 = cat(_T_998, _T_996) @[el2_lib.scala 305:69] - node _T_1000 = cat(_T_999, _T_995) @[el2_lib.scala 305:69] - node _T_1001 = cat(_T_873[30], _T_873[29]) @[el2_lib.scala 305:69] - node _T_1002 = cat(_T_873[33], _T_873[32]) @[el2_lib.scala 305:69] - node _T_1003 = cat(_T_1002, _T_873[31]) @[el2_lib.scala 305:69] - node _T_1004 = cat(_T_1003, _T_1001) @[el2_lib.scala 305:69] - node _T_1005 = cat(_T_873[35], _T_873[34]) @[el2_lib.scala 305:69] - node _T_1006 = cat(_T_873[38], _T_873[37]) @[el2_lib.scala 305:69] - node _T_1007 = cat(_T_1006, _T_873[36]) @[el2_lib.scala 305:69] - node _T_1008 = cat(_T_1007, _T_1005) @[el2_lib.scala 305:69] - node _T_1009 = cat(_T_1008, _T_1004) @[el2_lib.scala 305:69] - node _T_1010 = cat(_T_1009, _T_1000) @[el2_lib.scala 305:69] - node _T_1011 = cat(_T_1010, _T_991) @[el2_lib.scala 305:69] - node _T_1012 = xor(_T_1011, _T_972) @[el2_lib.scala 305:76] - node _T_1013 = mux(_T_973, _T_1012, _T_972) @[el2_lib.scala 305:31] - node _T_1014 = bits(_T_1013, 37, 32) @[el2_lib.scala 307:37] - node _T_1015 = bits(_T_1013, 30, 16) @[el2_lib.scala 307:61] - node _T_1016 = bits(_T_1013, 14, 8) @[el2_lib.scala 307:86] - node _T_1017 = bits(_T_1013, 6, 4) @[el2_lib.scala 307:110] - node _T_1018 = bits(_T_1013, 2, 2) @[el2_lib.scala 307:133] - node _T_1019 = cat(_T_1017, _T_1018) @[Cat.scala 29:58] - node _T_1020 = cat(_T_1014, _T_1015) @[Cat.scala 29:58] - node _T_1021 = cat(_T_1020, _T_1016) @[Cat.scala 29:58] - node _T_1022 = cat(_T_1021, _T_1019) @[Cat.scala 29:58] - node _T_1023 = bits(_T_1013, 38, 38) @[el2_lib.scala 308:39] - node _T_1024 = bits(_T_863, 6, 0) @[el2_lib.scala 308:56] - node _T_1025 = eq(_T_1024, UInt<7>("h040")) @[el2_lib.scala 308:62] - node _T_1026 = xor(_T_1023, _T_1025) @[el2_lib.scala 308:44] - node _T_1027 = bits(_T_1013, 31, 31) @[el2_lib.scala 308:102] - node _T_1028 = bits(_T_1013, 15, 15) @[el2_lib.scala 308:124] - node _T_1029 = bits(_T_1013, 7, 7) @[el2_lib.scala 308:146] - node _T_1030 = bits(_T_1013, 3, 3) @[el2_lib.scala 308:167] - node _T_1031 = bits(_T_1013, 1, 0) @[el2_lib.scala 308:188] - node _T_1032 = cat(_T_1029, _T_1030) @[Cat.scala 29:58] - node _T_1033 = cat(_T_1032, _T_1031) @[Cat.scala 29:58] - node _T_1034 = cat(_T_1026, _T_1027) @[Cat.scala 29:58] - node _T_1035 = cat(_T_1034, _T_1028) @[Cat.scala 29:58] - node _T_1036 = cat(_T_1035, _T_1033) @[Cat.scala 29:58] - ic_tag_corrected_ecc_unc[1] <= _T_1036 @[el2_ifu_ic_mem.scala 155:33] - ic_tag_corrected_data_unc[1] <= _T_1022 @[el2_ifu_ic_mem.scala 156:34] - ic_tag_single_ecc_error[1] <= _T_867 @[el2_ifu_ic_mem.scala 157:31] - ic_tag_double_ecc_error[1] <= _T_872 @[el2_ifu_ic_mem.scala 158:32] - node _T_1037 = cat(ic_tag_single_ecc_error[1], ic_tag_single_ecc_error[0]) @[Cat.scala 29:58] - node _T_1038 = cat(ic_tag_double_ecc_error[1], ic_tag_double_ecc_error[0]) @[Cat.scala 29:58] - node ic_tag_way_perr = or(_T_1037, _T_1038) @[el2_ifu_ic_mem.scala 161:88] - node _T_1039 = bits(ic_debug_rd_way_en_ff, 0, 0) @[el2_ifu_ic_mem.scala 164:108] - node _T_1040 = bits(_T_1039, 0, 0) @[Bitwise.scala 72:15] - node _T_1041 = mux(_T_1040, UInt<26>("h03ffffff"), UInt<26>("h00")) @[Bitwise.scala 72:12] - node _T_1042 = and(_T_1041, ic_tag_data_raw_0) @[el2_ifu_ic_mem.scala 164:112] - node _T_1043 = bits(ic_debug_rd_way_en_ff, 1, 1) @[el2_ifu_ic_mem.scala 164:108] - node _T_1044 = bits(_T_1043, 0, 0) @[Bitwise.scala 72:15] - node _T_1045 = mux(_T_1044, UInt<26>("h03ffffff"), UInt<26>("h00")) @[Bitwise.scala 72:12] - node _T_1046 = and(_T_1045, ic_tag_data_raw_1) @[el2_ifu_ic_mem.scala 164:112] - node _T_1047 = or(_T_1042, _T_1046) @[el2_ifu_ic_mem.scala 164:221] - io.ictag_debug_rd_data <= _T_1047 @[el2_ifu_ic_mem.scala 164:26] - node _T_1048 = bits(w_tout[0], 18, 0) @[el2_ifu_ic_mem.scala 165:63] - node _T_1049 = eq(_T_1048, ic_rw_addr_ff) @[el2_ifu_ic_mem.scala 165:83] - node _T_1050 = bits(io.ic_tag_valid, 0, 0) @[el2_ifu_ic_mem.scala 165:116] - node _T_1051 = and(_T_1049, _T_1050) @[el2_ifu_ic_mem.scala 165:100] - node _T_1052 = bits(w_tout[1], 18, 0) @[el2_ifu_ic_mem.scala 165:63] - node _T_1053 = eq(_T_1052, ic_rw_addr_ff) @[el2_ifu_ic_mem.scala 165:83] - node _T_1054 = bits(io.ic_tag_valid, 1, 1) @[el2_ifu_ic_mem.scala 165:116] - node _T_1055 = and(_T_1053, _T_1054) @[el2_ifu_ic_mem.scala 165:100] - node _T_1056 = cat(_T_1055, _T_1051) @[Cat.scala 29:58] - io.ic_rd_hit <= _T_1056 @[el2_ifu_ic_mem.scala 165:16] - node _T_1057 = and(ic_tag_way_perr, io.ic_tag_valid) @[el2_ifu_ic_mem.scala 166:38] - node _T_1058 = orr(_T_1057) @[el2_ifu_ic_mem.scala 166:60] - io.ic_tag_perr <= _T_1058 @[el2_ifu_ic_mem.scala 166:18] - - module EL2_IC_DATA : - input clock : Clock - input reset : Reset - 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>} - - node _T = eq(io.ic_debug_tag_array, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 195:70] - node _T_1 = and(io.ic_debug_rd_en, _T) @[el2_ifu_ic_mem.scala 195:68] - node _T_2 = bits(_T_1, 0, 0) @[Bitwise.scala 72:15] - node _T_3 = mux(_T_2, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node ic_debug_rd_way_en = and(_T_3, io.ic_debug_way) @[el2_ifu_ic_mem.scala 195:94] - node _T_4 = eq(io.ic_debug_tag_array, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 196:70] - node _T_5 = and(io.ic_debug_wr_en, _T_4) @[el2_ifu_ic_mem.scala 196:68] + node ic_debug_rd_way_en = and(_T_3, io.ic_debug_way) @[el2_ifu_ic_mem.scala 42:94] + node _T_4 = eq(io.ic_debug_tag_array, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 43:70] + node _T_5 = and(io.ic_debug_wr_en, _T_4) @[el2_ifu_ic_mem.scala 43:68] node _T_6 = bits(_T_5, 0, 0) @[Bitwise.scala 72:15] node _T_7 = mux(_T_6, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node ic_debug_wr_way_en = and(_T_7, io.ic_debug_way) @[el2_ifu_ic_mem.scala 196:94] - wire ic_bank_wr_data : UInt<71>[2] @[el2_ifu_ic_mem.scala 198:29] + node ic_debug_wr_way_en = and(_T_7, io.ic_debug_way) @[el2_ifu_ic_mem.scala 43:94] + wire ic_bank_wr_data : UInt<71>[2] @[el2_ifu_ic_mem.scala 45:29] wire ic_rd_en_with_debug : UInt<1> ic_rd_en_with_debug <= UInt<1>("h00") - node _T_8 = or(io.ic_debug_rd_en, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 201:45] - node _T_9 = bits(_T_8, 0, 0) @[el2_ifu_ic_mem.scala 201:66] + node _T_8 = or(io.ic_debug_rd_en, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 48:45] + node _T_9 = bits(_T_8, 0, 0) @[el2_ifu_ic_mem.scala 48:66] node _T_10 = cat(io.ic_debug_addr, UInt<2>("h00")) @[Cat.scala 29:58] - node ic_rw_addr_q = mux(_T_9, _T_10, io.ic_rw_addr) @[el2_ifu_ic_mem.scala 201:25] - node _T_11 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 203:38] - node _T_12 = add(_T_11, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 203:79] - node ic_rw_addr_q_inc = tail(_T_12, 1) @[el2_ifu_ic_mem.scala 203:79] - node _T_13 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 205:78] - node _T_14 = eq(_T_13, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 205:113] + node ic_rw_addr_q = mux(_T_9, _T_10, io.ic_rw_addr) @[el2_ifu_ic_mem.scala 48:25] + node _T_11 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 50:38] + node _T_12 = add(_T_11, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 50:79] + node ic_rw_addr_q_inc = tail(_T_12, 1) @[el2_ifu_ic_mem.scala 50:79] + node _T_13 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 52:78] + node _T_14 = eq(_T_13, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 52:113] node _T_15 = bits(_T_14, 0, 0) @[Bitwise.scala 72:15] node _T_16 = mux(_T_15, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_17 = and(ic_debug_wr_way_en, _T_16) @[el2_ifu_ic_mem.scala 205:38] - node ic_b_sb_wren_0 = or(io.ic_wr_en, _T_17) @[el2_ifu_ic_mem.scala 205:17] - node _T_18 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 205:78] - node _T_19 = eq(_T_18, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 205:113] + node _T_17 = and(ic_debug_wr_way_en, _T_16) @[el2_ifu_ic_mem.scala 52:38] + node ic_b_sb_wren_0 = or(io.ic_wr_en, _T_17) @[el2_ifu_ic_mem.scala 52:17] + node _T_18 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 52:78] + node _T_19 = eq(_T_18, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 52:113] node _T_20 = bits(_T_19, 0, 0) @[Bitwise.scala 72:15] node _T_21 = mux(_T_20, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_22 = and(ic_debug_wr_way_en, _T_21) @[el2_ifu_ic_mem.scala 205:38] - node ic_b_sb_wren_1 = or(io.ic_wr_en, _T_22) @[el2_ifu_ic_mem.scala 205:17] - node _T_23 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 206:76] - node _T_24 = eq(_T_23, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 206:111] - node _T_25 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 206:76] - node _T_26 = eq(_T_25, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 206:111] + node _T_22 = and(ic_debug_wr_way_en, _T_21) @[el2_ifu_ic_mem.scala 52:38] + node ic_b_sb_wren_1 = or(io.ic_wr_en, _T_22) @[el2_ifu_ic_mem.scala 52:17] + node _T_23 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 53:76] + node _T_24 = eq(_T_23, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 53:111] + node _T_25 = bits(io.ic_debug_addr, 0, 0) @[el2_ifu_ic_mem.scala 53:76] + node _T_26 = eq(_T_25, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 53:111] node ic_debug_sel_sb = cat(_T_26, _T_24) @[Cat.scala 29:58] - node _T_27 = bits(ic_debug_sel_sb, 0, 0) @[el2_ifu_ic_mem.scala 207:77] - node _T_28 = and(_T_27, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 207:80] - node _T_29 = bits(_T_28, 0, 0) @[el2_ifu_ic_mem.scala 207:100] - node ic_sb_wr_data_0 = mux(_T_29, io.ic_debug_wr_data, ic_bank_wr_data[0]) @[el2_ifu_ic_mem.scala 207:60] - node _T_30 = bits(ic_debug_sel_sb, 1, 1) @[el2_ifu_ic_mem.scala 207:77] - node _T_31 = and(_T_30, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 207:80] - node _T_32 = bits(_T_31, 0, 0) @[el2_ifu_ic_mem.scala 207:100] - node ic_sb_wr_data_1 = mux(_T_32, io.ic_debug_wr_data, ic_bank_wr_data[1]) @[el2_ifu_ic_mem.scala 207:60] - node _T_33 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 209:29] - node _T_34 = bits(_T_33, 0, 0) @[el2_ifu_ic_mem.scala 209:48] - node _T_35 = eq(_T_34, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 209:16] - node _T_36 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 209:63] - node _T_37 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 210:42] - node _T_38 = bits(_T_37, 0, 0) @[el2_ifu_ic_mem.scala 210:62] - node _T_39 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 210:86] - node _T_40 = eq(_T_39, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 210:91] - node _T_41 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 210:103] - node _T_42 = and(_T_40, _T_41) @[el2_ifu_ic_mem.scala 210:98] - node _T_43 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 211:42] - node _T_44 = bits(_T_43, 0, 0) @[el2_ifu_ic_mem.scala 211:61] - node _T_45 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 211:76] - node _T_46 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 212:43] - node _T_47 = eq(_T_46, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 212:30] - node _T_48 = bits(_T_47, 0, 0) @[el2_ifu_ic_mem.scala 212:63] - node _T_49 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 212:87] - node _T_50 = eq(_T_49, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 212:92] - node _T_51 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 212:105] - node _T_52 = and(_T_50, _T_51) @[el2_ifu_ic_mem.scala 212:99] + node _T_27 = bits(ic_debug_sel_sb, 0, 0) @[el2_ifu_ic_mem.scala 54:77] + node _T_28 = and(_T_27, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 54:80] + node _T_29 = bits(_T_28, 0, 0) @[el2_ifu_ic_mem.scala 54:100] + node ic_sb_wr_data_0 = mux(_T_29, io.ic_debug_wr_data, ic_bank_wr_data[0]) @[el2_ifu_ic_mem.scala 54:60] + node _T_30 = bits(ic_debug_sel_sb, 1, 1) @[el2_ifu_ic_mem.scala 54:77] + node _T_31 = and(_T_30, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 54:80] + node _T_32 = bits(_T_31, 0, 0) @[el2_ifu_ic_mem.scala 54:100] + node ic_sb_wr_data_1 = mux(_T_32, io.ic_debug_wr_data, ic_bank_wr_data[1]) @[el2_ifu_ic_mem.scala 54:60] + node _T_33 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 56:29] + node _T_34 = bits(_T_33, 0, 0) @[el2_ifu_ic_mem.scala 56:48] + node _T_35 = eq(_T_34, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 56:16] + node _T_36 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 56:63] + node _T_37 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 57:20] + node _T_38 = bits(_T_37, 0, 0) @[el2_ifu_ic_mem.scala 57:40] + node _T_39 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 57:64] + node _T_40 = eq(_T_39, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 57:69] + node _T_41 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 57:81] + node _T_42 = and(_T_40, _T_41) @[el2_ifu_ic_mem.scala 57:76] + node _T_43 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 58:19] + node _T_44 = bits(_T_43, 0, 0) @[el2_ifu_ic_mem.scala 58:38] + node _T_45 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 58:53] + node _T_46 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 59:21] + node _T_47 = eq(_T_46, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 59:8] + node _T_48 = bits(_T_47, 0, 0) @[el2_ifu_ic_mem.scala 59:41] + node _T_49 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 59:65] + node _T_50 = eq(_T_49, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 59:70] + node _T_51 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 59:83] + node _T_52 = and(_T_50, _T_51) @[el2_ifu_ic_mem.scala 59:77] node _T_53 = mux(_T_35, _T_36, UInt<1>("h00")) @[Mux.scala 27:72] node _T_54 = mux(_T_38, _T_42, UInt<1>("h00")) @[Mux.scala 27:72] node _T_55 = mux(_T_44, _T_45, UInt<1>("h00")) @[Mux.scala 27:72] @@ -1550,27 +86,27 @@ circuit el2_ifu_ic_mem : node _T_59 = or(_T_58, _T_56) @[Mux.scala 27:72] wire _T_60 : UInt<1> @[Mux.scala 27:72] _T_60 <= _T_59 @[Mux.scala 27:72] - node _T_61 = and(_T_60, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 212:117] - node _T_62 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 209:29] - node _T_63 = bits(_T_62, 0, 0) @[el2_ifu_ic_mem.scala 209:48] - node _T_64 = eq(_T_63, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 209:16] - node _T_65 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 209:63] - node _T_66 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 210:42] - node _T_67 = bits(_T_66, 0, 0) @[el2_ifu_ic_mem.scala 210:62] - node _T_68 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 210:86] - node _T_69 = eq(_T_68, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 210:91] - node _T_70 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 210:103] - node _T_71 = and(_T_69, _T_70) @[el2_ifu_ic_mem.scala 210:98] - node _T_72 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 211:42] - node _T_73 = bits(_T_72, 0, 0) @[el2_ifu_ic_mem.scala 211:61] - node _T_74 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 211:76] - node _T_75 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 212:43] - node _T_76 = eq(_T_75, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 212:30] - node _T_77 = bits(_T_76, 0, 0) @[el2_ifu_ic_mem.scala 212:63] - node _T_78 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 212:87] - node _T_79 = eq(_T_78, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 212:92] - node _T_80 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 212:105] - node _T_81 = and(_T_79, _T_80) @[el2_ifu_ic_mem.scala 212:99] + node _T_61 = and(_T_60, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 59:95] + node _T_62 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 56:29] + node _T_63 = bits(_T_62, 0, 0) @[el2_ifu_ic_mem.scala 56:48] + node _T_64 = eq(_T_63, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 56:16] + node _T_65 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 56:63] + node _T_66 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 57:20] + node _T_67 = bits(_T_66, 0, 0) @[el2_ifu_ic_mem.scala 57:40] + node _T_68 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 57:64] + node _T_69 = eq(_T_68, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 57:69] + node _T_70 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 57:81] + node _T_71 = and(_T_69, _T_70) @[el2_ifu_ic_mem.scala 57:76] + node _T_72 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 58:19] + node _T_73 = bits(_T_72, 0, 0) @[el2_ifu_ic_mem.scala 58:38] + node _T_74 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 58:53] + node _T_75 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 59:21] + node _T_76 = eq(_T_75, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 59:8] + node _T_77 = bits(_T_76, 0, 0) @[el2_ifu_ic_mem.scala 59:41] + node _T_78 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 59:65] + node _T_79 = eq(_T_78, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 59:70] + node _T_80 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 59:83] + node _T_81 = and(_T_79, _T_80) @[el2_ifu_ic_mem.scala 59:77] node _T_82 = mux(_T_64, _T_65, UInt<1>("h00")) @[Mux.scala 27:72] node _T_83 = mux(_T_67, _T_71, UInt<1>("h00")) @[Mux.scala 27:72] node _T_84 = mux(_T_73, _T_74, UInt<1>("h00")) @[Mux.scala 27:72] @@ -1580,233 +116,233 @@ circuit el2_ifu_ic_mem : node _T_88 = or(_T_87, _T_85) @[Mux.scala 27:72] wire _T_89 : UInt<1> @[Mux.scala 27:72] _T_89 <= _T_88 @[Mux.scala 27:72] - node _T_90 = and(_T_89, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 212:117] + node _T_90 = and(_T_89, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 59:95] node ic_b_rden = cat(_T_90, _T_61) @[Cat.scala 29:58] - node _T_91 = bits(ic_b_rden, 0, 0) @[el2_ifu_ic_mem.scala 213:89] + node _T_91 = bits(ic_b_rden, 0, 0) @[el2_ifu_ic_mem.scala 60:89] node _T_92 = bits(_T_91, 0, 0) @[Bitwise.scala 72:15] node ic_b_sb_rden_0 = mux(_T_92, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_93 = bits(ic_b_rden, 1, 1) @[el2_ifu_ic_mem.scala 213:89] + node _T_93 = bits(ic_b_rden, 1, 1) @[el2_ifu_ic_mem.scala 60:89] node _T_94 = bits(_T_93, 0, 0) @[Bitwise.scala 72:15] node ic_b_sb_rden_1 = mux(_T_94, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_95 = bits(ic_b_sb_rden_0, 0, 0) @[el2_ifu_ic_mem.scala 215:21] - node _T_96 = or(_T_95, io.clk_override) @[el2_ifu_ic_mem.scala 215:25] - node _T_97 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 215:60] - node _T_98 = or(_T_96, _T_97) @[el2_ifu_ic_mem.scala 215:43] - node _T_99 = bits(ic_b_sb_rden_0, 1, 1) @[el2_ifu_ic_mem.scala 215:21] - node _T_100 = or(_T_99, io.clk_override) @[el2_ifu_ic_mem.scala 215:25] - node _T_101 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 215:60] - node _T_102 = or(_T_100, _T_101) @[el2_ifu_ic_mem.scala 215:43] + node _T_95 = bits(ic_b_sb_rden_0, 0, 0) @[el2_ifu_ic_mem.scala 62:21] + node _T_96 = or(_T_95, io.clk_override) @[el2_ifu_ic_mem.scala 62:25] + node _T_97 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 62:60] + node _T_98 = or(_T_96, _T_97) @[el2_ifu_ic_mem.scala 62:43] + node _T_99 = bits(ic_b_sb_rden_0, 1, 1) @[el2_ifu_ic_mem.scala 62:21] + node _T_100 = or(_T_99, io.clk_override) @[el2_ifu_ic_mem.scala 62:25] + node _T_101 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 62:60] + node _T_102 = or(_T_100, _T_101) @[el2_ifu_ic_mem.scala 62:43] node ic_bank_way_clken_0 = cat(_T_98, _T_102) @[Cat.scala 29:58] - node _T_103 = bits(ic_b_sb_rden_1, 0, 0) @[el2_ifu_ic_mem.scala 215:21] - node _T_104 = or(_T_103, io.clk_override) @[el2_ifu_ic_mem.scala 215:25] - node _T_105 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 215:60] - node _T_106 = or(_T_104, _T_105) @[el2_ifu_ic_mem.scala 215:43] - node _T_107 = bits(ic_b_sb_rden_1, 1, 1) @[el2_ifu_ic_mem.scala 215:21] - node _T_108 = or(_T_107, io.clk_override) @[el2_ifu_ic_mem.scala 215:25] - node _T_109 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 215:60] - node _T_110 = or(_T_108, _T_109) @[el2_ifu_ic_mem.scala 215:43] + node _T_103 = bits(ic_b_sb_rden_1, 0, 0) @[el2_ifu_ic_mem.scala 62:21] + node _T_104 = or(_T_103, io.clk_override) @[el2_ifu_ic_mem.scala 62:25] + node _T_105 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 62:60] + node _T_106 = or(_T_104, _T_105) @[el2_ifu_ic_mem.scala 62:43] + node _T_107 = bits(ic_b_sb_rden_1, 1, 1) @[el2_ifu_ic_mem.scala 62:21] + node _T_108 = or(_T_107, io.clk_override) @[el2_ifu_ic_mem.scala 62:25] + node _T_109 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 62:60] + node _T_110 = or(_T_108, _T_109) @[el2_ifu_ic_mem.scala 62:43] node ic_bank_way_clken_1 = cat(_T_106, _T_110) @[Cat.scala 29:58] - node _T_111 = orr(io.ic_wr_en) @[el2_ifu_ic_mem.scala 217:74] - node _T_112 = eq(_T_111, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 217:61] - node _T_113 = and(io.ic_debug_rd_en, _T_112) @[el2_ifu_ic_mem.scala 217:58] - node _T_114 = or(io.ic_rd_en, _T_113) @[el2_ifu_ic_mem.scala 217:38] - ic_rd_en_with_debug <= _T_114 @[el2_ifu_ic_mem.scala 217:23] - node _T_115 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 219:37] - node _T_116 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 219:71] - node _T_117 = eq(_T_116, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 219:77] - node _T_118 = and(_T_115, _T_117) @[el2_ifu_ic_mem.scala 219:56] - node _T_119 = and(_T_118, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 219:86] - node _T_120 = orr(io.ic_wr_en) @[el2_ifu_ic_mem.scala 219:124] - node _T_121 = eq(_T_120, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 219:110] - node ic_rw_addr_wrap = and(_T_119, _T_121) @[el2_ifu_ic_mem.scala 219:108] - node _T_122 = eq(ic_rw_addr_wrap, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 221:40] - node _T_123 = bits(_T_122, 0, 0) @[el2_ifu_ic_mem.scala 221:58] - node _T_124 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 221:77] - node _T_125 = bits(ic_rw_addr_q, 11, 5) @[el2_ifu_ic_mem.scala 222:21] - node _T_126 = bits(ic_rw_addr_q_inc, 4, 3) @[el2_ifu_ic_mem.scala 222:82] + node _T_111 = orr(io.ic_wr_en) @[el2_ifu_ic_mem.scala 64:74] + node _T_112 = eq(_T_111, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 64:61] + node _T_113 = and(io.ic_debug_rd_en, _T_112) @[el2_ifu_ic_mem.scala 64:58] + node _T_114 = or(io.ic_rd_en, _T_113) @[el2_ifu_ic_mem.scala 64:38] + ic_rd_en_with_debug <= _T_114 @[el2_ifu_ic_mem.scala 64:23] + node _T_115 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 66:37] + node _T_116 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 66:71] + node _T_117 = eq(_T_116, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 66:77] + node _T_118 = and(_T_115, _T_117) @[el2_ifu_ic_mem.scala 66:56] + node _T_119 = and(_T_118, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 66:86] + node _T_120 = orr(io.ic_wr_en) @[el2_ifu_ic_mem.scala 66:124] + node _T_121 = eq(_T_120, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 66:110] + node ic_rw_addr_wrap = and(_T_119, _T_121) @[el2_ifu_ic_mem.scala 66:108] + node _T_122 = eq(ic_rw_addr_wrap, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 68:40] + node _T_123 = bits(_T_122, 0, 0) @[el2_ifu_ic_mem.scala 68:58] + node _T_124 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 68:77] + node _T_125 = bits(ic_rw_addr_q, 11, 5) @[el2_ifu_ic_mem.scala 69:21] + node _T_126 = bits(ic_rw_addr_q_inc, 4, 3) @[el2_ifu_ic_mem.scala 69:82] node _T_127 = cat(_T_125, _T_126) @[Cat.scala 29:58] - node _T_128 = mux(_T_123, _T_124, _T_127) @[el2_ifu_ic_mem.scala 221:38] - node _T_129 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 223:17] - wire ic_rw_addr_bank_q : UInt<9>[2] @[el2_ifu_ic_mem.scala 221:34] - ic_rw_addr_bank_q[0] <= _T_128 @[el2_ifu_ic_mem.scala 221:34] - ic_rw_addr_bank_q[1] <= _T_129 @[el2_ifu_ic_mem.scala 221:34] - reg ic_b_rden_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 225:29] - ic_b_rden_ff <= ic_b_rden @[el2_ifu_ic_mem.scala 225:29] - node _T_130 = bits(ic_rw_addr_q, 4, 0) @[el2_ifu_ic_mem.scala 226:43] - reg ic_rw_addr_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 226:30] - ic_rw_addr_ff <= _T_130 @[el2_ifu_ic_mem.scala 226:30] - reg ic_debug_rd_way_en_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 227:38] - ic_debug_rd_way_en_ff <= ic_debug_rd_way_en @[el2_ifu_ic_mem.scala 227:38] - reg ic_debug_rd_en_ff : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 228:34] - ic_debug_rd_en_ff <= io.ic_debug_rd_en @[el2_ifu_ic_mem.scala 228:34] - node _T_131 = bits(ic_rw_addr_ff, 4, 2) @[el2_ifu_ic_mem.scala 230:43] + node _T_128 = mux(_T_123, _T_124, _T_127) @[el2_ifu_ic_mem.scala 68:38] + node _T_129 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 70:17] + wire ic_rw_addr_bank_q : UInt<9>[2] @[el2_ifu_ic_mem.scala 68:34] + ic_rw_addr_bank_q[0] <= _T_128 @[el2_ifu_ic_mem.scala 68:34] + ic_rw_addr_bank_q[1] <= _T_129 @[el2_ifu_ic_mem.scala 68:34] + reg ic_b_rden_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 72:29] + ic_b_rden_ff <= ic_b_rden @[el2_ifu_ic_mem.scala 72:29] + node _T_130 = bits(ic_rw_addr_q, 4, 0) @[el2_ifu_ic_mem.scala 73:43] + reg ic_rw_addr_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 73:30] + ic_rw_addr_ff <= _T_130 @[el2_ifu_ic_mem.scala 73:30] + reg ic_debug_rd_way_en_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 74:38] + ic_debug_rd_way_en_ff <= ic_debug_rd_way_en @[el2_ifu_ic_mem.scala 74:38] + reg ic_debug_rd_en_ff : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 75:34] + ic_debug_rd_en_ff <= io.ic_debug_rd_en @[el2_ifu_ic_mem.scala 75:34] + node _T_131 = bits(ic_rw_addr_ff, 4, 2) @[el2_ifu_ic_mem.scala 77:43] node _T_132 = mux(UInt<1>("h01"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - node ic_cacheline_wrap_ff = eq(_T_131, _T_132) @[el2_ifu_ic_mem.scala 230:84] - wire wb_dout : UInt<71>[2][2] @[el2_ifu_ic_mem.scala 234:21] - cmem data_mem : UInt<71>[2][2][512] @[el2_ifu_ic_mem.scala 235:21] - wb_dout[0][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 237:19] - node _T_133 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 238:73] - node _T_134 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 239:83] - node _T_135 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 240:26] - node _T_136 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 240:52] - node _T_137 = and(_T_135, _T_136) @[el2_ifu_ic_mem.scala 240:30] - node _T_138 = bits(_T_137, 0, 0) @[el2_ifu_ic_mem.scala 240:57] - when _T_138 : @[el2_ifu_ic_mem.scala 240:64] - infer mport _T_139 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 241:15] - _T_139[0][0] <= ic_sb_wr_data_0 @[el2_ifu_ic_mem.scala 241:44] - skip @[el2_ifu_ic_mem.scala 240:64] - else : @[el2_ifu_ic_mem.scala 242:69] - node _T_140 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 242:33] - node _T_141 = eq(_T_140, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 242:17] - node _T_142 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 242:57] - node _T_143 = and(_T_141, _T_142) @[el2_ifu_ic_mem.scala 242:36] - node _T_144 = bits(_T_143, 0, 0) @[el2_ifu_ic_mem.scala 242:62] - when _T_144 : @[el2_ifu_ic_mem.scala 242:69] - infer mport _T_145 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 243:32] - wb_dout[0][0] <= _T_145[0][0] @[el2_ifu_ic_mem.scala 243:21] - skip @[el2_ifu_ic_mem.scala 242:69] - wb_dout[0][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 237:19] - node _T_146 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 238:73] - node _T_147 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 239:83] - node _T_148 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 240:26] - node _T_149 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 240:52] - node _T_150 = and(_T_148, _T_149) @[el2_ifu_ic_mem.scala 240:30] - node _T_151 = bits(_T_150, 0, 0) @[el2_ifu_ic_mem.scala 240:57] - when _T_151 : @[el2_ifu_ic_mem.scala 240:64] - infer mport _T_152 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 241:15] - _T_152[1][0] <= ic_sb_wr_data_1 @[el2_ifu_ic_mem.scala 241:44] - skip @[el2_ifu_ic_mem.scala 240:64] - else : @[el2_ifu_ic_mem.scala 242:69] - node _T_153 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 242:33] - node _T_154 = eq(_T_153, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 242:17] - node _T_155 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 242:57] - node _T_156 = and(_T_154, _T_155) @[el2_ifu_ic_mem.scala 242:36] - node _T_157 = bits(_T_156, 0, 0) @[el2_ifu_ic_mem.scala 242:62] - when _T_157 : @[el2_ifu_ic_mem.scala 242:69] - infer mport _T_158 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 243:32] - wb_dout[0][1] <= _T_158[1][0] @[el2_ifu_ic_mem.scala 243:21] - skip @[el2_ifu_ic_mem.scala 242:69] - wb_dout[1][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 237:19] - node _T_159 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 238:73] - node _T_160 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 239:83] - node _T_161 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 240:26] - node _T_162 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 240:52] - node _T_163 = and(_T_161, _T_162) @[el2_ifu_ic_mem.scala 240:30] - node _T_164 = bits(_T_163, 0, 0) @[el2_ifu_ic_mem.scala 240:57] - when _T_164 : @[el2_ifu_ic_mem.scala 240:64] - infer mport _T_165 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 241:15] - _T_165[0][1] <= ic_sb_wr_data_0 @[el2_ifu_ic_mem.scala 241:44] - skip @[el2_ifu_ic_mem.scala 240:64] - else : @[el2_ifu_ic_mem.scala 242:69] - node _T_166 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 242:33] - node _T_167 = eq(_T_166, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 242:17] - node _T_168 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 242:57] - node _T_169 = and(_T_167, _T_168) @[el2_ifu_ic_mem.scala 242:36] - node _T_170 = bits(_T_169, 0, 0) @[el2_ifu_ic_mem.scala 242:62] - when _T_170 : @[el2_ifu_ic_mem.scala 242:69] - infer mport _T_171 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 243:32] - wb_dout[1][0] <= _T_171[0][1] @[el2_ifu_ic_mem.scala 243:21] - skip @[el2_ifu_ic_mem.scala 242:69] - wb_dout[1][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 237:19] - node _T_172 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 238:73] - node _T_173 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 239:83] - node _T_174 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 240:26] - node _T_175 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 240:52] - node _T_176 = and(_T_174, _T_175) @[el2_ifu_ic_mem.scala 240:30] - node _T_177 = bits(_T_176, 0, 0) @[el2_ifu_ic_mem.scala 240:57] - when _T_177 : @[el2_ifu_ic_mem.scala 240:64] - infer mport _T_178 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 241:15] - _T_178[1][1] <= ic_sb_wr_data_1 @[el2_ifu_ic_mem.scala 241:44] - skip @[el2_ifu_ic_mem.scala 240:64] - else : @[el2_ifu_ic_mem.scala 242:69] - node _T_179 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 242:33] - node _T_180 = eq(_T_179, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 242:17] - node _T_181 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 242:57] - node _T_182 = and(_T_180, _T_181) @[el2_ifu_ic_mem.scala 242:36] - node _T_183 = bits(_T_182, 0, 0) @[el2_ifu_ic_mem.scala 242:62] - when _T_183 : @[el2_ifu_ic_mem.scala 242:69] - infer mport _T_184 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 243:32] - wb_dout[1][1] <= _T_184[1][1] @[el2_ifu_ic_mem.scala 243:21] - skip @[el2_ifu_ic_mem.scala 242:69] - node _T_185 = bits(ic_debug_rd_en_ff, 0, 0) @[el2_ifu_ic_mem.scala 246:43] - node ic_rd_hit_q = mux(_T_185, ic_debug_rd_way_en_ff, io.ic_rd_hit) @[el2_ifu_ic_mem.scala 246:24] - ic_bank_wr_data[0] <= io.ic_wr_data[0] @[el2_ifu_ic_mem.scala 247:19] - ic_bank_wr_data[1] <= io.ic_wr_data[1] @[el2_ifu_ic_mem.scala 247:19] - node _T_186 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 250:59] - node _T_187 = eq(_T_186, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:95] - node _T_188 = bits(_T_187, 0, 0) @[el2_ifu_ic_mem.scala 250:103] - node _T_189 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 250:59] - node _T_190 = eq(_T_189, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 250:95] - node _T_191 = bits(_T_190, 0, 0) @[el2_ifu_ic_mem.scala 250:103] + node ic_cacheline_wrap_ff = eq(_T_131, _T_132) @[el2_ifu_ic_mem.scala 77:84] + wire wb_dout : UInt<71>[2][2] @[el2_ifu_ic_mem.scala 81:21] + cmem data_mem : UInt<71>[2][2][512] @[el2_ifu_ic_mem.scala 82:21] + wb_dout[0][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 84:19] + node _T_133 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 85:73] + node _T_134 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 86:83] + node _T_135 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 87:26] + node _T_136 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 87:52] + node _T_137 = and(_T_135, _T_136) @[el2_ifu_ic_mem.scala 87:30] + node _T_138 = bits(_T_137, 0, 0) @[el2_ifu_ic_mem.scala 87:57] + when _T_138 : @[el2_ifu_ic_mem.scala 87:64] + infer mport _T_139 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 88:15] + _T_139[0][0] <= ic_sb_wr_data_0 @[el2_ifu_ic_mem.scala 88:44] + skip @[el2_ifu_ic_mem.scala 87:64] + else : @[el2_ifu_ic_mem.scala 89:69] + node _T_140 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 89:33] + node _T_141 = eq(_T_140, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 89:17] + node _T_142 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 89:57] + node _T_143 = and(_T_141, _T_142) @[el2_ifu_ic_mem.scala 89:36] + node _T_144 = bits(_T_143, 0, 0) @[el2_ifu_ic_mem.scala 89:62] + when _T_144 : @[el2_ifu_ic_mem.scala 89:69] + infer mport _T_145 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 90:32] + wb_dout[0][0] <= _T_145[0][0] @[el2_ifu_ic_mem.scala 90:21] + skip @[el2_ifu_ic_mem.scala 89:69] + wb_dout[0][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 84:19] + node _T_146 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 85:73] + node _T_147 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 86:83] + node _T_148 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 87:26] + node _T_149 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 87:52] + node _T_150 = and(_T_148, _T_149) @[el2_ifu_ic_mem.scala 87:30] + node _T_151 = bits(_T_150, 0, 0) @[el2_ifu_ic_mem.scala 87:57] + when _T_151 : @[el2_ifu_ic_mem.scala 87:64] + infer mport _T_152 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 88:15] + _T_152[1][0] <= ic_sb_wr_data_1 @[el2_ifu_ic_mem.scala 88:44] + skip @[el2_ifu_ic_mem.scala 87:64] + else : @[el2_ifu_ic_mem.scala 89:69] + node _T_153 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 89:33] + node _T_154 = eq(_T_153, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 89:17] + node _T_155 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 89:57] + node _T_156 = and(_T_154, _T_155) @[el2_ifu_ic_mem.scala 89:36] + node _T_157 = bits(_T_156, 0, 0) @[el2_ifu_ic_mem.scala 89:62] + when _T_157 : @[el2_ifu_ic_mem.scala 89:69] + infer mport _T_158 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 90:32] + wb_dout[0][1] <= _T_158[1][0] @[el2_ifu_ic_mem.scala 90:21] + skip @[el2_ifu_ic_mem.scala 89:69] + wb_dout[1][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 84:19] + node _T_159 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 85:73] + node _T_160 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 86:83] + node _T_161 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 87:26] + node _T_162 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 87:52] + node _T_163 = and(_T_161, _T_162) @[el2_ifu_ic_mem.scala 87:30] + node _T_164 = bits(_T_163, 0, 0) @[el2_ifu_ic_mem.scala 87:57] + when _T_164 : @[el2_ifu_ic_mem.scala 87:64] + infer mport _T_165 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 88:15] + _T_165[0][1] <= ic_sb_wr_data_0 @[el2_ifu_ic_mem.scala 88:44] + skip @[el2_ifu_ic_mem.scala 87:64] + else : @[el2_ifu_ic_mem.scala 89:69] + node _T_166 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 89:33] + node _T_167 = eq(_T_166, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 89:17] + node _T_168 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 89:57] + node _T_169 = and(_T_167, _T_168) @[el2_ifu_ic_mem.scala 89:36] + node _T_170 = bits(_T_169, 0, 0) @[el2_ifu_ic_mem.scala 89:62] + when _T_170 : @[el2_ifu_ic_mem.scala 89:69] + infer mport _T_171 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 90:32] + wb_dout[1][0] <= _T_171[0][1] @[el2_ifu_ic_mem.scala 90:21] + skip @[el2_ifu_ic_mem.scala 89:69] + wb_dout[1][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 84:19] + node _T_172 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 85:73] + node _T_173 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 86:83] + node _T_174 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 87:26] + node _T_175 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 87:52] + node _T_176 = and(_T_174, _T_175) @[el2_ifu_ic_mem.scala 87:30] + node _T_177 = bits(_T_176, 0, 0) @[el2_ifu_ic_mem.scala 87:57] + when _T_177 : @[el2_ifu_ic_mem.scala 87:64] + infer mport _T_178 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 88:15] + _T_178[1][1] <= ic_sb_wr_data_1 @[el2_ifu_ic_mem.scala 88:44] + skip @[el2_ifu_ic_mem.scala 87:64] + else : @[el2_ifu_ic_mem.scala 89:69] + node _T_179 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 89:33] + node _T_180 = eq(_T_179, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 89:17] + node _T_181 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 89:57] + node _T_182 = and(_T_180, _T_181) @[el2_ifu_ic_mem.scala 89:36] + node _T_183 = bits(_T_182, 0, 0) @[el2_ifu_ic_mem.scala 89:62] + when _T_183 : @[el2_ifu_ic_mem.scala 89:69] + infer mport _T_184 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 90:32] + wb_dout[1][1] <= _T_184[1][1] @[el2_ifu_ic_mem.scala 90:21] + skip @[el2_ifu_ic_mem.scala 89:69] + node _T_185 = bits(ic_debug_rd_en_ff, 0, 0) @[el2_ifu_ic_mem.scala 93:43] + node ic_rd_hit_q = mux(_T_185, ic_debug_rd_way_en_ff, io.ic_rd_hit) @[el2_ifu_ic_mem.scala 93:24] + ic_bank_wr_data[0] <= io.ic_wr_data[0] @[el2_ifu_ic_mem.scala 94:19] + ic_bank_wr_data[1] <= io.ic_wr_data[1] @[el2_ifu_ic_mem.scala 94:19] + node _T_186 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 97:59] + node _T_187 = eq(_T_186, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 97:95] + node _T_188 = bits(_T_187, 0, 0) @[el2_ifu_ic_mem.scala 97:103] + node _T_189 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 97:59] + node _T_190 = eq(_T_189, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 97:95] + node _T_191 = bits(_T_190, 0, 0) @[el2_ifu_ic_mem.scala 97:103] node _T_192 = mux(_T_188, wb_dout[0][0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_193 = mux(_T_191, wb_dout[0][1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_194 = or(_T_192, _T_193) @[Mux.scala 27:72] wire _T_195 : UInt<71> @[Mux.scala 27:72] _T_195 <= _T_194 @[Mux.scala 27:72] - node _T_196 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 251:59] - node _T_197 = sub(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 251:102] - node _T_198 = tail(_T_197, 1) @[el2_ifu_ic_mem.scala 251:102] - node _T_199 = eq(_T_196, _T_198) @[el2_ifu_ic_mem.scala 251:95] - node _T_200 = bits(_T_199, 0, 0) @[el2_ifu_ic_mem.scala 251:109] - node _T_201 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 251:59] - node _T_202 = sub(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 251:102] - node _T_203 = tail(_T_202, 1) @[el2_ifu_ic_mem.scala 251:102] - node _T_204 = eq(_T_201, _T_203) @[el2_ifu_ic_mem.scala 251:95] - node _T_205 = bits(_T_204, 0, 0) @[el2_ifu_ic_mem.scala 251:109] + node _T_196 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 98:59] + node _T_197 = sub(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 98:102] + node _T_198 = tail(_T_197, 1) @[el2_ifu_ic_mem.scala 98:102] + node _T_199 = eq(_T_196, _T_198) @[el2_ifu_ic_mem.scala 98:95] + node _T_200 = bits(_T_199, 0, 0) @[el2_ifu_ic_mem.scala 98:109] + node _T_201 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 98:59] + node _T_202 = sub(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 98:102] + node _T_203 = tail(_T_202, 1) @[el2_ifu_ic_mem.scala 98:102] + node _T_204 = eq(_T_201, _T_203) @[el2_ifu_ic_mem.scala 98:95] + node _T_205 = bits(_T_204, 0, 0) @[el2_ifu_ic_mem.scala 98:109] node _T_206 = mux(_T_200, wb_dout[0][0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_207 = mux(_T_205, wb_dout[0][1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_208 = or(_T_206, _T_207) @[Mux.scala 27:72] wire _T_209 : UInt<71> @[Mux.scala 27:72] _T_209 <= _T_208 @[Mux.scala 27:72] node wb_dout_way_pre_0 = cat(_T_195, _T_209) @[Cat.scala 29:58] - node _T_210 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 250:59] - node _T_211 = eq(_T_210, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:95] - node _T_212 = bits(_T_211, 0, 0) @[el2_ifu_ic_mem.scala 250:103] - node _T_213 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 250:59] - node _T_214 = eq(_T_213, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 250:95] - node _T_215 = bits(_T_214, 0, 0) @[el2_ifu_ic_mem.scala 250:103] + node _T_210 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 97:59] + node _T_211 = eq(_T_210, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 97:95] + node _T_212 = bits(_T_211, 0, 0) @[el2_ifu_ic_mem.scala 97:103] + node _T_213 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 97:59] + node _T_214 = eq(_T_213, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 97:95] + node _T_215 = bits(_T_214, 0, 0) @[el2_ifu_ic_mem.scala 97:103] node _T_216 = mux(_T_212, wb_dout[1][0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_217 = mux(_T_215, wb_dout[1][1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_218 = or(_T_216, _T_217) @[Mux.scala 27:72] wire _T_219 : UInt<71> @[Mux.scala 27:72] _T_219 <= _T_218 @[Mux.scala 27:72] - node _T_220 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 251:59] - node _T_221 = sub(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 251:102] - node _T_222 = tail(_T_221, 1) @[el2_ifu_ic_mem.scala 251:102] - node _T_223 = eq(_T_220, _T_222) @[el2_ifu_ic_mem.scala 251:95] - node _T_224 = bits(_T_223, 0, 0) @[el2_ifu_ic_mem.scala 251:109] - node _T_225 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 251:59] - node _T_226 = sub(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 251:102] - node _T_227 = tail(_T_226, 1) @[el2_ifu_ic_mem.scala 251:102] - node _T_228 = eq(_T_225, _T_227) @[el2_ifu_ic_mem.scala 251:95] - node _T_229 = bits(_T_228, 0, 0) @[el2_ifu_ic_mem.scala 251:109] + node _T_220 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 98:59] + node _T_221 = sub(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 98:102] + node _T_222 = tail(_T_221, 1) @[el2_ifu_ic_mem.scala 98:102] + node _T_223 = eq(_T_220, _T_222) @[el2_ifu_ic_mem.scala 98:95] + node _T_224 = bits(_T_223, 0, 0) @[el2_ifu_ic_mem.scala 98:109] + node _T_225 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 98:59] + node _T_226 = sub(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 98:102] + node _T_227 = tail(_T_226, 1) @[el2_ifu_ic_mem.scala 98:102] + node _T_228 = eq(_T_225, _T_227) @[el2_ifu_ic_mem.scala 98:95] + node _T_229 = bits(_T_228, 0, 0) @[el2_ifu_ic_mem.scala 98:109] node _T_230 = mux(_T_224, wb_dout[1][0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_231 = mux(_T_229, wb_dout[1][1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_232 = or(_T_230, _T_231) @[Mux.scala 27:72] wire _T_233 : UInt<71> @[Mux.scala 27:72] _T_233 <= _T_232 @[Mux.scala 27:72] node wb_dout_way_pre_1 = cat(_T_219, _T_233) @[Cat.scala 29:58] - node _T_234 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 253:78] - node _T_235 = eq(_T_234, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 253:83] - node _T_236 = bits(_T_235, 0, 0) @[el2_ifu_ic_mem.scala 253:91] - node _T_237 = bits(wb_dout_way_pre_0, 63, 0) @[el2_ifu_ic_mem.scala 253:117] - node _T_238 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 254:19] - node _T_239 = eq(_T_238, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 254:24] - node _T_240 = bits(_T_239, 0, 0) @[el2_ifu_ic_mem.scala 254:32] - node _T_241 = bits(wb_dout_way_pre_0, 86, 71) @[el2_ifu_ic_mem.scala 254:62] - node _T_242 = bits(wb_dout_way_pre_0, 63, 16) @[el2_ifu_ic_mem.scala 254:113] + node _T_234 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 100:78] + node _T_235 = eq(_T_234, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 100:83] + node _T_236 = bits(_T_235, 0, 0) @[el2_ifu_ic_mem.scala 100:91] + node _T_237 = bits(wb_dout_way_pre_0, 63, 0) @[el2_ifu_ic_mem.scala 100:117] + node _T_238 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 101:19] + node _T_239 = eq(_T_238, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 101:24] + node _T_240 = bits(_T_239, 0, 0) @[el2_ifu_ic_mem.scala 101:32] + node _T_241 = bits(wb_dout_way_pre_0, 86, 71) @[el2_ifu_ic_mem.scala 101:62] + node _T_242 = bits(wb_dout_way_pre_0, 63, 16) @[el2_ifu_ic_mem.scala 101:113] node _T_243 = cat(_T_241, _T_242) @[Cat.scala 29:58] - node _T_244 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 255:19] - node _T_245 = eq(_T_244, UInt<2>("h02")) @[el2_ifu_ic_mem.scala 255:24] - node _T_246 = bits(_T_245, 0, 0) @[el2_ifu_ic_mem.scala 255:32] - node _T_247 = bits(wb_dout_way_pre_0, 102, 71) @[el2_ifu_ic_mem.scala 255:62] - node _T_248 = bits(wb_dout_way_pre_0, 63, 32) @[el2_ifu_ic_mem.scala 255:113] + node _T_244 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 102:19] + node _T_245 = eq(_T_244, UInt<2>("h02")) @[el2_ifu_ic_mem.scala 102:24] + node _T_246 = bits(_T_245, 0, 0) @[el2_ifu_ic_mem.scala 102:32] + node _T_247 = bits(wb_dout_way_pre_0, 102, 71) @[el2_ifu_ic_mem.scala 102:62] + node _T_248 = bits(wb_dout_way_pre_0, 63, 32) @[el2_ifu_ic_mem.scala 102:113] node _T_249 = cat(_T_247, _T_248) @[Cat.scala 29:58] - node _T_250 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 256:19] - node _T_251 = eq(_T_250, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 256:24] - node _T_252 = bits(_T_251, 0, 0) @[el2_ifu_ic_mem.scala 256:32] - node _T_253 = bits(wb_dout_way_pre_0, 118, 71) @[el2_ifu_ic_mem.scala 256:62] - node _T_254 = bits(wb_dout_way_pre_0, 63, 48) @[el2_ifu_ic_mem.scala 256:113] + node _T_250 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 103:19] + node _T_251 = eq(_T_250, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 103:24] + node _T_252 = bits(_T_251, 0, 0) @[el2_ifu_ic_mem.scala 103:32] + node _T_253 = bits(wb_dout_way_pre_0, 118, 71) @[el2_ifu_ic_mem.scala 103:62] + node _T_254 = bits(wb_dout_way_pre_0, 63, 48) @[el2_ifu_ic_mem.scala 103:113] node _T_255 = cat(_T_253, _T_254) @[Cat.scala 29:58] node _T_256 = mux(_T_236, _T_237, UInt<1>("h00")) @[Mux.scala 27:72] node _T_257 = mux(_T_240, _T_243, UInt<1>("h00")) @[Mux.scala 27:72] @@ -1817,27 +353,27 @@ circuit el2_ifu_ic_mem : node _T_262 = or(_T_261, _T_259) @[Mux.scala 27:72] wire wb_dout_way_0 : UInt<64> @[Mux.scala 27:72] wb_dout_way_0 <= _T_262 @[Mux.scala 27:72] - node _T_263 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 253:78] - node _T_264 = eq(_T_263, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 253:83] - node _T_265 = bits(_T_264, 0, 0) @[el2_ifu_ic_mem.scala 253:91] - node _T_266 = bits(wb_dout_way_pre_1, 63, 0) @[el2_ifu_ic_mem.scala 253:117] - node _T_267 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 254:19] - node _T_268 = eq(_T_267, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 254:24] - node _T_269 = bits(_T_268, 0, 0) @[el2_ifu_ic_mem.scala 254:32] - node _T_270 = bits(wb_dout_way_pre_1, 86, 71) @[el2_ifu_ic_mem.scala 254:62] - node _T_271 = bits(wb_dout_way_pre_1, 63, 16) @[el2_ifu_ic_mem.scala 254:113] + node _T_263 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 100:78] + node _T_264 = eq(_T_263, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 100:83] + node _T_265 = bits(_T_264, 0, 0) @[el2_ifu_ic_mem.scala 100:91] + node _T_266 = bits(wb_dout_way_pre_1, 63, 0) @[el2_ifu_ic_mem.scala 100:117] + node _T_267 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 101:19] + node _T_268 = eq(_T_267, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 101:24] + node _T_269 = bits(_T_268, 0, 0) @[el2_ifu_ic_mem.scala 101:32] + node _T_270 = bits(wb_dout_way_pre_1, 86, 71) @[el2_ifu_ic_mem.scala 101:62] + node _T_271 = bits(wb_dout_way_pre_1, 63, 16) @[el2_ifu_ic_mem.scala 101:113] node _T_272 = cat(_T_270, _T_271) @[Cat.scala 29:58] - node _T_273 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 255:19] - node _T_274 = eq(_T_273, UInt<2>("h02")) @[el2_ifu_ic_mem.scala 255:24] - node _T_275 = bits(_T_274, 0, 0) @[el2_ifu_ic_mem.scala 255:32] - node _T_276 = bits(wb_dout_way_pre_1, 102, 71) @[el2_ifu_ic_mem.scala 255:62] - node _T_277 = bits(wb_dout_way_pre_1, 63, 32) @[el2_ifu_ic_mem.scala 255:113] + node _T_273 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 102:19] + node _T_274 = eq(_T_273, UInt<2>("h02")) @[el2_ifu_ic_mem.scala 102:24] + node _T_275 = bits(_T_274, 0, 0) @[el2_ifu_ic_mem.scala 102:32] + node _T_276 = bits(wb_dout_way_pre_1, 102, 71) @[el2_ifu_ic_mem.scala 102:62] + node _T_277 = bits(wb_dout_way_pre_1, 63, 32) @[el2_ifu_ic_mem.scala 102:113] node _T_278 = cat(_T_276, _T_277) @[Cat.scala 29:58] - node _T_279 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 256:19] - node _T_280 = eq(_T_279, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 256:24] - node _T_281 = bits(_T_280, 0, 0) @[el2_ifu_ic_mem.scala 256:32] - node _T_282 = bits(wb_dout_way_pre_1, 118, 71) @[el2_ifu_ic_mem.scala 256:62] - node _T_283 = bits(wb_dout_way_pre_1, 63, 48) @[el2_ifu_ic_mem.scala 256:113] + node _T_279 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 103:19] + node _T_280 = eq(_T_279, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 103:24] + node _T_281 = bits(_T_280, 0, 0) @[el2_ifu_ic_mem.scala 103:32] + node _T_282 = bits(wb_dout_way_pre_1, 118, 71) @[el2_ifu_ic_mem.scala 103:62] + node _T_283 = bits(wb_dout_way_pre_1, 63, 48) @[el2_ifu_ic_mem.scala 103:113] node _T_284 = cat(_T_282, _T_283) @[Cat.scala 29:58] node _T_285 = mux(_T_265, _T_266, UInt<1>("h00")) @[Mux.scala 27:72] node _T_286 = mux(_T_269, _T_272, UInt<1>("h00")) @[Mux.scala 27:72] @@ -1848,63 +384,63 @@ circuit el2_ifu_ic_mem : node _T_291 = or(_T_290, _T_288) @[Mux.scala 27:72] wire wb_dout_way_1 : UInt<64> @[Mux.scala 27:72] wb_dout_way_1 <= _T_291 @[Mux.scala 27:72] - node _T_292 = bits(io.ic_sel_premux_data, 0, 0) @[el2_ifu_ic_mem.scala 258:92] - node wb_dout_way_with_premux_0 = mux(_T_292, io.ic_premux_data, wb_dout_way_0) @[el2_ifu_ic_mem.scala 258:69] - node _T_293 = bits(io.ic_sel_premux_data, 0, 0) @[el2_ifu_ic_mem.scala 258:92] - node wb_dout_way_with_premux_1 = mux(_T_293, io.ic_premux_data, wb_dout_way_1) @[el2_ifu_ic_mem.scala 258:69] - node _T_294 = bits(ic_rd_hit_q, 0, 0) @[el2_ifu_ic_mem.scala 260:71] - node _T_295 = or(_T_294, io.ic_sel_premux_data) @[el2_ifu_ic_mem.scala 260:75] - node _T_296 = bits(_T_295, 0, 0) @[el2_ifu_ic_mem.scala 260:100] - node _T_297 = bits(ic_rd_hit_q, 1, 1) @[el2_ifu_ic_mem.scala 260:71] - node _T_298 = or(_T_297, io.ic_sel_premux_data) @[el2_ifu_ic_mem.scala 260:75] - node _T_299 = bits(_T_298, 0, 0) @[el2_ifu_ic_mem.scala 260:100] + node _T_292 = bits(io.ic_sel_premux_data, 0, 0) @[el2_ifu_ic_mem.scala 105:92] + node wb_dout_way_with_premux_0 = mux(_T_292, io.ic_premux_data, wb_dout_way_0) @[el2_ifu_ic_mem.scala 105:69] + node _T_293 = bits(io.ic_sel_premux_data, 0, 0) @[el2_ifu_ic_mem.scala 105:92] + node wb_dout_way_with_premux_1 = mux(_T_293, io.ic_premux_data, wb_dout_way_1) @[el2_ifu_ic_mem.scala 105:69] + node _T_294 = bits(ic_rd_hit_q, 0, 0) @[el2_ifu_ic_mem.scala 107:71] + node _T_295 = or(_T_294, io.ic_sel_premux_data) @[el2_ifu_ic_mem.scala 107:75] + node _T_296 = bits(_T_295, 0, 0) @[el2_ifu_ic_mem.scala 107:100] + node _T_297 = bits(ic_rd_hit_q, 1, 1) @[el2_ifu_ic_mem.scala 107:71] + node _T_298 = or(_T_297, io.ic_sel_premux_data) @[el2_ifu_ic_mem.scala 107:75] + node _T_299 = bits(_T_298, 0, 0) @[el2_ifu_ic_mem.scala 107:100] node _T_300 = mux(_T_296, wb_dout_way_with_premux_0, UInt<1>("h00")) @[Mux.scala 27:72] node _T_301 = mux(_T_299, wb_dout_way_with_premux_1, UInt<1>("h00")) @[Mux.scala 27:72] node _T_302 = or(_T_300, _T_301) @[Mux.scala 27:72] wire _T_303 : UInt<64> @[Mux.scala 27:72] _T_303 <= _T_302 @[Mux.scala 27:72] - io.ic_rd_data <= _T_303 @[el2_ifu_ic_mem.scala 260:17] - node _T_304 = bits(ic_rd_hit_q, 0, 0) @[el2_ifu_ic_mem.scala 261:76] - node _T_305 = bits(_T_304, 0, 0) @[el2_ifu_ic_mem.scala 261:80] - node _T_306 = bits(wb_dout_way_pre_0, 70, 0) @[el2_ifu_ic_mem.scala 261:106] - node _T_307 = bits(ic_rd_hit_q, 1, 1) @[el2_ifu_ic_mem.scala 261:76] - node _T_308 = bits(_T_307, 0, 0) @[el2_ifu_ic_mem.scala 261:80] - node _T_309 = bits(wb_dout_way_pre_1, 70, 0) @[el2_ifu_ic_mem.scala 261:106] + io.ic_rd_data <= _T_303 @[el2_ifu_ic_mem.scala 107:17] + node _T_304 = bits(ic_rd_hit_q, 0, 0) @[el2_ifu_ic_mem.scala 108:76] + node _T_305 = bits(_T_304, 0, 0) @[el2_ifu_ic_mem.scala 108:80] + node _T_306 = bits(wb_dout_way_pre_0, 70, 0) @[el2_ifu_ic_mem.scala 108:106] + node _T_307 = bits(ic_rd_hit_q, 1, 1) @[el2_ifu_ic_mem.scala 108:76] + node _T_308 = bits(_T_307, 0, 0) @[el2_ifu_ic_mem.scala 108:80] + node _T_309 = bits(wb_dout_way_pre_1, 70, 0) @[el2_ifu_ic_mem.scala 108:106] node _T_310 = mux(_T_305, _T_306, UInt<1>("h00")) @[Mux.scala 27:72] node _T_311 = mux(_T_308, _T_309, UInt<1>("h00")) @[Mux.scala 27:72] node _T_312 = or(_T_310, _T_311) @[Mux.scala 27:72] wire _T_313 : UInt<71> @[Mux.scala 27:72] _T_313 <= _T_312 @[Mux.scala 27:72] - io.ic_debug_rd_data <= _T_313 @[el2_ifu_ic_mem.scala 261:23] - node _T_314 = bits(ic_rd_hit_q, 0, 0) @[el2_ifu_ic_mem.scala 262:71] - node _T_315 = bits(_T_314, 0, 0) @[el2_ifu_ic_mem.scala 262:75] - node _T_316 = bits(ic_rd_hit_q, 1, 1) @[el2_ifu_ic_mem.scala 262:71] - node _T_317 = bits(_T_316, 0, 0) @[el2_ifu_ic_mem.scala 262:75] + io.ic_debug_rd_data <= _T_313 @[el2_ifu_ic_mem.scala 108:23] + node _T_314 = bits(ic_rd_hit_q, 0, 0) @[el2_ifu_ic_mem.scala 109:71] + node _T_315 = bits(_T_314, 0, 0) @[el2_ifu_ic_mem.scala 109:75] + node _T_316 = bits(ic_rd_hit_q, 1, 1) @[el2_ifu_ic_mem.scala 109:71] + node _T_317 = bits(_T_316, 0, 0) @[el2_ifu_ic_mem.scala 109:75] node _T_318 = mux(_T_315, wb_dout_way_pre_0, UInt<1>("h00")) @[Mux.scala 27:72] node _T_319 = mux(_T_317, wb_dout_way_pre_1, UInt<1>("h00")) @[Mux.scala 27:72] node _T_320 = or(_T_318, _T_319) @[Mux.scala 27:72] wire wb_dout_ecc : UInt<142> @[Mux.scala 27:72] wb_dout_ecc <= _T_320 @[Mux.scala 27:72] - node _T_321 = orr(io.ic_rd_hit) @[el2_ifu_ic_mem.scala 264:75] - node _T_322 = eq(ic_cacheline_wrap_ff, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 264:103] - node _T_323 = bits(ic_b_rden_ff, 1, 0) @[el2_ifu_ic_mem.scala 264:140] + node _T_321 = orr(io.ic_rd_hit) @[el2_ifu_ic_mem.scala 111:75] + node _T_322 = eq(ic_cacheline_wrap_ff, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 111:103] + node _T_323 = bits(ic_b_rden_ff, 1, 0) @[el2_ifu_ic_mem.scala 111:140] node _T_324 = mux(UInt<1>("h01"), UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_325 = eq(_T_323, _T_324) @[el2_ifu_ic_mem.scala 264:163] - node _T_326 = and(_T_322, _T_325) @[el2_ifu_ic_mem.scala 264:125] - node _T_327 = or(UInt<1>("h00"), _T_326) @[el2_ifu_ic_mem.scala 264:100] - node bank_check_en_0 = and(_T_321, _T_327) @[el2_ifu_ic_mem.scala 264:79] - node _T_328 = orr(io.ic_rd_hit) @[el2_ifu_ic_mem.scala 264:75] - node _T_329 = eq(ic_cacheline_wrap_ff, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 264:103] - node _T_330 = bits(ic_b_rden_ff, 1, 0) @[el2_ifu_ic_mem.scala 264:140] + node _T_325 = eq(_T_323, _T_324) @[el2_ifu_ic_mem.scala 111:163] + node _T_326 = and(_T_322, _T_325) @[el2_ifu_ic_mem.scala 111:125] + node _T_327 = or(UInt<1>("h00"), _T_326) @[el2_ifu_ic_mem.scala 111:100] + node bank_check_en_0 = and(_T_321, _T_327) @[el2_ifu_ic_mem.scala 111:79] + node _T_328 = orr(io.ic_rd_hit) @[el2_ifu_ic_mem.scala 111:75] + node _T_329 = eq(ic_cacheline_wrap_ff, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 111:103] + node _T_330 = bits(ic_b_rden_ff, 1, 0) @[el2_ifu_ic_mem.scala 111:140] node _T_331 = mux(UInt<1>("h01"), UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_332 = eq(_T_330, _T_331) @[el2_ifu_ic_mem.scala 264:163] - node _T_333 = and(_T_329, _T_332) @[el2_ifu_ic_mem.scala 264:125] - node _T_334 = or(UInt<1>("h00"), _T_333) @[el2_ifu_ic_mem.scala 264:100] - node bank_check_en_1 = and(_T_328, _T_334) @[el2_ifu_ic_mem.scala 264:79] - node wb_dout_ecc_bank_0 = bits(wb_dout_ecc, 70, 0) @[el2_ifu_ic_mem.scala 265:72] - node wb_dout_ecc_bank_1 = bits(wb_dout_ecc, 141, 71) @[el2_ifu_ic_mem.scala 265:72] - node _T_335 = bits(wb_dout_ecc_bank_0, 63, 0) @[el2_ifu_ic_mem.scala 268:104] - node _T_336 = bits(wb_dout_ecc_bank_0, 70, 64) @[el2_ifu_ic_mem.scala 268:130] + node _T_332 = eq(_T_330, _T_331) @[el2_ifu_ic_mem.scala 111:163] + node _T_333 = and(_T_329, _T_332) @[el2_ifu_ic_mem.scala 111:125] + node _T_334 = or(UInt<1>("h00"), _T_333) @[el2_ifu_ic_mem.scala 111:100] + node bank_check_en_1 = and(_T_328, _T_334) @[el2_ifu_ic_mem.scala 111:79] + node wb_dout_ecc_bank_0 = bits(wb_dout_ecc, 70, 0) @[el2_ifu_ic_mem.scala 112:72] + node wb_dout_ecc_bank_1 = bits(wb_dout_ecc, 141, 71) @[el2_ifu_ic_mem.scala 112:72] + node _T_335 = bits(wb_dout_ecc_bank_0, 63, 0) @[el2_ifu_ic_mem.scala 115:104] + node _T_336 = bits(wb_dout_ecc_bank_0, 70, 64) @[el2_ifu_ic_mem.scala 115:130] wire _T_337 : UInt<1>[35] @[el2_lib.scala 357:18] wire _T_338 : UInt<1>[35] @[el2_lib.scala 358:18] wire _T_339 : UInt<1>[35] @[el2_lib.scala 359:18] @@ -2550,8 +1086,8 @@ circuit el2_ifu_ic_mem : node _T_774 = bits(_T_773, 6, 0) @[el2_lib.scala 380:36] node _T_775 = neq(_T_774, UInt<1>("h00")) @[el2_lib.scala 380:42] node _T_776 = and(bank_check_en_0, _T_775) @[el2_lib.scala 380:24] - node _T_777 = bits(wb_dout_ecc_bank_1, 63, 0) @[el2_ifu_ic_mem.scala 268:104] - node _T_778 = bits(wb_dout_ecc_bank_1, 70, 64) @[el2_ifu_ic_mem.scala 268:130] + node _T_777 = bits(wb_dout_ecc_bank_1, 63, 0) @[el2_ifu_ic_mem.scala 115:104] + node _T_778 = bits(wb_dout_ecc_bank_1, 70, 64) @[el2_ifu_ic_mem.scala 115:130] wire _T_779 : UInt<1>[35] @[el2_lib.scala 357:18] wire _T_780 : UInt<1>[35] @[el2_lib.scala 358:18] wire _T_781 : UInt<1>[35] @[el2_lib.scala 359:18] @@ -3198,111 +1734,56 @@ circuit el2_ifu_ic_mem : node _T_1217 = neq(_T_1216, UInt<1>("h00")) @[el2_lib.scala 380:42] node _T_1218 = and(bank_check_en_1, _T_1217) @[el2_lib.scala 380:24] node _T_1219 = cat(_T_1218, _T_776) @[Cat.scala 29:58] - io.ic_eccerr <= _T_1219 @[el2_ifu_ic_mem.scala 268:16] - wire ic_parerr_bank : UInt<1>[4][2] @[el2_ifu_ic_mem.scala 269:28] - node _T_1220 = bits(wb_dout_ecc_bank_0, 15, 0) @[el2_ifu_ic_mem.scala 270:109] - node _T_1221 = bits(wb_dout_ecc_bank_0, 64, 64) @[el2_ifu_ic_mem.scala 270:148] + io.ic_eccerr <= _T_1219 @[el2_ifu_ic_mem.scala 115:16] + wire ic_parerr_bank : UInt<1>[4][2] @[el2_ifu_ic_mem.scala 116:28] + node _T_1220 = bits(wb_dout_ecc_bank_0, 15, 0) @[el2_ifu_ic_mem.scala 117:109] + node _T_1221 = bits(wb_dout_ecc_bank_0, 64, 64) @[el2_ifu_ic_mem.scala 117:148] node _T_1222 = xorr(_T_1220) @[el2_lib.scala 200:14] node _T_1223 = xor(_T_1222, _T_1221) @[el2_lib.scala 200:27] - ic_parerr_bank[0][0] <= _T_1223 @[el2_ifu_ic_mem.scala 270:69] - node _T_1224 = bits(wb_dout_ecc_bank_0, 31, 16) @[el2_ifu_ic_mem.scala 270:109] - node _T_1225 = bits(wb_dout_ecc_bank_0, 65, 65) @[el2_ifu_ic_mem.scala 270:148] + ic_parerr_bank[0][0] <= _T_1223 @[el2_ifu_ic_mem.scala 117:69] + node _T_1224 = bits(wb_dout_ecc_bank_0, 31, 16) @[el2_ifu_ic_mem.scala 117:109] + node _T_1225 = bits(wb_dout_ecc_bank_0, 65, 65) @[el2_ifu_ic_mem.scala 117:148] node _T_1226 = xorr(_T_1224) @[el2_lib.scala 200:14] node _T_1227 = xor(_T_1226, _T_1225) @[el2_lib.scala 200:27] - ic_parerr_bank[0][1] <= _T_1227 @[el2_ifu_ic_mem.scala 270:69] - node _T_1228 = bits(wb_dout_ecc_bank_0, 47, 32) @[el2_ifu_ic_mem.scala 270:109] - node _T_1229 = bits(wb_dout_ecc_bank_0, 66, 66) @[el2_ifu_ic_mem.scala 270:148] + ic_parerr_bank[0][1] <= _T_1227 @[el2_ifu_ic_mem.scala 117:69] + node _T_1228 = bits(wb_dout_ecc_bank_0, 47, 32) @[el2_ifu_ic_mem.scala 117:109] + node _T_1229 = bits(wb_dout_ecc_bank_0, 66, 66) @[el2_ifu_ic_mem.scala 117:148] node _T_1230 = xorr(_T_1228) @[el2_lib.scala 200:14] node _T_1231 = xor(_T_1230, _T_1229) @[el2_lib.scala 200:27] - ic_parerr_bank[0][2] <= _T_1231 @[el2_ifu_ic_mem.scala 270:69] - node _T_1232 = bits(wb_dout_ecc_bank_0, 63, 48) @[el2_ifu_ic_mem.scala 270:109] - node _T_1233 = bits(wb_dout_ecc_bank_0, 67, 67) @[el2_ifu_ic_mem.scala 270:148] + ic_parerr_bank[0][2] <= _T_1231 @[el2_ifu_ic_mem.scala 117:69] + node _T_1232 = bits(wb_dout_ecc_bank_0, 63, 48) @[el2_ifu_ic_mem.scala 117:109] + node _T_1233 = bits(wb_dout_ecc_bank_0, 67, 67) @[el2_ifu_ic_mem.scala 117:148] node _T_1234 = xorr(_T_1232) @[el2_lib.scala 200:14] node _T_1235 = xor(_T_1234, _T_1233) @[el2_lib.scala 200:27] - ic_parerr_bank[0][3] <= _T_1235 @[el2_ifu_ic_mem.scala 270:69] - node _T_1236 = bits(wb_dout_ecc_bank_1, 15, 0) @[el2_ifu_ic_mem.scala 270:109] - node _T_1237 = bits(wb_dout_ecc_bank_1, 64, 64) @[el2_ifu_ic_mem.scala 270:148] + ic_parerr_bank[0][3] <= _T_1235 @[el2_ifu_ic_mem.scala 117:69] + node _T_1236 = bits(wb_dout_ecc_bank_1, 15, 0) @[el2_ifu_ic_mem.scala 117:109] + node _T_1237 = bits(wb_dout_ecc_bank_1, 64, 64) @[el2_ifu_ic_mem.scala 117:148] node _T_1238 = xorr(_T_1236) @[el2_lib.scala 200:14] node _T_1239 = xor(_T_1238, _T_1237) @[el2_lib.scala 200:27] - ic_parerr_bank[1][0] <= _T_1239 @[el2_ifu_ic_mem.scala 270:69] - node _T_1240 = bits(wb_dout_ecc_bank_1, 31, 16) @[el2_ifu_ic_mem.scala 270:109] - node _T_1241 = bits(wb_dout_ecc_bank_1, 65, 65) @[el2_ifu_ic_mem.scala 270:148] + ic_parerr_bank[1][0] <= _T_1239 @[el2_ifu_ic_mem.scala 117:69] + node _T_1240 = bits(wb_dout_ecc_bank_1, 31, 16) @[el2_ifu_ic_mem.scala 117:109] + node _T_1241 = bits(wb_dout_ecc_bank_1, 65, 65) @[el2_ifu_ic_mem.scala 117:148] node _T_1242 = xorr(_T_1240) @[el2_lib.scala 200:14] node _T_1243 = xor(_T_1242, _T_1241) @[el2_lib.scala 200:27] - ic_parerr_bank[1][1] <= _T_1243 @[el2_ifu_ic_mem.scala 270:69] - node _T_1244 = bits(wb_dout_ecc_bank_1, 47, 32) @[el2_ifu_ic_mem.scala 270:109] - node _T_1245 = bits(wb_dout_ecc_bank_1, 66, 66) @[el2_ifu_ic_mem.scala 270:148] + ic_parerr_bank[1][1] <= _T_1243 @[el2_ifu_ic_mem.scala 117:69] + node _T_1244 = bits(wb_dout_ecc_bank_1, 47, 32) @[el2_ifu_ic_mem.scala 117:109] + node _T_1245 = bits(wb_dout_ecc_bank_1, 66, 66) @[el2_ifu_ic_mem.scala 117:148] node _T_1246 = xorr(_T_1244) @[el2_lib.scala 200:14] node _T_1247 = xor(_T_1246, _T_1245) @[el2_lib.scala 200:27] - ic_parerr_bank[1][2] <= _T_1247 @[el2_ifu_ic_mem.scala 270:69] - node _T_1248 = bits(wb_dout_ecc_bank_1, 63, 48) @[el2_ifu_ic_mem.scala 270:109] - node _T_1249 = bits(wb_dout_ecc_bank_1, 67, 67) @[el2_ifu_ic_mem.scala 270:148] + ic_parerr_bank[1][2] <= _T_1247 @[el2_ifu_ic_mem.scala 117:69] + node _T_1248 = bits(wb_dout_ecc_bank_1, 63, 48) @[el2_ifu_ic_mem.scala 117:109] + node _T_1249 = bits(wb_dout_ecc_bank_1, 67, 67) @[el2_ifu_ic_mem.scala 117:148] node _T_1250 = xorr(_T_1248) @[el2_lib.scala 200:14] node _T_1251 = xor(_T_1250, _T_1249) @[el2_lib.scala 200:27] - ic_parerr_bank[1][3] <= _T_1251 @[el2_ifu_ic_mem.scala 270:69] - node _T_1252 = or(ic_parerr_bank[0][0], ic_parerr_bank[0][1]) @[el2_ifu_ic_mem.scala 272:49] - node _T_1253 = or(_T_1252, ic_parerr_bank[0][2]) @[el2_ifu_ic_mem.scala 272:49] - node _T_1254 = or(_T_1253, ic_parerr_bank[0][3]) @[el2_ifu_ic_mem.scala 272:49] - node _T_1255 = and(_T_1254, bank_check_en_0) @[el2_ifu_ic_mem.scala 272:53] - node _T_1256 = or(ic_parerr_bank[1][0], ic_parerr_bank[1][1]) @[el2_ifu_ic_mem.scala 272:99] - node _T_1257 = or(_T_1256, ic_parerr_bank[1][2]) @[el2_ifu_ic_mem.scala 272:99] - node _T_1258 = or(_T_1257, ic_parerr_bank[1][3]) @[el2_ifu_ic_mem.scala 272:99] - node _T_1259 = and(_T_1258, bank_check_en_1) @[el2_ifu_ic_mem.scala 272:103] + ic_parerr_bank[1][3] <= _T_1251 @[el2_ifu_ic_mem.scala 117:69] + node _T_1252 = or(ic_parerr_bank[0][0], ic_parerr_bank[0][1]) @[el2_ifu_ic_mem.scala 119:49] + node _T_1253 = or(_T_1252, ic_parerr_bank[0][2]) @[el2_ifu_ic_mem.scala 119:49] + node _T_1254 = or(_T_1253, ic_parerr_bank[0][3]) @[el2_ifu_ic_mem.scala 119:49] + node _T_1255 = and(_T_1254, bank_check_en_0) @[el2_ifu_ic_mem.scala 119:53] + node _T_1256 = or(ic_parerr_bank[1][0], ic_parerr_bank[1][1]) @[el2_ifu_ic_mem.scala 119:99] + node _T_1257 = or(_T_1256, ic_parerr_bank[1][2]) @[el2_ifu_ic_mem.scala 119:99] + node _T_1258 = or(_T_1257, ic_parerr_bank[1][3]) @[el2_ifu_ic_mem.scala 119:99] + node _T_1259 = and(_T_1258, bank_check_en_1) @[el2_ifu_ic_mem.scala 119:103] node _T_1260 = cat(_T_1255, _T_1259) @[Cat.scala 29:58] - io.ic_parerr <= _T_1260 @[el2_ifu_ic_mem.scala 272:16] - - module el2_ifu_ic_mem : - input clock : Clock - input reset : UInt<1> - output io : {flip scan_mode : UInt<1>, flip clk_override : UInt<1>, flip dec_tlu_core_ecc_disable : UInt<1>, flip ic_rw_addr : UInt<31>, flip ic_wr_en : UInt<2>, flip ic_rd_en : UInt<1>, 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_tag_valid : UInt<2>, flip ic_debug_wr_data : UInt<71>, flip ic_wr_data : UInt<71>[2], ic_rd_data : UInt<64>, ic_debug_rd_data : UInt<71>, ictag_debug_rd_data : UInt<26>, ic_eccerr : UInt<2>, ic_parerr : UInt<2>, ic_rd_hit : UInt<2>, ic_tag_perr : UInt<1>} - - io.ic_tag_perr <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 34:18] - io.ic_rd_hit <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 35:16] - io.ic_parerr <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 36:16] - io.ic_eccerr <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 37:16] - io.ictag_debug_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 38:26] - io.ic_debug_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 39:23] - io.ic_rd_data <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 40:17] - inst ic_tag_inst of EL2_IC_TAG @[el2_ifu_ic_mem.scala 41:27] - ic_tag_inst.clock <= clock - ic_tag_inst.reset <= reset - ic_tag_inst.io.ic_tag_valid <= io.ic_tag_valid @[el2_ifu_ic_mem.scala 43:31] - ic_tag_inst.io.dec_tlu_core_ecc_disable <= io.dec_tlu_core_ecc_disable @[el2_ifu_ic_mem.scala 44:43] - ic_tag_inst.io.clk_override <= io.clk_override @[el2_ifu_ic_mem.scala 45:31] - ic_tag_inst.io.ic_rw_addr <= io.ic_rw_addr @[el2_ifu_ic_mem.scala 46:29] - ic_tag_inst.io.ic_wr_en <= io.ic_wr_en @[el2_ifu_ic_mem.scala 47:27] - ic_tag_inst.io.ic_rd_en <= io.ic_rd_en @[el2_ifu_ic_mem.scala 48:27] - ic_tag_inst.io.ic_debug_addr <= io.ic_debug_addr @[el2_ifu_ic_mem.scala 49:32] - ic_tag_inst.io.ic_debug_rd_en <= io.ic_debug_rd_en @[el2_ifu_ic_mem.scala 50:33] - ic_tag_inst.io.ic_debug_wr_en <= io.ic_debug_wr_en @[el2_ifu_ic_mem.scala 51:33] - ic_tag_inst.io.ic_debug_tag_array <= io.ic_debug_tag_array @[el2_ifu_ic_mem.scala 52:37] - ic_tag_inst.io.ic_debug_way <= io.ic_debug_way @[el2_ifu_ic_mem.scala 53:31] - io.ictag_debug_rd_data <= ic_tag_inst.io.ictag_debug_rd_data @[el2_ifu_ic_mem.scala 54:26] - ic_tag_inst.io.ic_debug_wr_data <= io.ic_debug_wr_data @[el2_ifu_ic_mem.scala 55:35] - io.ic_rd_hit <= ic_tag_inst.io.ic_rd_hit @[el2_ifu_ic_mem.scala 56:16] - io.ic_tag_perr <= ic_tag_inst.io.ic_tag_perr @[el2_ifu_ic_mem.scala 57:18] - ic_tag_inst.io.scan_mode <= io.scan_mode @[el2_ifu_ic_mem.scala 58:28] - inst ic_data_inst of EL2_IC_DATA @[el2_ifu_ic_mem.scala 59:28] - ic_data_inst.clock <= clock - ic_data_inst.reset <= reset - ic_data_inst.io.clk_override <= io.clk_override @[el2_ifu_ic_mem.scala 60:32] - ic_data_inst.io.ic_rw_addr <= io.ic_rw_addr @[el2_ifu_ic_mem.scala 62:30] - ic_data_inst.io.ic_wr_en <= io.ic_wr_en @[el2_ifu_ic_mem.scala 63:28] - ic_data_inst.io.ic_rd_en <= io.ic_rd_en @[el2_ifu_ic_mem.scala 64:28] - ic_data_inst.io.ic_wr_data[0] <= io.ic_wr_data[0] @[el2_ifu_ic_mem.scala 66:30] - ic_data_inst.io.ic_wr_data[1] <= io.ic_wr_data[1] @[el2_ifu_ic_mem.scala 66:30] - io.ic_rd_data <= ic_data_inst.io.ic_rd_data @[el2_ifu_ic_mem.scala 67:17] - ic_data_inst.io.ic_debug_wr_data <= io.ic_debug_wr_data @[el2_ifu_ic_mem.scala 68:36] - io.ic_debug_rd_data <= ic_data_inst.io.ic_debug_rd_data @[el2_ifu_ic_mem.scala 69:23] - io.ic_parerr <= ic_data_inst.io.ic_parerr @[el2_ifu_ic_mem.scala 70:16] - io.ic_eccerr <= ic_data_inst.io.ic_eccerr @[el2_ifu_ic_mem.scala 71:16] - ic_data_inst.io.ic_debug_addr <= io.ic_debug_addr @[el2_ifu_ic_mem.scala 72:33] - ic_data_inst.io.ic_debug_rd_en <= io.ic_debug_rd_en @[el2_ifu_ic_mem.scala 73:34] - ic_data_inst.io.ic_debug_wr_en <= io.ic_debug_wr_en @[el2_ifu_ic_mem.scala 74:34] - ic_data_inst.io.ic_debug_tag_array <= io.ic_debug_tag_array @[el2_ifu_ic_mem.scala 75:38] - ic_data_inst.io.ic_debug_way <= io.ic_debug_way @[el2_ifu_ic_mem.scala 76:32] - ic_data_inst.io.ic_premux_data <= io.ic_premux_data @[el2_ifu_ic_mem.scala 77:34] - ic_data_inst.io.ic_sel_premux_data <= io.ic_sel_premux_data @[el2_ifu_ic_mem.scala 78:38] - ic_data_inst.io.ic_rd_hit <= io.ic_rd_hit @[el2_ifu_ic_mem.scala 80:29] - ic_data_inst.io.scan_mode <= io.scan_mode @[el2_ifu_ic_mem.scala 81:29] + io.ic_parerr <= _T_1260 @[el2_ifu_ic_mem.scala 119:16] diff --git a/el2_ifu_ic_mem.v b/el2_ifu_ic_mem.v index f1268800..2c94e1a0 100644 --- a/el2_ifu_ic_mem.v +++ b/el2_ifu_ic_mem.v @@ -1,292 +1,12 @@ -module EL2_IC_TAG( +module el2_ifu_ic_mem( input clock, input reset, + input io_scan_mode, input io_clk_override, input io_dec_tlu_core_ecc_disable, - input [28:0] io_ic_rw_addr, - input [1:0] io_ic_wr_en, - input [1:0] io_ic_tag_valid, - input io_ic_rd_en, - input [9:0] io_ic_debug_addr, - input io_ic_debug_rd_en, - input io_ic_debug_wr_en, - input io_ic_debug_tag_array, - input [1:0] io_ic_debug_way, - output [25:0] io_ictag_debug_rd_data, - input [70:0] io_ic_debug_wr_data, - output [1:0] io_ic_rd_hit, - output io_ic_tag_perr -); -`ifdef RANDOMIZE_MEM_INIT - reg [31:0] _RAND_0; - reg [31:0] _RAND_1; -`endif // RANDOMIZE_MEM_INIT -`ifdef RANDOMIZE_REG_INIT - reg [31:0] _RAND_2; - reg [31:0] _RAND_3; - reg [31:0] _RAND_4; -`endif // RANDOMIZE_REG_INIT - reg [25:0] tag_mem_0 [0:127]; // @[el2_ifu_ic_mem.scala 136:20] - wire [25:0] tag_mem_0__T_250_data; // @[el2_ifu_ic_mem.scala 136:20] - wire [6:0] tag_mem_0__T_250_addr; // @[el2_ifu_ic_mem.scala 136:20] - wire [25:0] tag_mem_0__T_254_data; // @[el2_ifu_ic_mem.scala 136:20] - wire [6:0] tag_mem_0__T_254_addr; // @[el2_ifu_ic_mem.scala 136:20] - wire [25:0] tag_mem_0__T_238_data; // @[el2_ifu_ic_mem.scala 136:20] - wire [6:0] tag_mem_0__T_238_addr; // @[el2_ifu_ic_mem.scala 136:20] - wire tag_mem_0__T_238_mask; // @[el2_ifu_ic_mem.scala 136:20] - wire tag_mem_0__T_238_en; // @[el2_ifu_ic_mem.scala 136:20] - reg [25:0] tag_mem_1 [0:127]; // @[el2_ifu_ic_mem.scala 136:20] - wire [25:0] tag_mem_1__T_250_data; // @[el2_ifu_ic_mem.scala 136:20] - wire [6:0] tag_mem_1__T_250_addr; // @[el2_ifu_ic_mem.scala 136:20] - wire [25:0] tag_mem_1__T_254_data; // @[el2_ifu_ic_mem.scala 136:20] - wire [6:0] tag_mem_1__T_254_addr; // @[el2_ifu_ic_mem.scala 136:20] - wire [25:0] tag_mem_1__T_238_data; // @[el2_ifu_ic_mem.scala 136:20] - wire [6:0] tag_mem_1__T_238_addr; // @[el2_ifu_ic_mem.scala 136:20] - wire tag_mem_1__T_238_mask; // @[el2_ifu_ic_mem.scala 136:20] - wire tag_mem_1__T_238_en; // @[el2_ifu_ic_mem.scala 136:20] - wire _T_1 = io_ic_rw_addr[2:1] == 2'h1; // @[el2_ifu_ic_mem.scala 110:95] - wire [1:0] _T_3 = _T_1 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] - wire [1:0] ic_tag_wren = io_ic_wr_en & _T_3; // @[el2_ifu_ic_mem.scala 110:33] - wire _T_4 = io_ic_rd_en | io_clk_override; // @[el2_ifu_ic_mem.scala 111:55] - wire [1:0] _T_6 = _T_4 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] - wire [1:0] _T_7 = _T_6 | io_ic_wr_en; // @[el2_ifu_ic_mem.scala 111:73] - wire _T_14 = io_ic_debug_wr_en & io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 119:65] - wire [1:0] _T_16 = _T_14 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] - wire [1:0] ic_debug_wr_way_en = _T_16 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 119:90] - wire [1:0] _T_8 = _T_7 | ic_debug_wr_way_en; // @[el2_ifu_ic_mem.scala 111:87] - wire _T_10 = io_ic_debug_rd_en & io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 118:65] - wire [1:0] _T_12 = _T_10 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] - wire [1:0] ic_debug_rd_way_en = _T_12 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 118:90] - wire [1:0] ic_tag_clken = _T_8 | ic_debug_rd_way_en; // @[el2_ifu_ic_mem.scala 111:108] - reg ic_rd_en_ff; // @[el2_ifu_ic_mem.scala 113:28] - reg [18:0] ic_rw_addr_ff; // @[el2_ifu_ic_mem.scala 114:30] - wire [1:0] ic_tag_wren_q = ic_tag_wren | ic_debug_wr_way_en; // @[el2_ifu_ic_mem.scala 121:35] - wire [31:0] _T_20 = {13'h0,io_ic_rw_addr[28:10]}; // @[Cat.scala 29:58] - wire [8:0] _T_124 = {_T_20[16],_T_20[14],_T_20[12],_T_20[10],_T_20[8],_T_20[6],_T_20[5],_T_20[3],_T_20[1]}; // @[el2_lib.scala 263:22] - wire [17:0] _T_133 = {_T_20[31],_T_20[30],_T_20[28],_T_20[27],_T_20[25],_T_20[23],_T_20[21],_T_20[20],_T_20[18],_T_124}; // @[el2_lib.scala 263:22] - wire _T_134 = ^_T_133; // @[el2_lib.scala 263:29] - wire [8:0] _T_142 = {_T_20[15],_T_20[14],_T_20[11],_T_20[10],_T_20[7],_T_20[6],_T_20[4],_T_20[3],_T_20[0]}; // @[el2_lib.scala 263:39] - wire [17:0] _T_151 = {_T_20[31],_T_20[29],_T_20[28],_T_20[26],_T_20[25],_T_20[22],_T_20[21],_T_20[19],_T_20[18],_T_142}; // @[el2_lib.scala 263:39] - wire _T_152 = ^_T_151; // @[el2_lib.scala 263:46] - wire [8:0] _T_160 = {_T_20[15],_T_20[14],_T_20[9],_T_20[8],_T_20[7],_T_20[6],_T_20[2],_T_20[1],_T_20[0]}; // @[el2_lib.scala 263:56] - wire [17:0] _T_169 = {_T_20[30],_T_20[29],_T_20[28],_T_20[24],_T_20[23],_T_20[22],_T_20[21],_T_20[17],_T_20[16],_T_160}; // @[el2_lib.scala 263:56] - wire _T_170 = ^_T_169; // @[el2_lib.scala 263:63] - wire [6:0] _T_176 = {_T_20[12],_T_20[11],_T_20[10],_T_20[9],_T_20[8],_T_20[7],_T_20[6]}; // @[el2_lib.scala 263:73] - wire [14:0] _T_184 = {_T_20[27],_T_20[26],_T_20[25],_T_20[24],_T_20[23],_T_20[22],_T_20[21],_T_20[13],_T_176}; // @[el2_lib.scala 263:73] - wire _T_185 = ^_T_184; // @[el2_lib.scala 263:80] - wire [14:0] _T_199 = {_T_20[20],_T_20[19],_T_20[18],_T_20[17],_T_20[16],_T_20[15],_T_20[14],_T_20[13],_T_176}; // @[el2_lib.scala 263:90] - wire _T_200 = ^_T_199; // @[el2_lib.scala 263:97] - wire [5:0] _T_205 = {_T_20[5],_T_20[4],_T_20[3],_T_20[2],_T_20[1],_T_20[0]}; // @[el2_lib.scala 263:107] - wire _T_206 = ^_T_205; // @[el2_lib.scala 263:114] - wire [5:0] _T_211 = {_T_134,_T_152,_T_170,_T_185,_T_200,_T_206}; // @[Cat.scala 29:58] - wire _T_212 = ^_T_20; // @[el2_lib.scala 264:13] - wire _T_213 = ^_T_211; // @[el2_lib.scala 264:23] - wire _T_214 = _T_212 ^ _T_213; // @[el2_lib.scala 264:18] - wire [6:0] ic_tag_ecc = {_T_214,_T_134,_T_152,_T_170,_T_185,_T_200,_T_206}; // @[Cat.scala 29:58] - wire [25:0] _T_221 = {io_ic_debug_wr_data[68:64],io_ic_debug_wr_data[31:11]}; // @[Cat.scala 29:58] - wire [25:0] _T_226 = {ic_tag_ecc[4:0],2'h0,io_ic_rw_addr[28:10]}; // @[Cat.scala 29:58] - wire _T_227 = io_ic_debug_rd_en | io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 132:45] - wire [28:0] ic_rw_addr_q = _T_227 ? {{22'd0}, io_ic_debug_addr[9:3]} : io_ic_rw_addr; // @[el2_ifu_ic_mem.scala 132:25] - reg [1:0] ic_debug_rd_way_en_ff; // @[el2_ifu_ic_mem.scala 134:38] - wire _T_240 = ~ic_tag_wren_q[0]; // @[el2_ifu_ic_mem.scala 141:59] - wire read_enable_0 = _T_240 & ic_tag_clken[0]; // @[el2_ifu_ic_mem.scala 141:77] - wire _T_244 = ~ic_tag_wren_q[1]; // @[el2_ifu_ic_mem.scala 141:59] - wire read_enable_1 = _T_244 & ic_tag_clken[1]; // @[el2_ifu_ic_mem.scala 141:77] - wire [25:0] _T_248 = read_enable_0 ? 26'h3ffffff : 26'h0; // @[Bitwise.scala 72:12] - wire [25:0] ic_tag_data_raw_0 = _T_248 & tag_mem_0__T_250_data; // @[el2_ifu_ic_mem.scala 143:87] - wire [25:0] _T_252 = read_enable_1 ? 26'h3ffffff : 26'h0; // @[Bitwise.scala 72:12] - wire [25:0] ic_tag_data_raw_1 = _T_252 & tag_mem_1__T_254_data; // @[el2_ifu_ic_mem.scala 143:87] - wire [23:0] w_tout_0 = {ic_tag_data_raw_0[25:21],ic_tag_data_raw_0[18:0]}; // @[Cat.scala 29:58] - wire [23:0] w_tout_1 = {ic_tag_data_raw_1[25:21],ic_tag_data_raw_1[18:0]}; // @[Cat.scala 29:58] - wire _T_261 = ~io_dec_tlu_core_ecc_disable; // @[el2_ifu_ic_mem.scala 153:51] - wire _T_262 = _T_261 & ic_rd_en_ff; // @[el2_ifu_ic_mem.scala 153:80] - wire [31:0] _T_264 = {11'h0,ic_tag_data_raw_0[20:0]}; // @[Cat.scala 29:58] - wire [6:0] _T_266 = {2'h0,ic_tag_data_raw_0[25:21]}; // @[Cat.scala 29:58] - wire [5:0] _T_373 = {_T_264[31],_T_264[30],_T_264[29],_T_264[28],_T_264[27],_T_264[26]}; // @[el2_lib.scala 296:76] - wire _T_374 = ^_T_373; // @[el2_lib.scala 296:83] - wire _T_375 = _T_266[5] ^ _T_374; // @[el2_lib.scala 296:71] - wire [6:0] _T_382 = {_T_264[17],_T_264[16],_T_264[15],_T_264[14],_T_264[13],_T_264[12],_T_264[11]}; // @[el2_lib.scala 296:103] - wire [14:0] _T_390 = {_T_264[25],_T_264[24],_T_264[23],_T_264[22],_T_264[21],_T_264[20],_T_264[19],_T_264[18],_T_382}; // @[el2_lib.scala 296:103] - wire _T_391 = ^_T_390; // @[el2_lib.scala 296:110] - wire _T_392 = _T_266[4] ^ _T_391; // @[el2_lib.scala 296:98] - wire [6:0] _T_399 = {_T_264[10],_T_264[9],_T_264[8],_T_264[7],_T_264[6],_T_264[5],_T_264[4]}; // @[el2_lib.scala 296:130] - wire [14:0] _T_407 = {_T_264[25],_T_264[24],_T_264[23],_T_264[22],_T_264[21],_T_264[20],_T_264[19],_T_264[18],_T_399}; // @[el2_lib.scala 296:130] - wire _T_408 = ^_T_407; // @[el2_lib.scala 296:137] - wire _T_409 = _T_266[3] ^ _T_408; // @[el2_lib.scala 296:125] - wire [8:0] _T_418 = {_T_264[15],_T_264[14],_T_264[10],_T_264[9],_T_264[8],_T_264[7],_T_264[3],_T_264[2],_T_264[1]}; // @[el2_lib.scala 296:157] - wire [17:0] _T_427 = {_T_264[31],_T_264[30],_T_264[29],_T_264[25],_T_264[24],_T_264[23],_T_264[22],_T_264[17],_T_264[16],_T_418}; // @[el2_lib.scala 296:157] - wire _T_428 = ^_T_427; // @[el2_lib.scala 296:164] - wire _T_429 = _T_266[2] ^ _T_428; // @[el2_lib.scala 296:152] - wire [8:0] _T_438 = {_T_264[13],_T_264[12],_T_264[10],_T_264[9],_T_264[6],_T_264[5],_T_264[3],_T_264[2],_T_264[0]}; // @[el2_lib.scala 296:184] - wire [17:0] _T_447 = {_T_264[31],_T_264[28],_T_264[27],_T_264[25],_T_264[24],_T_264[21],_T_264[20],_T_264[17],_T_264[16],_T_438}; // @[el2_lib.scala 296:184] - wire _T_448 = ^_T_447; // @[el2_lib.scala 296:191] - wire _T_449 = _T_266[1] ^ _T_448; // @[el2_lib.scala 296:179] - wire [8:0] _T_458 = {_T_264[13],_T_264[11],_T_264[10],_T_264[8],_T_264[6],_T_264[4],_T_264[3],_T_264[1],_T_264[0]}; // @[el2_lib.scala 296:211] - wire [17:0] _T_467 = {_T_264[30],_T_264[28],_T_264[26],_T_264[25],_T_264[23],_T_264[21],_T_264[19],_T_264[17],_T_264[15],_T_458}; // @[el2_lib.scala 296:211] - wire _T_468 = ^_T_467; // @[el2_lib.scala 296:218] - wire _T_469 = _T_266[0] ^ _T_468; // @[el2_lib.scala 296:206] - wire [6:0] _T_475 = {1'h0,_T_375,_T_392,_T_409,_T_429,_T_449,_T_469}; // @[Cat.scala 29:58] - wire _T_476 = _T_475 != 7'h0; // @[el2_lib.scala 297:44] - wire _T_477 = _T_262 & _T_476; // @[el2_lib.scala 297:32] - wire ic_tag_single_ecc_error_0 = _T_477 & _T_475[6]; // @[el2_lib.scala 297:53] - wire _T_483 = ~_T_475[6]; // @[el2_lib.scala 298:55] - wire ic_tag_double_ecc_error_0 = _T_477 & _T_483; // @[el2_lib.scala 298:53] - wire [31:0] _T_652 = {11'h0,ic_tag_data_raw_1[20:0]}; // @[Cat.scala 29:58] - wire [6:0] _T_654 = {2'h0,ic_tag_data_raw_1[25:21]}; // @[Cat.scala 29:58] - wire [5:0] _T_761 = {_T_652[31],_T_652[30],_T_652[29],_T_652[28],_T_652[27],_T_652[26]}; // @[el2_lib.scala 296:76] - wire _T_762 = ^_T_761; // @[el2_lib.scala 296:83] - wire _T_763 = _T_654[5] ^ _T_762; // @[el2_lib.scala 296:71] - wire [6:0] _T_770 = {_T_652[17],_T_652[16],_T_652[15],_T_652[14],_T_652[13],_T_652[12],_T_652[11]}; // @[el2_lib.scala 296:103] - wire [14:0] _T_778 = {_T_652[25],_T_652[24],_T_652[23],_T_652[22],_T_652[21],_T_652[20],_T_652[19],_T_652[18],_T_770}; // @[el2_lib.scala 296:103] - wire _T_779 = ^_T_778; // @[el2_lib.scala 296:110] - wire _T_780 = _T_654[4] ^ _T_779; // @[el2_lib.scala 296:98] - wire [6:0] _T_787 = {_T_652[10],_T_652[9],_T_652[8],_T_652[7],_T_652[6],_T_652[5],_T_652[4]}; // @[el2_lib.scala 296:130] - wire [14:0] _T_795 = {_T_652[25],_T_652[24],_T_652[23],_T_652[22],_T_652[21],_T_652[20],_T_652[19],_T_652[18],_T_787}; // @[el2_lib.scala 296:130] - wire _T_796 = ^_T_795; // @[el2_lib.scala 296:137] - wire _T_797 = _T_654[3] ^ _T_796; // @[el2_lib.scala 296:125] - wire [8:0] _T_806 = {_T_652[15],_T_652[14],_T_652[10],_T_652[9],_T_652[8],_T_652[7],_T_652[3],_T_652[2],_T_652[1]}; // @[el2_lib.scala 296:157] - wire [17:0] _T_815 = {_T_652[31],_T_652[30],_T_652[29],_T_652[25],_T_652[24],_T_652[23],_T_652[22],_T_652[17],_T_652[16],_T_806}; // @[el2_lib.scala 296:157] - wire _T_816 = ^_T_815; // @[el2_lib.scala 296:164] - wire _T_817 = _T_654[2] ^ _T_816; // @[el2_lib.scala 296:152] - wire [8:0] _T_826 = {_T_652[13],_T_652[12],_T_652[10],_T_652[9],_T_652[6],_T_652[5],_T_652[3],_T_652[2],_T_652[0]}; // @[el2_lib.scala 296:184] - wire [17:0] _T_835 = {_T_652[31],_T_652[28],_T_652[27],_T_652[25],_T_652[24],_T_652[21],_T_652[20],_T_652[17],_T_652[16],_T_826}; // @[el2_lib.scala 296:184] - wire _T_836 = ^_T_835; // @[el2_lib.scala 296:191] - wire _T_837 = _T_654[1] ^ _T_836; // @[el2_lib.scala 296:179] - wire [8:0] _T_846 = {_T_652[13],_T_652[11],_T_652[10],_T_652[8],_T_652[6],_T_652[4],_T_652[3],_T_652[1],_T_652[0]}; // @[el2_lib.scala 296:211] - wire [17:0] _T_855 = {_T_652[30],_T_652[28],_T_652[26],_T_652[25],_T_652[23],_T_652[21],_T_652[19],_T_652[17],_T_652[15],_T_846}; // @[el2_lib.scala 296:211] - wire _T_856 = ^_T_855; // @[el2_lib.scala 296:218] - wire _T_857 = _T_654[0] ^ _T_856; // @[el2_lib.scala 296:206] - wire [6:0] _T_863 = {1'h0,_T_763,_T_780,_T_797,_T_817,_T_837,_T_857}; // @[Cat.scala 29:58] - wire _T_864 = _T_863 != 7'h0; // @[el2_lib.scala 297:44] - wire _T_865 = _T_262 & _T_864; // @[el2_lib.scala 297:32] - wire ic_tag_single_ecc_error_1 = _T_865 & _T_863[6]; // @[el2_lib.scala 297:53] - wire _T_871 = ~_T_863[6]; // @[el2_lib.scala 298:55] - wire ic_tag_double_ecc_error_1 = _T_865 & _T_871; // @[el2_lib.scala 298:53] - wire [1:0] _T_1037 = {ic_tag_single_ecc_error_1,ic_tag_single_ecc_error_0}; // @[Cat.scala 29:58] - wire [1:0] _T_1038 = {ic_tag_double_ecc_error_1,ic_tag_double_ecc_error_0}; // @[Cat.scala 29:58] - wire [1:0] ic_tag_way_perr = _T_1037 | _T_1038; // @[el2_ifu_ic_mem.scala 161:88] - wire [25:0] _T_1041 = ic_debug_rd_way_en_ff[0] ? 26'h3ffffff : 26'h0; // @[Bitwise.scala 72:12] - wire [25:0] _T_1042 = _T_1041 & ic_tag_data_raw_0; // @[el2_ifu_ic_mem.scala 164:112] - wire [25:0] _T_1045 = ic_debug_rd_way_en_ff[1] ? 26'h3ffffff : 26'h0; // @[Bitwise.scala 72:12] - wire [25:0] _T_1046 = _T_1045 & ic_tag_data_raw_1; // @[el2_ifu_ic_mem.scala 164:112] - wire _T_1049 = w_tout_0[18:0] == ic_rw_addr_ff; // @[el2_ifu_ic_mem.scala 165:83] - wire _T_1051 = _T_1049 & io_ic_tag_valid[0]; // @[el2_ifu_ic_mem.scala 165:100] - wire _T_1053 = w_tout_1[18:0] == ic_rw_addr_ff; // @[el2_ifu_ic_mem.scala 165:83] - wire _T_1055 = _T_1053 & io_ic_tag_valid[1]; // @[el2_ifu_ic_mem.scala 165:100] - wire [1:0] _T_1057 = ic_tag_way_perr & io_ic_tag_valid; // @[el2_ifu_ic_mem.scala 166:38] - assign tag_mem_0__T_250_addr = ic_rw_addr_q[6:0]; - assign tag_mem_0__T_250_data = tag_mem_0[tag_mem_0__T_250_addr]; // @[el2_ifu_ic_mem.scala 136:20] - assign tag_mem_0__T_254_addr = ic_rw_addr_q[6:0]; - assign tag_mem_0__T_254_data = tag_mem_0[tag_mem_0__T_254_addr]; // @[el2_ifu_ic_mem.scala 136:20] - assign tag_mem_0__T_238_data = _T_14 ? _T_221 : _T_226; - assign tag_mem_0__T_238_addr = ic_rw_addr_q[6:0]; - assign tag_mem_0__T_238_mask = ic_tag_wren_q[0] & ic_tag_clken[0]; - assign tag_mem_0__T_238_en = 1'h1; - assign tag_mem_1__T_250_addr = ic_rw_addr_q[6:0]; - assign tag_mem_1__T_250_data = tag_mem_1[tag_mem_1__T_250_addr]; // @[el2_ifu_ic_mem.scala 136:20] - assign tag_mem_1__T_254_addr = ic_rw_addr_q[6:0]; - assign tag_mem_1__T_254_data = tag_mem_1[tag_mem_1__T_254_addr]; // @[el2_ifu_ic_mem.scala 136:20] - assign tag_mem_1__T_238_data = _T_14 ? _T_221 : _T_226; - assign tag_mem_1__T_238_addr = ic_rw_addr_q[6:0]; - assign tag_mem_1__T_238_mask = ic_tag_wren_q[1] & ic_tag_clken[1]; - assign tag_mem_1__T_238_en = 1'h1; - assign io_ictag_debug_rd_data = _T_1042 | _T_1046; // @[el2_ifu_ic_mem.scala 104:26 el2_ifu_ic_mem.scala 164:26] - assign io_ic_rd_hit = {_T_1055,_T_1051}; // @[el2_ifu_ic_mem.scala 105:16 el2_ifu_ic_mem.scala 165:16] - assign io_ic_tag_perr = |_T_1057; // @[el2_ifu_ic_mem.scala 106:18 el2_ifu_ic_mem.scala 166:18] -`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 = {1{`RANDOM}}; - for (initvar = 0; initvar < 128; initvar = initvar+1) - tag_mem_0[initvar] = _RAND_0[25:0]; - _RAND_1 = {1{`RANDOM}}; - for (initvar = 0; initvar < 128; initvar = initvar+1) - tag_mem_1[initvar] = _RAND_1[25:0]; -`endif // RANDOMIZE_MEM_INIT -`ifdef RANDOMIZE_REG_INIT - _RAND_2 = {1{`RANDOM}}; - ic_rd_en_ff = _RAND_2[0:0]; - _RAND_3 = {1{`RANDOM}}; - ic_rw_addr_ff = _RAND_3[18:0]; - _RAND_4 = {1{`RANDOM}}; - ic_debug_rd_way_en_ff = _RAND_4[1:0]; -`endif // RANDOMIZE_REG_INIT - `endif // RANDOMIZE -end // initial -`ifdef FIRRTL_AFTER_INITIAL -`FIRRTL_AFTER_INITIAL -`endif -`endif // SYNTHESIS - always @(posedge clock) begin - if(tag_mem_0__T_238_en & tag_mem_0__T_238_mask) begin - tag_mem_0[tag_mem_0__T_238_addr] <= tag_mem_0__T_238_data; // @[el2_ifu_ic_mem.scala 136:20] - end - if(tag_mem_1__T_238_en & tag_mem_1__T_238_mask) begin - tag_mem_1[tag_mem_1__T_238_addr] <= tag_mem_1__T_238_data; // @[el2_ifu_ic_mem.scala 136:20] - end - if (reset) begin - ic_rd_en_ff <= 1'h0; - end else begin - ic_rd_en_ff <= io_ic_rd_en; - end - if (reset) begin - ic_rw_addr_ff <= 19'h0; - end else begin - ic_rw_addr_ff <= io_ic_rw_addr[18:0]; - end - if (reset) begin - ic_debug_rd_way_en_ff <= 2'h0; - end else begin - ic_debug_rd_way_en_ff <= ic_debug_rd_way_en; - end - end -endmodule -module EL2_IC_DATA( - input clock, - input reset, - input io_clk_override, - input [11:0] io_ic_rw_addr, + input [30:0] io_ic_rw_addr, input [1:0] io_ic_wr_en, input io_ic_rd_en, - input [70:0] io_ic_wr_data_0, - input [70:0] io_ic_wr_data_1, - output [63:0] io_ic_rd_data, - input [70:0] io_ic_debug_wr_data, - output [70:0] io_ic_debug_rd_data, - output [1:0] io_ic_parerr, - output [1:0] io_ic_eccerr, input [8:0] io_ic_debug_addr, input io_ic_debug_rd_en, input io_ic_debug_wr_en, @@ -294,7 +14,17 @@ module EL2_IC_DATA( input [1:0] io_ic_debug_way, input [63:0] io_ic_premux_data, input io_ic_sel_premux_data, - input [1:0] io_ic_rd_hit + input [1:0] io_ic_tag_valid, + input [70:0] io_ic_debug_wr_data, + input [70:0] io_ic_wr_data_0, + input [70:0] io_ic_wr_data_1, + output [63:0] io_ic_rd_data, + output [70:0] io_ic_debug_rd_data, + output [25:0] io_ictag_debug_rd_data, + output [1:0] io_ic_eccerr, + output [1:0] io_ic_parerr, + output [1:0] io_ic_rd_hit, + output io_ic_tag_perr ); `ifdef RANDOMIZE_MEM_INIT reg [95:0] _RAND_0; @@ -308,188 +38,188 @@ module EL2_IC_DATA( reg [31:0] _RAND_6; reg [31:0] _RAND_7; `endif // RANDOMIZE_REG_INIT - reg [70:0] data_mem_0_0 [0:511]; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_145_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_145_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_158_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_158_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_171_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_171_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_184_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_184_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_139_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_139_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_139_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_139_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_152_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_152_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_152_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_165_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_165_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_165_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_0__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_0__T_178_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_178_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_0__T_178_en; // @[el2_ifu_ic_mem.scala 235:21] - reg [70:0] data_mem_0_1 [0:511]; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_145_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_145_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_158_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_158_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_171_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_171_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_184_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_184_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_139_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_139_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_139_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_139_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_152_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_152_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_152_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_165_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_165_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_165_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_0_1__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_0_1__T_178_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_178_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_0_1__T_178_en; // @[el2_ifu_ic_mem.scala 235:21] - reg [70:0] data_mem_1_0 [0:511]; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_145_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_145_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_158_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_158_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_171_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_171_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_184_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_184_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_139_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_139_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_139_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_139_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_152_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_152_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_152_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_165_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_165_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_165_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_0__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_0__T_178_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_178_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_0__T_178_en; // @[el2_ifu_ic_mem.scala 235:21] - reg [70:0] data_mem_1_1 [0:511]; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_145_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_145_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_158_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_158_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_171_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_171_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_184_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_184_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_139_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_139_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_139_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_139_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_152_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_152_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_152_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_165_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_165_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_165_en; // @[el2_ifu_ic_mem.scala 235:21] - wire [70:0] data_mem_1_1__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] - wire [8:0] data_mem_1_1__T_178_addr; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_178_mask; // @[el2_ifu_ic_mem.scala 235:21] - wire data_mem_1_1__T_178_en; // @[el2_ifu_ic_mem.scala 235:21] - wire _T = ~io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 195:70] - wire _T_1 = io_ic_debug_rd_en & _T; // @[el2_ifu_ic_mem.scala 195:68] + reg [70:0] data_mem_0_0 [0:511]; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_145_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_145_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_158_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_158_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_171_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_171_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_184_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_184_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_139_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_139_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_139_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_152_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_152_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_152_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_165_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_165_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_165_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_0__T_178_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_0__T_178_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_178_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_0__T_178_en; // @[el2_ifu_ic_mem.scala 82:21] + reg [70:0] data_mem_0_1 [0:511]; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_145_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_145_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_158_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_158_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_171_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_171_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_184_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_184_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_139_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_139_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_139_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_152_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_152_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_152_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_165_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_165_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_165_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_0_1__T_178_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_0_1__T_178_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_178_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_0_1__T_178_en; // @[el2_ifu_ic_mem.scala 82:21] + reg [70:0] data_mem_1_0 [0:511]; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_145_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_145_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_158_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_158_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_171_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_171_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_184_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_184_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_139_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_139_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_139_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_152_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_152_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_152_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_165_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_165_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_165_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_0__T_178_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_0__T_178_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_178_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_0__T_178_en; // @[el2_ifu_ic_mem.scala 82:21] + reg [70:0] data_mem_1_1 [0:511]; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_145_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_145_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_158_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_158_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_171_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_171_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_184_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_184_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_139_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_139_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_139_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_152_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_152_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_152_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_165_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_165_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_165_en; // @[el2_ifu_ic_mem.scala 82:21] + wire [70:0] data_mem_1_1__T_178_data; // @[el2_ifu_ic_mem.scala 82:21] + wire [8:0] data_mem_1_1__T_178_addr; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_178_mask; // @[el2_ifu_ic_mem.scala 82:21] + wire data_mem_1_1__T_178_en; // @[el2_ifu_ic_mem.scala 82:21] + wire _T = ~io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 42:70] + wire _T_1 = io_ic_debug_rd_en & _T; // @[el2_ifu_ic_mem.scala 42:68] wire [1:0] _T_3 = _T_1 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] - wire [1:0] ic_debug_rd_way_en = _T_3 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 195:94] - wire _T_5 = io_ic_debug_wr_en & _T; // @[el2_ifu_ic_mem.scala 196:68] + wire [1:0] ic_debug_rd_way_en = _T_3 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 42:94] + wire _T_5 = io_ic_debug_wr_en & _T; // @[el2_ifu_ic_mem.scala 43:68] wire [1:0] _T_7 = _T_5 ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] - wire [1:0] ic_debug_wr_way_en = _T_7 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 196:94] - wire _T_8 = io_ic_debug_rd_en | io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 201:45] + wire [1:0] ic_debug_wr_way_en = _T_7 & io_ic_debug_way; // @[el2_ifu_ic_mem.scala 43:94] + wire _T_8 = io_ic_debug_rd_en | io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 48: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 201:25] - wire [8:0] ic_rw_addr_q_inc = ic_rw_addr_q[11:3] + 9'h1; // @[el2_ifu_ic_mem.scala 203:79] - wire _T_14 = ~io_ic_debug_addr[0]; // @[el2_ifu_ic_mem.scala 205:113] + wire [30:0] ic_rw_addr_q = _T_8 ? {{20'd0}, _T_10} : io_ic_rw_addr; // @[el2_ifu_ic_mem.scala 48:25] + wire [8:0] ic_rw_addr_q_inc = ic_rw_addr_q[11:3] + 9'h1; // @[el2_ifu_ic_mem.scala 50:79] + wire _T_14 = ~io_ic_debug_addr[0]; // @[el2_ifu_ic_mem.scala 52: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 205:38] - wire [1:0] ic_b_sb_wren_0 = io_ic_wr_en | _T_17; // @[el2_ifu_ic_mem.scala 205:17] + wire [1:0] _T_17 = ic_debug_wr_way_en & _T_16; // @[el2_ifu_ic_mem.scala 52:38] + wire [1:0] ic_b_sb_wren_0 = io_ic_wr_en | _T_17; // @[el2_ifu_ic_mem.scala 52: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 205:38] - wire [1:0] ic_b_sb_wren_1 = io_ic_wr_en | _T_22; // @[el2_ifu_ic_mem.scala 205:17] + wire [1:0] _T_22 = ic_debug_wr_way_en & _T_21; // @[el2_ifu_ic_mem.scala 52:38] + wire [1:0] ic_b_sb_wren_1 = io_ic_wr_en | _T_22; // @[el2_ifu_ic_mem.scala 52:17] wire [1:0] ic_debug_sel_sb = {io_ic_debug_addr[0],_T_14}; // @[Cat.scala 29:58] - wire _T_28 = ic_debug_sel_sb[0] & io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 207:80] - wire _T_31 = ic_debug_sel_sb[1] & io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 207:80] - wire _T_35 = ~ic_rw_addr_q[2]; // @[el2_ifu_ic_mem.scala 209:16] - wire _T_40 = ic_rw_addr_q[1:0] == 2'h3; // @[el2_ifu_ic_mem.scala 210:91] + wire _T_28 = ic_debug_sel_sb[0] & io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 54:80] + wire _T_31 = ic_debug_sel_sb[1] & io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 54:80] + wire _T_35 = ~ic_rw_addr_q[2]; // @[el2_ifu_ic_mem.scala 56:16] + wire _T_40 = ic_rw_addr_q[1:0] == 2'h3; // @[el2_ifu_ic_mem.scala 57:69] wire _T_54 = ic_rw_addr_q[2] & _T_40; // @[Mux.scala 27:72] wire _T_57 = _T_35 | _T_54; // @[Mux.scala 27:72] - wire _T_111 = |io_ic_wr_en; // @[el2_ifu_ic_mem.scala 217:74] - wire _T_112 = ~_T_111; // @[el2_ifu_ic_mem.scala 217:61] - wire _T_113 = io_ic_debug_rd_en & _T_112; // @[el2_ifu_ic_mem.scala 217:58] - wire ic_rd_en_with_debug = io_ic_rd_en | _T_113; // @[el2_ifu_ic_mem.scala 217:38] - wire _T_61 = _T_57 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 212:117] + wire _T_111 = |io_ic_wr_en; // @[el2_ifu_ic_mem.scala 64:74] + wire _T_112 = ~_T_111; // @[el2_ifu_ic_mem.scala 64:61] + wire _T_113 = io_ic_debug_rd_en & _T_112; // @[el2_ifu_ic_mem.scala 64:58] + wire ic_rd_en_with_debug = io_ic_rd_en | _T_113; // @[el2_ifu_ic_mem.scala 64:38] + wire _T_61 = _T_57 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 59:95] wire _T_85 = _T_35 & _T_40; // @[Mux.scala 27:72] wire _T_88 = ic_rw_addr_q[2] | _T_85; // @[Mux.scala 27:72] - wire _T_90 = _T_88 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 212:117] + wire _T_90 = _T_88 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 59:95] wire [1:0] ic_b_rden = {_T_90,_T_61}; // @[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_96 = ic_b_sb_rden_0[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 215:25] - wire _T_98 = _T_96 | ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 215:43] - wire _T_100 = ic_b_sb_rden_0[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 215:25] - wire _T_102 = _T_100 | ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 215:43] + wire _T_96 = ic_b_sb_rden_0[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 62:25] + wire _T_98 = _T_96 | ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 62:43] + wire _T_100 = ic_b_sb_rden_0[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 62:25] + wire _T_102 = _T_100 | ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 62:43] wire [1:0] ic_bank_way_clken_0 = {_T_98,_T_102}; // @[Cat.scala 29:58] - wire _T_104 = ic_b_sb_rden_1[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 215:25] - wire _T_106 = _T_104 | ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 215:43] - wire _T_108 = ic_b_sb_rden_1[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 215:25] - wire _T_110 = _T_108 | ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 215:43] + wire _T_104 = ic_b_sb_rden_1[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 62:25] + wire _T_106 = _T_104 | ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 62:43] + wire _T_108 = ic_b_sb_rden_1[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 62:25] + wire _T_110 = _T_108 | ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 62:43] wire [1:0] ic_bank_way_clken_1 = {_T_106,_T_110}; // @[Cat.scala 29:58] - wire _T_119 = _T_54 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 219:86] - wire ic_rw_addr_wrap = _T_119 & _T_112; // @[el2_ifu_ic_mem.scala 219:108] - wire _T_122 = ~ic_rw_addr_wrap; // @[el2_ifu_ic_mem.scala 221:40] + wire _T_119 = _T_54 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 66:86] + wire ic_rw_addr_wrap = _T_119 & _T_112; // @[el2_ifu_ic_mem.scala 66:108] + wire _T_122 = ~ic_rw_addr_wrap; // @[el2_ifu_ic_mem.scala 68:40] wire [8:0] _T_127 = {ic_rw_addr_q[11:5],ic_rw_addr_q_inc[4:3]}; // @[Cat.scala 29:58] - reg [1:0] ic_b_rden_ff; // @[el2_ifu_ic_mem.scala 225:29] - reg [4:0] ic_rw_addr_ff; // @[el2_ifu_ic_mem.scala 226:30] - reg [1:0] ic_debug_rd_way_en_ff; // @[el2_ifu_ic_mem.scala 227:38] - reg ic_debug_rd_en_ff; // @[el2_ifu_ic_mem.scala 228:34] - wire ic_cacheline_wrap_ff = ic_rw_addr_ff[4:2] == 3'h7; // @[el2_ifu_ic_mem.scala 230:84] - wire _T_137 = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 240:30] - wire _T_141 = ~ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 242:17] - wire _T_143 = _T_141 & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 242:36] - wire [70:0] _GEN_3 = _T_143 ? data_mem_0_0__T_145_data : 71'h0; // @[el2_ifu_ic_mem.scala 242:69] - wire [70:0] wb_dout_0_0 = _T_137 ? 71'h0 : _GEN_3; // @[el2_ifu_ic_mem.scala 240:64] - wire _T_150 = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 240:30] - wire _T_154 = ~ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 242:17] - wire _T_156 = _T_154 & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 242:36] - wire [70:0] _GEN_17 = _T_156 ? data_mem_1_0__T_158_data : 71'h0; // @[el2_ifu_ic_mem.scala 242:69] - wire [70:0] wb_dout_0_1 = _T_150 ? 71'h0 : _GEN_17; // @[el2_ifu_ic_mem.scala 240:64] - wire _T_163 = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 240:30] - wire _T_167 = ~ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 242:17] - wire _T_169 = _T_167 & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 242:36] - wire [70:0] _GEN_31 = _T_169 ? data_mem_0_1__T_171_data : 71'h0; // @[el2_ifu_ic_mem.scala 242:69] - wire [70:0] wb_dout_1_0 = _T_163 ? 71'h0 : _GEN_31; // @[el2_ifu_ic_mem.scala 240:64] - wire _T_176 = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 240:30] - wire _T_180 = ~ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 242:17] - wire _T_182 = _T_180 & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 242:36] - wire [70:0] _GEN_45 = _T_182 ? data_mem_1_1__T_184_data : 71'h0; // @[el2_ifu_ic_mem.scala 242:69] - wire [70:0] wb_dout_1_1 = _T_176 ? 71'h0 : _GEN_45; // @[el2_ifu_ic_mem.scala 240:64] - wire [1:0] ic_rd_hit_q = ic_debug_rd_en_ff ? ic_debug_rd_way_en_ff : io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 246:24] - wire _T_187 = ~ic_rw_addr_ff[2]; // @[el2_ifu_ic_mem.scala 250:95] + reg [1:0] ic_b_rden_ff; // @[el2_ifu_ic_mem.scala 72:29] + reg [4:0] ic_rw_addr_ff; // @[el2_ifu_ic_mem.scala 73:30] + reg [1:0] ic_debug_rd_way_en_ff; // @[el2_ifu_ic_mem.scala 74:38] + reg ic_debug_rd_en_ff; // @[el2_ifu_ic_mem.scala 75:34] + wire ic_cacheline_wrap_ff = ic_rw_addr_ff[4:2] == 3'h7; // @[el2_ifu_ic_mem.scala 77:84] + wire _T_137 = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 87:30] + wire _T_141 = ~ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 89:17] + wire _T_143 = _T_141 & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 89:36] + wire [70:0] _GEN_3 = _T_143 ? data_mem_0_0__T_145_data : 71'h0; // @[el2_ifu_ic_mem.scala 89:69] + wire [70:0] wb_dout_0_0 = _T_137 ? 71'h0 : _GEN_3; // @[el2_ifu_ic_mem.scala 87:64] + wire _T_150 = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 87:30] + wire _T_154 = ~ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 89:17] + wire _T_156 = _T_154 & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 89:36] + wire [70:0] _GEN_17 = _T_156 ? data_mem_1_0__T_158_data : 71'h0; // @[el2_ifu_ic_mem.scala 89:69] + wire [70:0] wb_dout_0_1 = _T_150 ? 71'h0 : _GEN_17; // @[el2_ifu_ic_mem.scala 87:64] + wire _T_163 = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 87:30] + wire _T_167 = ~ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 89:17] + wire _T_169 = _T_167 & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 89:36] + wire [70:0] _GEN_31 = _T_169 ? data_mem_0_1__T_171_data : 71'h0; // @[el2_ifu_ic_mem.scala 89:69] + wire [70:0] wb_dout_1_0 = _T_163 ? 71'h0 : _GEN_31; // @[el2_ifu_ic_mem.scala 87:64] + wire _T_176 = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 87:30] + wire _T_180 = ~ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 89:17] + wire _T_182 = _T_180 & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 89:36] + wire [70:0] _GEN_45 = _T_182 ? data_mem_1_1__T_184_data : 71'h0; // @[el2_ifu_ic_mem.scala 89:69] + wire [70:0] wb_dout_1_1 = _T_176 ? 71'h0 : _GEN_45; // @[el2_ifu_ic_mem.scala 87:64] + wire [1:0] ic_rd_hit_q = ic_debug_rd_en_ff ? ic_debug_rd_way_en_ff : io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 93:24] + wire _T_187 = ~ic_rw_addr_ff[2]; // @[el2_ifu_ic_mem.scala 97:95] wire [70:0] _T_192 = _T_187 ? wb_dout_0_0 : 71'h0; // @[Mux.scala 27:72] wire [70:0] _T_193 = ic_rw_addr_ff[2] ? wb_dout_0_1 : 71'h0; // @[Mux.scala 27:72] wire [70:0] _T_194 = _T_192 | _T_193; // @[Mux.scala 27:72] - wire _T_198 = 1'h0 - 1'h1; // @[el2_ifu_ic_mem.scala 251:102] - wire _T_199 = ic_rw_addr_ff[2] == _T_198; // @[el2_ifu_ic_mem.scala 251:95] + wire _T_198 = 1'h0 - 1'h1; // @[el2_ifu_ic_mem.scala 98:102] + wire _T_199 = ic_rw_addr_ff[2] == _T_198; // @[el2_ifu_ic_mem.scala 98:95] wire [70:0] _T_206 = _T_199 ? wb_dout_0_0 : 71'h0; // @[Mux.scala 27:72] wire [70:0] _T_207 = _T_187 ? wb_dout_0_1 : 71'h0; // @[Mux.scala 27:72] wire [70:0] _T_208 = _T_206 | _T_207; // @[Mux.scala 27:72] @@ -501,12 +231,12 @@ module EL2_IC_DATA( wire [70:0] _T_231 = _T_187 ? wb_dout_1_1 : 71'h0; // @[Mux.scala 27:72] wire [70:0] _T_232 = _T_230 | _T_231; // @[Mux.scala 27:72] wire [141:0] wb_dout_way_pre_1 = {_T_218,_T_232}; // @[Cat.scala 29:58] - wire _T_235 = ic_rw_addr_ff[1:0] == 2'h0; // @[el2_ifu_ic_mem.scala 253:83] - wire _T_239 = ic_rw_addr_ff[1:0] == 2'h1; // @[el2_ifu_ic_mem.scala 254:24] + wire _T_235 = ic_rw_addr_ff[1:0] == 2'h0; // @[el2_ifu_ic_mem.scala 100:83] + wire _T_239 = ic_rw_addr_ff[1:0] == 2'h1; // @[el2_ifu_ic_mem.scala 101:24] wire [63:0] _T_243 = {wb_dout_way_pre_0[86:71],wb_dout_way_pre_0[63:16]}; // @[Cat.scala 29:58] - wire _T_245 = ic_rw_addr_ff[1:0] == 2'h2; // @[el2_ifu_ic_mem.scala 255:24] + wire _T_245 = ic_rw_addr_ff[1:0] == 2'h2; // @[el2_ifu_ic_mem.scala 102:24] wire [63:0] _T_249 = {wb_dout_way_pre_0[102:71],wb_dout_way_pre_0[63:32]}; // @[Cat.scala 29:58] - wire _T_251 = ic_rw_addr_ff[1:0] == 2'h3; // @[el2_ifu_ic_mem.scala 256:24] + wire _T_251 = ic_rw_addr_ff[1:0] == 2'h3; // @[el2_ifu_ic_mem.scala 103:24] wire [63:0] _T_255 = {wb_dout_way_pre_0[118:71],wb_dout_way_pre_0[63:48]}; // @[Cat.scala 29:58] wire [63:0] _T_256 = _T_235 ? wb_dout_way_pre_0[63:0] : 64'h0; // @[Mux.scala 27:72] wire [63:0] _T_257 = _T_239 ? _T_243 : 64'h0; // @[Mux.scala 27:72] @@ -525,10 +255,10 @@ module EL2_IC_DATA( wire [63:0] _T_289 = _T_285 | _T_286; // @[Mux.scala 27:72] wire [63:0] _T_290 = _T_289 | _T_287; // @[Mux.scala 27:72] wire [63:0] wb_dout_way_1 = _T_290 | _T_288; // @[Mux.scala 27:72] - wire [63:0] wb_dout_way_with_premux_0 = io_ic_sel_premux_data ? io_ic_premux_data : wb_dout_way_0; // @[el2_ifu_ic_mem.scala 258:69] - wire [63:0] wb_dout_way_with_premux_1 = io_ic_sel_premux_data ? io_ic_premux_data : wb_dout_way_1; // @[el2_ifu_ic_mem.scala 258:69] - wire _T_295 = ic_rd_hit_q[0] | io_ic_sel_premux_data; // @[el2_ifu_ic_mem.scala 260:75] - wire _T_298 = ic_rd_hit_q[1] | io_ic_sel_premux_data; // @[el2_ifu_ic_mem.scala 260:75] + wire [63:0] wb_dout_way_with_premux_0 = io_ic_sel_premux_data ? io_ic_premux_data : wb_dout_way_0; // @[el2_ifu_ic_mem.scala 105:69] + wire [63:0] wb_dout_way_with_premux_1 = io_ic_sel_premux_data ? io_ic_premux_data : wb_dout_way_1; // @[el2_ifu_ic_mem.scala 105:69] + wire _T_295 = ic_rd_hit_q[0] | io_ic_sel_premux_data; // @[el2_ifu_ic_mem.scala 107:75] + wire _T_298 = ic_rd_hit_q[1] | io_ic_sel_premux_data; // @[el2_ifu_ic_mem.scala 107:75] wire [63:0] _T_300 = _T_295 ? wb_dout_way_with_premux_0 : 64'h0; // @[Mux.scala 27:72] wire [63:0] _T_301 = _T_298 ? wb_dout_way_with_premux_1 : 64'h0; // @[Mux.scala 27:72] wire [70:0] _T_310 = ic_rd_hit_q[0] ? wb_dout_way_pre_0[70:0] : 71'h0; // @[Mux.scala 27:72] @@ -536,13 +266,13 @@ module EL2_IC_DATA( wire [141:0] _T_318 = ic_rd_hit_q[0] ? wb_dout_way_pre_0 : 142'h0; // @[Mux.scala 27:72] wire [141:0] _T_319 = ic_rd_hit_q[1] ? wb_dout_way_pre_1 : 142'h0; // @[Mux.scala 27:72] wire [141:0] wb_dout_ecc = _T_318 | _T_319; // @[Mux.scala 27:72] - wire _T_321 = |io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 264:75] - wire _T_322 = ~ic_cacheline_wrap_ff; // @[el2_ifu_ic_mem.scala 264:103] - wire _T_325 = ic_b_rden_ff == 2'h3; // @[el2_ifu_ic_mem.scala 264:163] - wire _T_326 = _T_322 & _T_325; // @[el2_ifu_ic_mem.scala 264:125] - wire bank_check_en_0 = _T_321 & _T_326; // @[el2_ifu_ic_mem.scala 264:79] - wire [70:0] wb_dout_ecc_bank_0 = wb_dout_ecc[70:0]; // @[el2_ifu_ic_mem.scala 265:72] - wire [70:0] wb_dout_ecc_bank_1 = wb_dout_ecc[141:71]; // @[el2_ifu_ic_mem.scala 265:72] + wire _T_321 = |io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 111:75] + wire _T_322 = ~ic_cacheline_wrap_ff; // @[el2_ifu_ic_mem.scala 111:103] + wire _T_325 = ic_b_rden_ff == 2'h3; // @[el2_ifu_ic_mem.scala 111:163] + wire _T_326 = _T_322 & _T_325; // @[el2_ifu_ic_mem.scala 111:125] + wire bank_check_en_0 = _T_321 & _T_326; // @[el2_ifu_ic_mem.scala 111:79] + wire [70:0] wb_dout_ecc_bank_0 = wb_dout_ecc[70:0]; // @[el2_ifu_ic_mem.scala 112:72] + wire [70:0] wb_dout_ecc_bank_1 = wb_dout_ecc[141:71]; // @[el2_ifu_ic_mem.scala 112:72] wire [6:0] _T_555 = {wb_dout_ecc_bank_0[63],wb_dout_ecc_bank_0[62],wb_dout_ecc_bank_0[61],wb_dout_ecc_bank_0[60],wb_dout_ecc_bank_0[59],wb_dout_ecc_bank_0[58],wb_dout_ecc_bank_0[57]}; // @[el2_lib.scala 379:41] wire _T_556 = ^_T_555; // @[el2_lib.scala 379:48] wire _T_557 = wb_dout_ecc_bank_0[70] ^ _T_556; // @[el2_lib.scala 379:36] @@ -647,22 +377,22 @@ module EL2_IC_DATA( wire ic_parerr_bank_1_2 = _T_1246 ^ wb_dout_ecc_bank_1[66]; // @[el2_lib.scala 200:27] wire _T_1250 = ^wb_dout_ecc_bank_1[63:48]; // @[el2_lib.scala 200:14] wire ic_parerr_bank_1_3 = _T_1250 ^ wb_dout_ecc_bank_1[67]; // @[el2_lib.scala 200:27] - wire _T_1252 = ic_parerr_bank_0_0 | ic_parerr_bank_0_1; // @[el2_ifu_ic_mem.scala 272:49] - wire _T_1253 = _T_1252 | ic_parerr_bank_0_2; // @[el2_ifu_ic_mem.scala 272:49] - wire _T_1254 = _T_1253 | ic_parerr_bank_0_3; // @[el2_ifu_ic_mem.scala 272:49] - wire _T_1255 = _T_1254 & bank_check_en_0; // @[el2_ifu_ic_mem.scala 272:53] - wire _T_1256 = ic_parerr_bank_1_0 | ic_parerr_bank_1_1; // @[el2_ifu_ic_mem.scala 272:99] - wire _T_1257 = _T_1256 | ic_parerr_bank_1_2; // @[el2_ifu_ic_mem.scala 272:99] - wire _T_1258 = _T_1257 | ic_parerr_bank_1_3; // @[el2_ifu_ic_mem.scala 272:99] - wire _T_1259 = _T_1258 & bank_check_en_0; // @[el2_ifu_ic_mem.scala 272:103] + wire _T_1252 = ic_parerr_bank_0_0 | ic_parerr_bank_0_1; // @[el2_ifu_ic_mem.scala 119:49] + wire _T_1253 = _T_1252 | ic_parerr_bank_0_2; // @[el2_ifu_ic_mem.scala 119:49] + wire _T_1254 = _T_1253 | ic_parerr_bank_0_3; // @[el2_ifu_ic_mem.scala 119:49] + wire _T_1255 = _T_1254 & bank_check_en_0; // @[el2_ifu_ic_mem.scala 119:53] + wire _T_1256 = ic_parerr_bank_1_0 | ic_parerr_bank_1_1; // @[el2_ifu_ic_mem.scala 119:99] + wire _T_1257 = _T_1256 | ic_parerr_bank_1_2; // @[el2_ifu_ic_mem.scala 119:99] + wire _T_1258 = _T_1257 | ic_parerr_bank_1_3; // @[el2_ifu_ic_mem.scala 119:99] + wire _T_1259 = _T_1258 & bank_check_en_0; // @[el2_ifu_ic_mem.scala 119:103] assign data_mem_0_0__T_145_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_0_0__T_145_data = data_mem_0_0[data_mem_0_0__T_145_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_0__T_145_data = data_mem_0_0[data_mem_0_0__T_145_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_0__T_158_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_0__T_158_data = data_mem_0_0[data_mem_0_0__T_158_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_0__T_158_data = data_mem_0_0[data_mem_0_0__T_158_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_0__T_171_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_0_0__T_171_data = data_mem_0_0[data_mem_0_0__T_171_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_0__T_171_data = data_mem_0_0[data_mem_0_0__T_171_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_0__T_184_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_0__T_184_data = data_mem_0_0[data_mem_0_0__T_184_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_0__T_184_data = data_mem_0_0[data_mem_0_0__T_184_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_0__T_139_data = _T_28 ? io_ic_debug_wr_data : io_ic_wr_data_0; assign data_mem_0_0__T_139_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; assign data_mem_0_0__T_139_mask = 1'h1; @@ -680,13 +410,13 @@ module EL2_IC_DATA( assign data_mem_0_0__T_178_mask = 1'h0; assign data_mem_0_0__T_178_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; assign data_mem_0_1__T_145_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_0_1__T_145_data = data_mem_0_1[data_mem_0_1__T_145_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_1__T_145_data = data_mem_0_1[data_mem_0_1__T_145_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_1__T_158_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_1__T_158_data = data_mem_0_1[data_mem_0_1__T_158_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_1__T_158_data = data_mem_0_1[data_mem_0_1__T_158_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_1__T_171_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_0_1__T_171_data = data_mem_0_1[data_mem_0_1__T_171_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_1__T_171_data = data_mem_0_1[data_mem_0_1__T_171_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_1__T_184_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_1__T_184_data = data_mem_0_1[data_mem_0_1__T_184_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_0_1__T_184_data = data_mem_0_1[data_mem_0_1__T_184_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_0_1__T_139_data = 71'h0; assign data_mem_0_1__T_139_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; assign data_mem_0_1__T_139_mask = 1'h0; @@ -704,13 +434,13 @@ module EL2_IC_DATA( assign data_mem_0_1__T_178_mask = 1'h0; assign data_mem_0_1__T_178_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; assign data_mem_1_0__T_145_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_1_0__T_145_data = data_mem_1_0[data_mem_1_0__T_145_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_0__T_145_data = data_mem_1_0[data_mem_1_0__T_145_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_0__T_158_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_0__T_158_data = data_mem_1_0[data_mem_1_0__T_158_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_0__T_158_data = data_mem_1_0[data_mem_1_0__T_158_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_0__T_171_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_1_0__T_171_data = data_mem_1_0[data_mem_1_0__T_171_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_0__T_171_data = data_mem_1_0[data_mem_1_0__T_171_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_0__T_184_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_0__T_184_data = data_mem_1_0[data_mem_1_0__T_184_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_0__T_184_data = data_mem_1_0[data_mem_1_0__T_184_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_0__T_139_data = 71'h0; assign data_mem_1_0__T_139_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; assign data_mem_1_0__T_139_mask = 1'h0; @@ -728,13 +458,13 @@ module EL2_IC_DATA( assign data_mem_1_0__T_178_mask = 1'h0; assign data_mem_1_0__T_178_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; assign data_mem_1_1__T_145_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_1_1__T_145_data = data_mem_1_1[data_mem_1_1__T_145_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_1__T_145_data = data_mem_1_1[data_mem_1_1__T_145_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_1__T_158_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_1__T_158_data = data_mem_1_1[data_mem_1_1__T_158_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_1__T_158_data = data_mem_1_1[data_mem_1_1__T_158_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_1__T_171_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; - assign data_mem_1_1__T_171_data = data_mem_1_1[data_mem_1_1__T_171_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_1__T_171_data = data_mem_1_1[data_mem_1_1__T_171_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_1__T_184_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_1__T_184_data = data_mem_1_1[data_mem_1_1__T_184_addr]; // @[el2_ifu_ic_mem.scala 235:21] + assign data_mem_1_1__T_184_data = data_mem_1_1[data_mem_1_1__T_184_addr]; // @[el2_ifu_ic_mem.scala 82:21] assign data_mem_1_1__T_139_data = 71'h0; assign data_mem_1_1__T_139_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; assign data_mem_1_1__T_139_mask = 1'h0; @@ -751,10 +481,13 @@ module EL2_IC_DATA( assign data_mem_1_1__T_178_addr = ic_rw_addr_q[11:3]; assign data_mem_1_1__T_178_mask = 1'h1; assign data_mem_1_1__T_178_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; - assign io_ic_rd_data = _T_300 | _T_301; // @[el2_ifu_ic_mem.scala 260:17] - assign io_ic_debug_rd_data = _T_310 | _T_311; // @[el2_ifu_ic_mem.scala 261:23] - assign io_ic_parerr = {_T_1255,_T_1259}; // @[el2_ifu_ic_mem.scala 272:16] - assign io_ic_eccerr = {_T_1218,_T_776}; // @[el2_ifu_ic_mem.scala 268:16] + assign io_ic_rd_data = _T_300 | _T_301; // @[el2_ifu_ic_mem.scala 40:17 el2_ifu_ic_mem.scala 107:17] + assign io_ic_debug_rd_data = _T_310 | _T_311; // @[el2_ifu_ic_mem.scala 39:23 el2_ifu_ic_mem.scala 108:23] + assign io_ictag_debug_rd_data = 26'h0; // @[el2_ifu_ic_mem.scala 38:26] + assign io_ic_eccerr = {_T_1218,_T_776}; // @[el2_ifu_ic_mem.scala 37:16 el2_ifu_ic_mem.scala 115:16] + assign io_ic_parerr = {_T_1255,_T_1259}; // @[el2_ifu_ic_mem.scala 36:16 el2_ifu_ic_mem.scala 119:16] + assign io_ic_rd_hit = 2'h0; // @[el2_ifu_ic_mem.scala 35:16] + assign io_ic_tag_perr = 1'h0; // @[el2_ifu_ic_mem.scala 34:18] `ifdef RANDOMIZE_GARBAGE_ASSIGN `define RANDOMIZE `endif @@ -821,52 +554,52 @@ end // initial `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 235:21] + data_mem_0_0[data_mem_0_0__T_139_addr] <= data_mem_0_0__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_0_0__T_152_en & data_mem_0_0__T_152_mask) begin - data_mem_0_0[data_mem_0_0__T_152_addr] <= data_mem_0_0__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_0_0[data_mem_0_0__T_152_addr] <= data_mem_0_0__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_0_0__T_165_en & data_mem_0_0__T_165_mask) begin - data_mem_0_0[data_mem_0_0__T_165_addr] <= data_mem_0_0__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_0_0[data_mem_0_0__T_165_addr] <= data_mem_0_0__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_0_0__T_178_en & data_mem_0_0__T_178_mask) begin - data_mem_0_0[data_mem_0_0__T_178_addr] <= data_mem_0_0__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_0_0[data_mem_0_0__T_178_addr] <= data_mem_0_0__T_178_data; // @[el2_ifu_ic_mem.scala 82: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 235:21] + data_mem_0_1[data_mem_0_1__T_139_addr] <= data_mem_0_1__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_0_1__T_152_en & data_mem_0_1__T_152_mask) begin - data_mem_0_1[data_mem_0_1__T_152_addr] <= data_mem_0_1__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_0_1[data_mem_0_1__T_152_addr] <= data_mem_0_1__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_0_1__T_165_en & data_mem_0_1__T_165_mask) begin - data_mem_0_1[data_mem_0_1__T_165_addr] <= data_mem_0_1__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_0_1[data_mem_0_1__T_165_addr] <= data_mem_0_1__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_0_1__T_178_en & data_mem_0_1__T_178_mask) begin - data_mem_0_1[data_mem_0_1__T_178_addr] <= data_mem_0_1__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_0_1[data_mem_0_1__T_178_addr] <= data_mem_0_1__T_178_data; // @[el2_ifu_ic_mem.scala 82: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 235:21] + data_mem_1_0[data_mem_1_0__T_139_addr] <= data_mem_1_0__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_1_0__T_152_en & data_mem_1_0__T_152_mask) begin - data_mem_1_0[data_mem_1_0__T_152_addr] <= data_mem_1_0__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_1_0[data_mem_1_0__T_152_addr] <= data_mem_1_0__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_1_0__T_165_en & data_mem_1_0__T_165_mask) begin - data_mem_1_0[data_mem_1_0__T_165_addr] <= data_mem_1_0__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_1_0[data_mem_1_0__T_165_addr] <= data_mem_1_0__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_1_0__T_178_en & data_mem_1_0__T_178_mask) begin - data_mem_1_0[data_mem_1_0__T_178_addr] <= data_mem_1_0__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_1_0[data_mem_1_0__T_178_addr] <= data_mem_1_0__T_178_data; // @[el2_ifu_ic_mem.scala 82: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 235:21] + data_mem_1_1[data_mem_1_1__T_139_addr] <= data_mem_1_1__T_139_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_1_1__T_152_en & data_mem_1_1__T_152_mask) begin - data_mem_1_1[data_mem_1_1__T_152_addr] <= data_mem_1_1__T_152_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_1_1[data_mem_1_1__T_152_addr] <= data_mem_1_1__T_152_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_1_1__T_165_en & data_mem_1_1__T_165_mask) begin - data_mem_1_1[data_mem_1_1__T_165_addr] <= data_mem_1_1__T_165_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_1_1[data_mem_1_1__T_165_addr] <= data_mem_1_1__T_165_data; // @[el2_ifu_ic_mem.scala 82:21] end if(data_mem_1_1__T_178_en & data_mem_1_1__T_178_mask) begin - data_mem_1_1[data_mem_1_1__T_178_addr] <= data_mem_1_1__T_178_data; // @[el2_ifu_ic_mem.scala 235:21] + data_mem_1_1[data_mem_1_1__T_178_addr] <= data_mem_1_1__T_178_data; // @[el2_ifu_ic_mem.scala 82:21] end if (reset) begin ic_b_rden_ff <= 2'h0; @@ -890,150 +623,3 @@ end // initial end end endmodule -module el2_ifu_ic_mem( - input clock, - input reset, - input io_scan_mode, - input io_clk_override, - input io_dec_tlu_core_ecc_disable, - input [30:0] io_ic_rw_addr, - input [1:0] io_ic_wr_en, - input io_ic_rd_en, - input [8:0] io_ic_debug_addr, - input io_ic_debug_rd_en, - input io_ic_debug_wr_en, - input io_ic_debug_tag_array, - input [1:0] io_ic_debug_way, - input [63:0] io_ic_premux_data, - input io_ic_sel_premux_data, - input [1:0] io_ic_tag_valid, - input [70:0] io_ic_debug_wr_data, - input [70:0] io_ic_wr_data_0, - input [70:0] io_ic_wr_data_1, - output [63:0] io_ic_rd_data, - output [70:0] io_ic_debug_rd_data, - output [25:0] io_ictag_debug_rd_data, - output [1:0] io_ic_eccerr, - output [1:0] io_ic_parerr, - output [1:0] io_ic_rd_hit, - output io_ic_tag_perr -); - wire ic_tag_inst_clock; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_reset; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_io_clk_override; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_io_dec_tlu_core_ecc_disable; // @[el2_ifu_ic_mem.scala 41:27] - wire [28:0] ic_tag_inst_io_ic_rw_addr; // @[el2_ifu_ic_mem.scala 41:27] - wire [1:0] ic_tag_inst_io_ic_wr_en; // @[el2_ifu_ic_mem.scala 41:27] - wire [1:0] ic_tag_inst_io_ic_tag_valid; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_io_ic_rd_en; // @[el2_ifu_ic_mem.scala 41:27] - wire [9:0] ic_tag_inst_io_ic_debug_addr; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_io_ic_debug_rd_en; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 41:27] - wire [1:0] ic_tag_inst_io_ic_debug_way; // @[el2_ifu_ic_mem.scala 41:27] - wire [25:0] ic_tag_inst_io_ictag_debug_rd_data; // @[el2_ifu_ic_mem.scala 41:27] - wire [70:0] ic_tag_inst_io_ic_debug_wr_data; // @[el2_ifu_ic_mem.scala 41:27] - wire [1:0] ic_tag_inst_io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_tag_inst_io_ic_tag_perr; // @[el2_ifu_ic_mem.scala 41:27] - wire ic_data_inst_clock; // @[el2_ifu_ic_mem.scala 59:28] - wire ic_data_inst_reset; // @[el2_ifu_ic_mem.scala 59:28] - wire ic_data_inst_io_clk_override; // @[el2_ifu_ic_mem.scala 59:28] - wire [11:0] ic_data_inst_io_ic_rw_addr; // @[el2_ifu_ic_mem.scala 59:28] - wire [1:0] ic_data_inst_io_ic_wr_en; // @[el2_ifu_ic_mem.scala 59:28] - wire ic_data_inst_io_ic_rd_en; // @[el2_ifu_ic_mem.scala 59:28] - wire [70:0] ic_data_inst_io_ic_wr_data_0; // @[el2_ifu_ic_mem.scala 59:28] - wire [70:0] ic_data_inst_io_ic_wr_data_1; // @[el2_ifu_ic_mem.scala 59:28] - wire [63:0] ic_data_inst_io_ic_rd_data; // @[el2_ifu_ic_mem.scala 59:28] - wire [70:0] ic_data_inst_io_ic_debug_wr_data; // @[el2_ifu_ic_mem.scala 59:28] - wire [70:0] ic_data_inst_io_ic_debug_rd_data; // @[el2_ifu_ic_mem.scala 59:28] - wire [1:0] ic_data_inst_io_ic_parerr; // @[el2_ifu_ic_mem.scala 59:28] - wire [1:0] ic_data_inst_io_ic_eccerr; // @[el2_ifu_ic_mem.scala 59:28] - wire [8:0] ic_data_inst_io_ic_debug_addr; // @[el2_ifu_ic_mem.scala 59:28] - wire ic_data_inst_io_ic_debug_rd_en; // @[el2_ifu_ic_mem.scala 59:28] - wire ic_data_inst_io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 59:28] - wire ic_data_inst_io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 59:28] - wire [1:0] ic_data_inst_io_ic_debug_way; // @[el2_ifu_ic_mem.scala 59:28] - wire [63:0] ic_data_inst_io_ic_premux_data; // @[el2_ifu_ic_mem.scala 59:28] - wire ic_data_inst_io_ic_sel_premux_data; // @[el2_ifu_ic_mem.scala 59:28] - wire [1:0] ic_data_inst_io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 59:28] - EL2_IC_TAG ic_tag_inst ( // @[el2_ifu_ic_mem.scala 41:27] - .clock(ic_tag_inst_clock), - .reset(ic_tag_inst_reset), - .io_clk_override(ic_tag_inst_io_clk_override), - .io_dec_tlu_core_ecc_disable(ic_tag_inst_io_dec_tlu_core_ecc_disable), - .io_ic_rw_addr(ic_tag_inst_io_ic_rw_addr), - .io_ic_wr_en(ic_tag_inst_io_ic_wr_en), - .io_ic_tag_valid(ic_tag_inst_io_ic_tag_valid), - .io_ic_rd_en(ic_tag_inst_io_ic_rd_en), - .io_ic_debug_addr(ic_tag_inst_io_ic_debug_addr), - .io_ic_debug_rd_en(ic_tag_inst_io_ic_debug_rd_en), - .io_ic_debug_wr_en(ic_tag_inst_io_ic_debug_wr_en), - .io_ic_debug_tag_array(ic_tag_inst_io_ic_debug_tag_array), - .io_ic_debug_way(ic_tag_inst_io_ic_debug_way), - .io_ictag_debug_rd_data(ic_tag_inst_io_ictag_debug_rd_data), - .io_ic_debug_wr_data(ic_tag_inst_io_ic_debug_wr_data), - .io_ic_rd_hit(ic_tag_inst_io_ic_rd_hit), - .io_ic_tag_perr(ic_tag_inst_io_ic_tag_perr) - ); - EL2_IC_DATA ic_data_inst ( // @[el2_ifu_ic_mem.scala 59:28] - .clock(ic_data_inst_clock), - .reset(ic_data_inst_reset), - .io_clk_override(ic_data_inst_io_clk_override), - .io_ic_rw_addr(ic_data_inst_io_ic_rw_addr), - .io_ic_wr_en(ic_data_inst_io_ic_wr_en), - .io_ic_rd_en(ic_data_inst_io_ic_rd_en), - .io_ic_wr_data_0(ic_data_inst_io_ic_wr_data_0), - .io_ic_wr_data_1(ic_data_inst_io_ic_wr_data_1), - .io_ic_rd_data(ic_data_inst_io_ic_rd_data), - .io_ic_debug_wr_data(ic_data_inst_io_ic_debug_wr_data), - .io_ic_debug_rd_data(ic_data_inst_io_ic_debug_rd_data), - .io_ic_parerr(ic_data_inst_io_ic_parerr), - .io_ic_eccerr(ic_data_inst_io_ic_eccerr), - .io_ic_debug_addr(ic_data_inst_io_ic_debug_addr), - .io_ic_debug_rd_en(ic_data_inst_io_ic_debug_rd_en), - .io_ic_debug_wr_en(ic_data_inst_io_ic_debug_wr_en), - .io_ic_debug_tag_array(ic_data_inst_io_ic_debug_tag_array), - .io_ic_debug_way(ic_data_inst_io_ic_debug_way), - .io_ic_premux_data(ic_data_inst_io_ic_premux_data), - .io_ic_sel_premux_data(ic_data_inst_io_ic_sel_premux_data), - .io_ic_rd_hit(ic_data_inst_io_ic_rd_hit) - ); - assign io_ic_rd_data = ic_data_inst_io_ic_rd_data; // @[el2_ifu_ic_mem.scala 40:17 el2_ifu_ic_mem.scala 67:17] - assign io_ic_debug_rd_data = ic_data_inst_io_ic_debug_rd_data; // @[el2_ifu_ic_mem.scala 39:23 el2_ifu_ic_mem.scala 69:23] - assign io_ictag_debug_rd_data = ic_tag_inst_io_ictag_debug_rd_data; // @[el2_ifu_ic_mem.scala 38:26 el2_ifu_ic_mem.scala 54:26] - assign io_ic_eccerr = ic_data_inst_io_ic_eccerr; // @[el2_ifu_ic_mem.scala 37:16 el2_ifu_ic_mem.scala 71:16] - assign io_ic_parerr = ic_data_inst_io_ic_parerr; // @[el2_ifu_ic_mem.scala 36:16 el2_ifu_ic_mem.scala 70:16] - assign io_ic_rd_hit = ic_tag_inst_io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 35:16 el2_ifu_ic_mem.scala 56:16] - assign io_ic_tag_perr = ic_tag_inst_io_ic_tag_perr; // @[el2_ifu_ic_mem.scala 34:18 el2_ifu_ic_mem.scala 57:18] - assign ic_tag_inst_clock = clock; - assign ic_tag_inst_reset = reset; - assign ic_tag_inst_io_clk_override = io_clk_override; // @[el2_ifu_ic_mem.scala 45:31] - assign ic_tag_inst_io_dec_tlu_core_ecc_disable = io_dec_tlu_core_ecc_disable; // @[el2_ifu_ic_mem.scala 44:43] - assign ic_tag_inst_io_ic_rw_addr = io_ic_rw_addr[28:0]; // @[el2_ifu_ic_mem.scala 46:29] - assign ic_tag_inst_io_ic_wr_en = io_ic_wr_en; // @[el2_ifu_ic_mem.scala 47:27] - assign ic_tag_inst_io_ic_tag_valid = io_ic_tag_valid; // @[el2_ifu_ic_mem.scala 43:31] - assign ic_tag_inst_io_ic_rd_en = io_ic_rd_en; // @[el2_ifu_ic_mem.scala 48:27] - assign ic_tag_inst_io_ic_debug_addr = {{1'd0}, io_ic_debug_addr}; // @[el2_ifu_ic_mem.scala 49:32] - assign ic_tag_inst_io_ic_debug_rd_en = io_ic_debug_rd_en; // @[el2_ifu_ic_mem.scala 50:33] - assign ic_tag_inst_io_ic_debug_wr_en = io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 51:33] - assign ic_tag_inst_io_ic_debug_tag_array = io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 52:37] - assign ic_tag_inst_io_ic_debug_way = io_ic_debug_way; // @[el2_ifu_ic_mem.scala 53:31] - assign ic_tag_inst_io_ic_debug_wr_data = io_ic_debug_wr_data; // @[el2_ifu_ic_mem.scala 55:35] - assign ic_data_inst_clock = clock; - assign ic_data_inst_reset = reset; - assign ic_data_inst_io_clk_override = io_clk_override; // @[el2_ifu_ic_mem.scala 60:32] - assign ic_data_inst_io_ic_rw_addr = io_ic_rw_addr[11:0]; // @[el2_ifu_ic_mem.scala 62:30] - assign ic_data_inst_io_ic_wr_en = io_ic_wr_en; // @[el2_ifu_ic_mem.scala 63:28] - assign ic_data_inst_io_ic_rd_en = io_ic_rd_en; // @[el2_ifu_ic_mem.scala 64:28] - assign ic_data_inst_io_ic_wr_data_0 = io_ic_wr_data_0; // @[el2_ifu_ic_mem.scala 66:30] - assign ic_data_inst_io_ic_wr_data_1 = io_ic_wr_data_1; // @[el2_ifu_ic_mem.scala 66:30] - assign ic_data_inst_io_ic_debug_wr_data = io_ic_debug_wr_data; // @[el2_ifu_ic_mem.scala 68:36] - assign ic_data_inst_io_ic_debug_addr = io_ic_debug_addr; // @[el2_ifu_ic_mem.scala 72:33] - assign ic_data_inst_io_ic_debug_rd_en = io_ic_debug_rd_en; // @[el2_ifu_ic_mem.scala 73:34] - assign ic_data_inst_io_ic_debug_wr_en = io_ic_debug_wr_en; // @[el2_ifu_ic_mem.scala 74:34] - assign ic_data_inst_io_ic_debug_tag_array = io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 75:38] - assign ic_data_inst_io_ic_debug_way = io_ic_debug_way; // @[el2_ifu_ic_mem.scala 76:32] - assign ic_data_inst_io_ic_premux_data = io_ic_premux_data; // @[el2_ifu_ic_mem.scala 77:34] - assign ic_data_inst_io_ic_sel_premux_data = io_ic_sel_premux_data; // @[el2_ifu_ic_mem.scala 78:38] - assign ic_data_inst_io_ic_rd_hit = io_ic_rd_hit; // @[el2_ifu_ic_mem.scala 80:29] -endmodule diff --git a/src/main/scala/ifu/el2_ifu_ic_mem.scala b/src/main/scala/ifu/el2_ifu_ic_mem.scala index 5380f6dc..03c45846 100644 --- a/src/main/scala/ifu/el2_ifu_ic_mem.scala +++ b/src/main/scala/ifu/el2_ifu_ic_mem.scala @@ -3,7 +3,7 @@ import lib._ import chisel3.{util, _} import chisel3.util._ -class el2_ifu_ic_mem extends Module with param{ +class el2_ifu_ic_mem extends Module with el2_lib { val io = IO(new Bundle{ val scan_mode = Input(Bool()) val clk_override = Input(Bool()) @@ -38,159 +38,6 @@ class el2_ifu_ic_mem extends Module with param{ io.ictag_debug_rd_data := 0.U io.ic_debug_rd_data := 0.U io.ic_rd_data := 0.U - val ic_tag_inst = Module(new EL2_IC_TAG()) - //ic_tag_inst.io <> io - ic_tag_inst.io.ic_tag_valid := io.ic_tag_valid - ic_tag_inst.io.dec_tlu_core_ecc_disable := io.dec_tlu_core_ecc_disable - ic_tag_inst.io.clk_override := io.clk_override - ic_tag_inst.io.ic_rw_addr := io.ic_rw_addr - ic_tag_inst.io.ic_wr_en := io.ic_wr_en - ic_tag_inst.io.ic_rd_en := io.ic_rd_en - ic_tag_inst.io.ic_debug_addr := io.ic_debug_addr - ic_tag_inst.io.ic_debug_rd_en := io.ic_debug_rd_en - ic_tag_inst.io.ic_debug_wr_en := io.ic_debug_wr_en - ic_tag_inst.io.ic_debug_tag_array := io.ic_debug_tag_array - ic_tag_inst.io.ic_debug_way := io.ic_debug_way - io.ictag_debug_rd_data := ic_tag_inst.io.ictag_debug_rd_data // Output - ic_tag_inst.io.ic_debug_wr_data := io.ic_debug_wr_data - io.ic_rd_hit := ic_tag_inst.io.ic_rd_hit // Output - io.ic_tag_perr := ic_tag_inst.io.ic_tag_perr // Output - ic_tag_inst.io.scan_mode := io.scan_mode - val ic_data_inst = Module(new EL2_IC_DATA()) - ic_data_inst.io.clk_override := io.clk_override - - ic_data_inst.io.ic_rw_addr :=io.ic_rw_addr - ic_data_inst.io.ic_wr_en :=io.ic_wr_en - ic_data_inst.io.ic_rd_en :=io.ic_rd_en - - ic_data_inst.io.ic_wr_data :=io.ic_wr_data - io.ic_rd_data := ic_data_inst.io.ic_rd_data - ic_data_inst.io.ic_debug_wr_data :=io.ic_debug_wr_data - io.ic_debug_rd_data := ic_data_inst.io.ic_debug_rd_data - io.ic_parerr := ic_data_inst.io.ic_parerr - io.ic_eccerr := ic_data_inst.io.ic_eccerr - ic_data_inst.io.ic_debug_addr := io.ic_debug_addr - ic_data_inst.io.ic_debug_rd_en := io.ic_debug_rd_en - ic_data_inst.io.ic_debug_wr_en := io.ic_debug_wr_en - ic_data_inst.io.ic_debug_tag_array := io.ic_debug_tag_array - ic_data_inst.io.ic_debug_way := io.ic_debug_way - ic_data_inst.io.ic_premux_data := io.ic_premux_data - ic_data_inst.io.ic_sel_premux_data := io.ic_sel_premux_data - - ic_data_inst.io.ic_rd_hit :=io.ic_rd_hit - ic_data_inst.io.scan_mode :=io.scan_mode -} - -/////////// ICACHE TAG -class EL2_IC_TAG extends Module with el2_lib with param { - val io = IO(new Bundle{ - val scan_mode = Input(Bool()) - val clk_override = Input(Bool()) - val dec_tlu_core_ecc_disable = Input(Bool()) - val ic_rw_addr = Input(UInt(29.W)) // 32:3 - val ic_wr_en = Input(UInt(ICACHE_NUM_WAYS.W)) - val ic_tag_valid = Input(UInt(ICACHE_NUM_WAYS.W)) - val ic_rd_en = Input(Bool()) - val ic_debug_addr = Input(UInt((ICACHE_INDEX_HI-2).W)) // 12-2 = 10-bit value - val ic_debug_rd_en = Input(Bool()) - val ic_debug_wr_en = Input(Bool()) - val ic_debug_tag_array = Input(Bool()) - val ic_debug_way = Input(UInt(ICACHE_NUM_WAYS.W)) - val ictag_debug_rd_data = Output(UInt(26.W)) - val ic_debug_wr_data = Input(UInt(71.W)) - val ic_rd_hit = Output(UInt(ICACHE_NUM_WAYS.W)) - val ic_tag_perr = Output(Bool()) - }) - io.ictag_debug_rd_data := 0.U - io.ic_rd_hit := 0.U - io.ic_tag_perr := 0.U - val ic_debug_wr_way_en = WireInit(UInt(ICACHE_NUM_WAYS.W), 0.U) - val ic_debug_rd_way_en = WireInit(UInt(ICACHE_NUM_WAYS.W), 0.U) - - val ic_tag_wren = io.ic_wr_en & Fill(ICACHE_NUM_WAYS, io.ic_rw_addr(ICACHE_BEAT_ADDR_HI-3,1)=== Fill(ICACHE_NUM_WAYS-1, 1.U)) - val ic_tag_clken = Fill(ICACHE_NUM_WAYS, io.ic_rd_en|io.clk_override) | io.ic_wr_en | ic_debug_wr_way_en | ic_debug_rd_way_en - - val ic_rd_en_ff = RegNext(io.ic_rd_en, 0.U) - val ic_rw_addr_ff = RegNext(io.ic_rw_addr(31-ICACHE_TAG_LO, 0), 0.U) - - val PAD_BITS = 21 - (32 - ICACHE_TAG_LO) - - ic_debug_rd_way_en := Fill(ICACHE_NUM_WAYS, io.ic_debug_rd_en & io.ic_debug_tag_array) & io.ic_debug_way - ic_debug_wr_way_en := Fill(ICACHE_NUM_WAYS, io.ic_debug_wr_en & io.ic_debug_tag_array) & io.ic_debug_way - - val ic_tag_wren_q = ic_tag_wren | ic_debug_wr_way_en - - val ic_tag_ecc = if(ICACHE_ECC) rvecc_encode(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U - - val ic_tag_parity = if(ICACHE_ECC) rveven_paritygen(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U - - val ic_tag_wr_data = if(ICACHE_TAG_LO==1)Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)), - Cat(if(ICACHE_ECC) ic_tag_ecc(4,0) else ic_tag_parity, io.ic_rw_addr(31-3,ICACHE_TAG_LO-3))) - else Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)), - Cat(if(ICACHE_ECC) Cat(ic_tag_ecc(4,0),Fill(PAD_BITS,0.U)) else Cat(ic_tag_parity,Fill(PAD_BITS,0.U)), io.ic_rw_addr(31-3,ICACHE_TAG_LO-3))) - - val ic_rw_addr_q = Mux((io.ic_debug_rd_en | io.ic_debug_wr_en).asBool,io.ic_debug_addr(ICACHE_INDEX_HI-3,ICACHE_TAG_INDEX_LO-3),io.ic_rw_addr) - - val ic_debug_rd_way_en_ff = RegNext(ic_debug_rd_way_en, 0.U) - - val tag_mem = Mem(ICACHE_TAG_DEPTH, Vec(ICACHE_NUM_WAYS, UInt(Tag_Word.W))) - - val write_vec = VecInit.tabulate(ICACHE_NUM_WAYS)(i=>ic_tag_wren_q(i)&ic_tag_clken(i)) - tag_mem.write(ic_rw_addr_q, VecInit.tabulate(ICACHE_NUM_WAYS)(i=>ic_tag_wr_data), write_vec) - - val read_enable = VecInit.tabulate(ICACHE_NUM_WAYS)(i=>(!ic_tag_wren_q(i))&ic_tag_clken(i)) - - val ic_tag_data_raw = (0 until ICACHE_NUM_WAYS).map(i=>Fill(Tag_Word,read_enable(i))&tag_mem.read(ic_rw_addr_q)(i)) - - val w_tout = if(ICACHE_ECC) VecInit.tabulate(ICACHE_NUM_WAYS)(i=>Cat(ic_tag_data_raw(i)(25,21), ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0))) - else VecInit.tabulate(ICACHE_NUM_WAYS)(i=>Cat(ic_tag_data_raw(i)(21), ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0))) - - val ic_tag_corrected_ecc_unc = Wire(Vec(ICACHE_NUM_WAYS, UInt(7.W))) - val ic_tag_corrected_data_unc = Wire(Vec(ICACHE_NUM_WAYS, UInt(32.W))) - val ic_tag_single_ecc_error = Wire(Vec(ICACHE_NUM_WAYS, UInt(1.W))) - val ic_tag_double_ecc_error = Wire(Vec(ICACHE_NUM_WAYS, UInt(1.W))) - for(i<- 0 until ICACHE_NUM_WAYS){ - val decoded_ecc = if(ICACHE_ECC) rvecc_decode(~io.dec_tlu_core_ecc_disable & ic_rd_en_ff, Cat(0.U(11.W),ic_tag_data_raw(i)(20,0)), Cat(0.U(2.W),ic_tag_data_raw(i)(25,21)), 1.U) - else (0.U, 0.U, 0.U, 0.U) - ic_tag_corrected_ecc_unc(i) := decoded_ecc._1 - ic_tag_corrected_data_unc(i) := decoded_ecc._2 - ic_tag_single_ecc_error(i):= decoded_ecc._3 - ic_tag_double_ecc_error(i) := decoded_ecc._4 - } - - val ic_tag_way_perr = if(ICACHE_ECC)ic_tag_single_ecc_error.reverse.reduce(Cat(_,_)) | ic_tag_double_ecc_error.reverse.reduce(Cat(_,_)) - else (0 until ICACHE_NUM_WAYS).map(i=>rveven_paritycheck(ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0), ic_tag_data_raw(i)(21))).reverse.reduce(Cat(_,_)) - - io.ictag_debug_rd_data := (0 until ICACHE_NUM_WAYS).map(i=> if(ICACHE_ECC) Fill(26, ic_debug_rd_way_en_ff(i))&ic_tag_data_raw(i) else Cat(0.U(4.W), Fill(22, ic_debug_rd_way_en_ff(i)),ic_tag_data_raw(i)(21,0))).reduce(_|_) - io.ic_rd_hit := (0 until ICACHE_NUM_WAYS).map(i=>((w_tout(i)(31-ICACHE_TAG_LO,0)===ic_rw_addr_ff)&io.ic_tag_valid(i)).asUInt()).reverse.reduce(Cat(_,_)) - io.ic_tag_perr := (ic_tag_way_perr & io.ic_tag_valid).orR() -} - - -//////////////////////////////////////////////// - -class EL2_IC_DATA extends Module with el2_lib { - val io = IO (new Bundle{ - val clk_override = Input(Bool()) - val ic_rw_addr = Input(UInt(ICACHE_INDEX_HI.W)) - val ic_wr_en = Input(UInt(ICACHE_NUM_WAYS.W)) - val ic_rd_en = Input(Bool()) - val ic_wr_data = Input(Vec(ICACHE_NUM_WAYS, UInt(71.W))) - val ic_rd_data = Output(UInt(64.W)) - val ic_debug_wr_data = Input(UInt(71.W)) - val ic_debug_rd_data = Output(UInt(71.W)) - val ic_parerr = Output(UInt(ICACHE_NUM_WAYS.W)) - val ic_eccerr = Output(UInt(ICACHE_BANKS_WAY.W)) - val ic_debug_addr = Input(UInt((ICACHE_INDEX_HI-3).W)) - val ic_debug_rd_en = Input(Bool()) - val ic_debug_wr_en = Input(Bool()) - val ic_debug_tag_array = Input(Bool()) - val ic_debug_way = Input(UInt(ICACHE_NUM_WAYS.W)) - val ic_premux_data = Input(UInt(64.W)) - 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 ic_debug_rd_way_en = Fill(ICACHE_NUM_WAYS, io.ic_debug_rd_en & !io.ic_debug_tag_array) & io.ic_debug_way val ic_debug_wr_way_en = Fill(ICACHE_NUM_WAYS, io.ic_debug_wr_en & !io.ic_debug_tag_array) & io.ic_debug_way @@ -207,9 +54,9 @@ class EL2_IC_DATA extends Module with el2_lib { val ic_sb_wr_data = (0 until ICACHE_NUM_WAYS).map(i=> Mux((ic_debug_sel_sb(i)&io.ic_debug_wr_en).asBool, io.ic_debug_wr_data, ic_bank_wr_data(i))) val ic_b_rden = (0 until ICACHE_NUM_WAYS).map(i=> (Mux1H(Seq(!ic_rw_addr_q(ICACHE_BANK_HI-1).asBool -> (i.U === 0.U), - (ic_rw_addr_q(ICACHE_BANK_HI-1)).asBool -> ((ic_rw_addr_q(1,0)===3.U)&(i.U===0.U)), - ic_rw_addr_q(ICACHE_BANK_HI-1).asBool -> (i.U === 1.U), - (!ic_rw_addr_q(ICACHE_BANK_HI-1)).asBool -> ((ic_rw_addr_q(1,0)===3.U)&(i.U === 1.U)))) & ic_rd_en_with_debug).asUInt).reverse.reduce(Cat(_,_)) + (ic_rw_addr_q(ICACHE_BANK_HI-1)).asBool -> ((ic_rw_addr_q(1,0)===3.U)&(i.U===0.U)), + ic_rw_addr_q(ICACHE_BANK_HI-1).asBool -> (i.U === 1.U), + (!ic_rw_addr_q(ICACHE_BANK_HI-1)).asBool -> ((ic_rw_addr_q(1,0)===3.U)&(i.U === 1.U)))) & ic_rd_en_with_debug).asUInt).reverse.reduce(Cat(_,_)) val ic_b_sb_rden = (0 until ic_b_rden.getWidth).map(i=>Fill(ICACHE_NUM_WAYS, ic_b_rden(i))) val ic_bank_way_clken = (0 until ICACHE_BANKS_WAY).map(i=>(0 until ICACHE_NUM_WAYS).map(j=> (ic_b_sb_rden(i)(j) | io.clk_override | ic_b_sb_wren(i)(j)).asUInt).reduce(Cat(_,_))) @@ -229,7 +76,7 @@ class EL2_IC_DATA extends Module with el2_lib { val ic_cacheline_wrap_ff = ic_rw_addr_ff(ICACHE_TAG_INDEX_LO-2,ICACHE_BANK_LO-1) === Fill(ICACHE_TAG_INDEX_LO-ICACHE_BANK_LO, 1.U) -//////////////////////////////////////////// Memory stated + //////////////////////////////////////////// Memory stated val (data_mem_word, tag_mem_word, ecc_offset, tag_word) = DATA_MEM_LINE val wb_dout = Wire(Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W)))) val data_mem = Mem(ICACHE_DATA_DEPTH, Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W)))) @@ -270,7 +117,299 @@ class EL2_IC_DATA extends Module with el2_lib { for(i<-0 until ICACHE_NUM_WAYS; j<-0 until 4){ic_parerr_bank(i)(j):=rveven_paritycheck(wb_dout_ecc_bank(i)(16*(j+1)-1, 16*j), wb_dout_ecc_bank(i)(64+j))} io.ic_parerr := Cat(ic_parerr_bank(0).reduce(_|_) & bank_check_en(0), ic_parerr_bank(1).reduce(_|_) & bank_check_en(1)) + + + + // ICACHE Tag + +// val ic_tag_wren = io.ic_wr_en & Fill(ICACHE_NUM_WAYS, io.ic_rw_addr(ICACHE_BEAT_ADDR_HI-3,1)=== Fill(ICACHE_NUM_WAYS-1, 1.U)) +// val ic_tag_clken = Fill(ICACHE_NUM_WAYS, io.ic_rd_en|io.clk_override) | io.ic_wr_en | ic_debug_wr_way_en | ic_debug_rd_way_en +// +// val ic_rd_en_ff = RegNext(io.ic_rd_en, 0.U) +// val ic_rw_addr_ff = RegNext(io.ic_rw_addr(31-ICACHE_TAG_LO, 0), 0.U) +// +// val PAD_BITS = 21 - (32 - ICACHE_TAG_LO) +// +// val ic_tag_wren_q = ic_tag_wren | ic_debug_wr_way_en +// +// val ic_tag_ecc = if(ICACHE_ECC) rvecc_encode(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U +// +// val ic_tag_parity = if(ICACHE_ECC) rveven_paritygen(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U +// +// val ic_tag_wr_data = if(ICACHE_TAG_LO==1)Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)), +// Cat(if(ICACHE_ECC) ic_tag_ecc(4,0) else ic_tag_parity, io.ic_rw_addr(31-3,ICACHE_TAG_LO-3))) +// else Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)), +// Cat(if(ICACHE_ECC) Cat(ic_tag_ecc(4,0),Fill(PAD_BITS,0.U)) else Cat(ic_tag_parity,Fill(PAD_BITS,0.U)), io.ic_rw_addr(31-3,ICACHE_TAG_LO-3))) +// +// val ic_rw_addr_q = Mux((io.ic_debug_rd_en | io.ic_debug_wr_en).asBool,io.ic_debug_addr(ICACHE_INDEX_HI-3,ICACHE_TAG_INDEX_LO-3),io.ic_rw_addr) +// +// val ic_debug_rd_way_en_ff = RegNext(ic_debug_rd_way_en, 0.U) +// +// val tag_mem = Mem(ICACHE_TAG_DEPTH, Vec(ICACHE_NUM_WAYS, UInt(Tag_Word.W))) +// +// val write_vec = VecInit.tabulate(ICACHE_NUM_WAYS)(i=>ic_tag_wren_q(i)&ic_tag_clken(i)) +// tag_mem.write(ic_rw_addr_q, VecInit.tabulate(ICACHE_NUM_WAYS)(i=>ic_tag_wr_data), write_vec) +// +// val read_enable = VecInit.tabulate(ICACHE_NUM_WAYS)(i=>(!ic_tag_wren_q(i))&ic_tag_clken(i)) +// +// val ic_tag_data_raw = (0 until ICACHE_NUM_WAYS).map(i=>Fill(Tag_Word,read_enable(i))&tag_mem.read(ic_rw_addr_q)(i)) +// +// val w_tout = if(ICACHE_ECC) VecInit.tabulate(ICACHE_NUM_WAYS)(i=>Cat(ic_tag_data_raw(i)(25,21), ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0))) +// else VecInit.tabulate(ICACHE_NUM_WAYS)(i=>Cat(ic_tag_data_raw(i)(21), ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0))) +// +// val ic_tag_corrected_ecc_unc = Wire(Vec(ICACHE_NUM_WAYS, UInt(7.W))) +// val ic_tag_corrected_data_unc = Wire(Vec(ICACHE_NUM_WAYS, UInt(32.W))) +// val ic_tag_single_ecc_error = Wire(Vec(ICACHE_NUM_WAYS, UInt(1.W))) +// val ic_tag_double_ecc_error = Wire(Vec(ICACHE_NUM_WAYS, UInt(1.W))) +// for(i<- 0 until ICACHE_NUM_WAYS){ +// val decoded_ecc = if(ICACHE_ECC) rvecc_decode(~io.dec_tlu_core_ecc_disable & ic_rd_en_ff, Cat(0.U(11.W),ic_tag_data_raw(i)(20,0)), Cat(0.U(2.W),ic_tag_data_raw(i)(25,21)), 1.U) +// else (0.U, 0.U, 0.U, 0.U) +// ic_tag_corrected_ecc_unc(i) := decoded_ecc._1 +// ic_tag_corrected_data_unc(i) := decoded_ecc._2 +// ic_tag_single_ecc_error(i):= decoded_ecc._3 +// ic_tag_double_ecc_error(i) := decoded_ecc._4 +// } +// +// val ic_tag_way_perr = if(ICACHE_ECC)ic_tag_single_ecc_error.reverse.reduce(Cat(_,_)) | ic_tag_double_ecc_error.reverse.reduce(Cat(_,_)) +// else (0 until ICACHE_NUM_WAYS).map(i=>rveven_paritycheck(ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0), ic_tag_data_raw(i)(21))).reverse.reduce(Cat(_,_)) +// +// io.ictag_debug_rd_data := (0 until ICACHE_NUM_WAYS).map(i=> if(ICACHE_ECC) Fill(26, ic_debug_rd_way_en_ff(i))&ic_tag_data_raw(i) else Cat(0.U(4.W), Fill(22, ic_debug_rd_way_en_ff(i)),ic_tag_data_raw(i)(21,0))).reduce(_|_) +// io.ic_rd_hit := (0 until ICACHE_NUM_WAYS).map(i=>((w_tout(i)(31-ICACHE_TAG_LO,0)===ic_rw_addr_ff)&io.ic_tag_valid(i)).asUInt()).reverse.reduce(Cat(_,_)) +// io.ic_tag_perr := (ic_tag_way_perr & io.ic_tag_valid).orR() } + //val ic_tag_inst = Module(new EL2_IC_TAG()) + //ic_tag_inst.io <> io + //ic_tag_inst.io.ic_tag_valid := io.ic_tag_valid +// ic_tag_inst.io.dec_tlu_core_ecc_disable := io.dec_tlu_core_ecc_disable +// ic_tag_inst.io.clk_override := io.clk_override +// ic_tag_inst.io.ic_rw_addr := io.ic_rw_addr +// ic_tag_inst.io.ic_wr_en := io.ic_wr_en +// ic_tag_inst.io.ic_rd_en := io.ic_rd_en +// ic_tag_inst.io.ic_debug_addr := io.ic_debug_addr +// ic_tag_inst.io.ic_debug_rd_en := io.ic_debug_rd_en +// ic_tag_inst.io.ic_debug_wr_en := io.ic_debug_wr_en +// ic_tag_inst.io.ic_debug_tag_array := io.ic_debug_tag_array +// ic_tag_inst.io.ic_debug_way := io.ic_debug_way +// io.ictag_debug_rd_data := ic_tag_inst.io.ictag_debug_rd_data // Output +// ic_tag_inst.io.ic_debug_wr_data := io.ic_debug_wr_data +// io.ic_rd_hit := ic_tag_inst.io.ic_rd_hit // Output +// io.ic_tag_perr := ic_tag_inst.io.ic_tag_perr // Output +// ic_tag_inst.io.scan_mode := io.scan_mode +// val ic_data_inst = Module(new EL2_IC_DATA()) +// ic_data_inst.io.clk_override := io.clk_override +// +// ic_data_inst.io.ic_rw_addr :=io.ic_rw_addr +// ic_data_inst.io.ic_wr_en :=io.ic_wr_en +// ic_data_inst.io.ic_rd_en :=io.ic_rd_en +// +// ic_data_inst.io.ic_wr_data :=io.ic_wr_data +// io.ic_rd_data := ic_data_inst.io.ic_rd_data +// ic_data_inst.io.ic_debug_wr_data :=io.ic_debug_wr_data +// io.ic_debug_rd_data := ic_data_inst.io.ic_debug_rd_data +// io.ic_parerr := ic_data_inst.io.ic_parerr +// io.ic_eccerr := ic_data_inst.io.ic_eccerr +// ic_data_inst.io.ic_debug_addr := io.ic_debug_addr +// ic_data_inst.io.ic_debug_rd_en := io.ic_debug_rd_en +// ic_data_inst.io.ic_debug_wr_en := io.ic_debug_wr_en +// ic_data_inst.io.ic_debug_tag_array := io.ic_debug_tag_array +// ic_data_inst.io.ic_debug_way := io.ic_debug_way +// ic_data_inst.io.ic_premux_data := io.ic_premux_data +// ic_data_inst.io.ic_sel_premux_data := io.ic_sel_premux_data +// +// ic_data_inst.io.ic_rd_hit :=io.ic_rd_hit +// ic_data_inst.io.scan_mode :=io.scan_mode + + +/////////// ICACHE TAG +//class EL2_IC_TAG extends Module with el2_lib with param { +// val io = IO(new Bundle{ +// val scan_mode = Input(Bool()) +// val clk_override = Input(Bool()) +// val dec_tlu_core_ecc_disable = Input(Bool()) +// val ic_rw_addr = Input(UInt(29.W)) // 32:3 +// val ic_wr_en = Input(UInt(ICACHE_NUM_WAYS.W)) +// val ic_tag_valid = Input(UInt(ICACHE_NUM_WAYS.W)) +// val ic_rd_en = Input(Bool()) +// val ic_debug_addr = Input(UInt((ICACHE_INDEX_HI-2).W)) // 12-2 = 10-bit value +// val ic_debug_rd_en = Input(Bool()) +// val ic_debug_wr_en = Input(Bool()) +// val ic_debug_tag_array = Input(Bool()) +// val ic_debug_way = Input(UInt(ICACHE_NUM_WAYS.W)) +// val ictag_debug_rd_data = Output(UInt(26.W)) +// val ic_debug_wr_data = Input(UInt(71.W)) +// val ic_rd_hit = Output(UInt(ICACHE_NUM_WAYS.W)) +// val ic_tag_perr = Output(Bool()) +// }) +// io.ictag_debug_rd_data := 0.U +// io.ic_rd_hit := 0.U +// io.ic_tag_perr := 0.U +// val ic_debug_wr_way_en = WireInit(UInt(ICACHE_NUM_WAYS.W), 0.U) +// val ic_debug_rd_way_en = WireInit(UInt(ICACHE_NUM_WAYS.W), 0.U) +// +// val ic_tag_wren = io.ic_wr_en & Fill(ICACHE_NUM_WAYS, io.ic_rw_addr(ICACHE_BEAT_ADDR_HI-3,1)=== Fill(ICACHE_NUM_WAYS-1, 1.U)) +// val ic_tag_clken = Fill(ICACHE_NUM_WAYS, io.ic_rd_en|io.clk_override) | io.ic_wr_en | ic_debug_wr_way_en | ic_debug_rd_way_en +// +// val ic_rd_en_ff = RegNext(io.ic_rd_en, 0.U) +// val ic_rw_addr_ff = RegNext(io.ic_rw_addr(31-ICACHE_TAG_LO, 0), 0.U) +// +// val PAD_BITS = 21 - (32 - ICACHE_TAG_LO) +// +// ic_debug_rd_way_en := Fill(ICACHE_NUM_WAYS, io.ic_debug_rd_en & io.ic_debug_tag_array) & io.ic_debug_way +// ic_debug_wr_way_en := Fill(ICACHE_NUM_WAYS, io.ic_debug_wr_en & io.ic_debug_tag_array) & io.ic_debug_way +// +// val ic_tag_wren_q = ic_tag_wren | ic_debug_wr_way_en +// +// val ic_tag_ecc = if(ICACHE_ECC) rvecc_encode(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U +// +// val ic_tag_parity = if(ICACHE_ECC) rveven_paritygen(Cat(Fill(ICACHE_TAG_LO,0.U),io.ic_rw_addr(31-3, ICACHE_TAG_LO-3))) else 0.U +// +// val ic_tag_wr_data = if(ICACHE_TAG_LO==1)Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)), +// Cat(if(ICACHE_ECC) ic_tag_ecc(4,0) else ic_tag_parity, io.ic_rw_addr(31-3,ICACHE_TAG_LO-3))) +// else Mux(io.ic_debug_wr_en & io.ic_debug_tag_array, Cat(if(ICACHE_ECC) io.ic_debug_wr_data(68,64) else io.ic_debug_wr_data(64), io.ic_debug_wr_data(31,11)), +// Cat(if(ICACHE_ECC) Cat(ic_tag_ecc(4,0),Fill(PAD_BITS,0.U)) else Cat(ic_tag_parity,Fill(PAD_BITS,0.U)), io.ic_rw_addr(31-3,ICACHE_TAG_LO-3))) +// +// val ic_rw_addr_q = Mux((io.ic_debug_rd_en | io.ic_debug_wr_en).asBool,io.ic_debug_addr(ICACHE_INDEX_HI-3,ICACHE_TAG_INDEX_LO-3),io.ic_rw_addr) +// +// val ic_debug_rd_way_en_ff = RegNext(ic_debug_rd_way_en, 0.U) +// +// val tag_mem = Mem(ICACHE_TAG_DEPTH, Vec(ICACHE_NUM_WAYS, UInt(Tag_Word.W))) +// +// val write_vec = VecInit.tabulate(ICACHE_NUM_WAYS)(i=>ic_tag_wren_q(i)&ic_tag_clken(i)) +// tag_mem.write(ic_rw_addr_q, VecInit.tabulate(ICACHE_NUM_WAYS)(i=>ic_tag_wr_data), write_vec) +// +// val read_enable = VecInit.tabulate(ICACHE_NUM_WAYS)(i=>(!ic_tag_wren_q(i))&ic_tag_clken(i)) +// +// val ic_tag_data_raw = (0 until ICACHE_NUM_WAYS).map(i=>Fill(Tag_Word,read_enable(i))&tag_mem.read(ic_rw_addr_q)(i)) +// +// val w_tout = if(ICACHE_ECC) VecInit.tabulate(ICACHE_NUM_WAYS)(i=>Cat(ic_tag_data_raw(i)(25,21), ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0))) +// else VecInit.tabulate(ICACHE_NUM_WAYS)(i=>Cat(ic_tag_data_raw(i)(21), ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0))) +// +// val ic_tag_corrected_ecc_unc = Wire(Vec(ICACHE_NUM_WAYS, UInt(7.W))) +// val ic_tag_corrected_data_unc = Wire(Vec(ICACHE_NUM_WAYS, UInt(32.W))) +// val ic_tag_single_ecc_error = Wire(Vec(ICACHE_NUM_WAYS, UInt(1.W))) +// val ic_tag_double_ecc_error = Wire(Vec(ICACHE_NUM_WAYS, UInt(1.W))) +// for(i<- 0 until ICACHE_NUM_WAYS){ +// val decoded_ecc = if(ICACHE_ECC) rvecc_decode(~io.dec_tlu_core_ecc_disable & ic_rd_en_ff, Cat(0.U(11.W),ic_tag_data_raw(i)(20,0)), Cat(0.U(2.W),ic_tag_data_raw(i)(25,21)), 1.U) +// else (0.U, 0.U, 0.U, 0.U) +// ic_tag_corrected_ecc_unc(i) := decoded_ecc._1 +// ic_tag_corrected_data_unc(i) := decoded_ecc._2 +// ic_tag_single_ecc_error(i):= decoded_ecc._3 +// ic_tag_double_ecc_error(i) := decoded_ecc._4 +// } +// +// val ic_tag_way_perr = if(ICACHE_ECC)ic_tag_single_ecc_error.reverse.reduce(Cat(_,_)) | ic_tag_double_ecc_error.reverse.reduce(Cat(_,_)) +// else (0 until ICACHE_NUM_WAYS).map(i=>rveven_paritycheck(ic_tag_data_raw(i)(31-ICACHE_TAG_LO,0), ic_tag_data_raw(i)(21))).reverse.reduce(Cat(_,_)) +// +// io.ictag_debug_rd_data := (0 until ICACHE_NUM_WAYS).map(i=> if(ICACHE_ECC) Fill(26, ic_debug_rd_way_en_ff(i))&ic_tag_data_raw(i) else Cat(0.U(4.W), Fill(22, ic_debug_rd_way_en_ff(i)),ic_tag_data_raw(i)(21,0))).reduce(_|_) +// io.ic_rd_hit := (0 until ICACHE_NUM_WAYS).map(i=>((w_tout(i)(31-ICACHE_TAG_LO,0)===ic_rw_addr_ff)&io.ic_tag_valid(i)).asUInt()).reverse.reduce(Cat(_,_)) +// io.ic_tag_perr := (ic_tag_way_perr & io.ic_tag_valid).orR() +//} +// +// +////////////////////////////////////////////////// +// +//class EL2_IC_DATA extends Module with el2_lib { +// val io = IO (new Bundle{ +// val clk_override = Input(Bool()) +// val ic_rw_addr = Input(UInt(ICACHE_INDEX_HI.W)) +// val ic_wr_en = Input(UInt(ICACHE_NUM_WAYS.W)) +// val ic_rd_en = Input(Bool()) +// val ic_wr_data = Input(Vec(ICACHE_NUM_WAYS, UInt(71.W))) +// val ic_rd_data = Output(UInt(64.W)) +// val ic_debug_wr_data = Input(UInt(71.W)) +// val ic_debug_rd_data = Output(UInt(71.W)) +// val ic_parerr = Output(UInt(ICACHE_NUM_WAYS.W)) +// val ic_eccerr = Output(UInt(ICACHE_BANKS_WAY.W)) +// val ic_debug_addr = Input(UInt((ICACHE_INDEX_HI-3).W)) +// val ic_debug_rd_en = Input(Bool()) +// val ic_debug_wr_en = Input(Bool()) +// val ic_debug_tag_array = Input(Bool()) +// val ic_debug_way = Input(UInt(ICACHE_NUM_WAYS.W)) +// val ic_premux_data = Input(UInt(64.W)) +// 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 ic_debug_rd_way_en = Fill(ICACHE_NUM_WAYS, io.ic_debug_rd_en & !io.ic_debug_tag_array) & io.ic_debug_way +// val ic_debug_wr_way_en = Fill(ICACHE_NUM_WAYS, io.ic_debug_wr_en & !io.ic_debug_tag_array) & io.ic_debug_way +// +// val ic_bank_wr_data = Wire(Vec(ICACHE_BANKS_WAY,UInt(71.W))) +// val ic_rd_en_with_debug = WireInit(Bool(), 0.U) +// +// val ic_rw_addr_q = Mux((io.ic_debug_rd_en | io.ic_debug_wr_en).asBool, Cat(io.ic_debug_addr,0.U(2.W)), io.ic_rw_addr) +// +// val ic_rw_addr_q_inc = ic_rw_addr_q(ICACHE_TAG_LO-2,ICACHE_DATA_INDEX_LO-1) + 1.U +// val ic_b_sb_wren = (0 until ICACHE_NUM_WAYS).map(i=> +// io.ic_wr_en | ic_debug_wr_way_en & Fill(ICACHE_NUM_WAYS, io.ic_debug_addr(ICACHE_BANK_HI-3,ICACHE_BANK_LO-3)===i.U)) +// val ic_debug_sel_sb = (0 until ICACHE_NUM_WAYS).map(i=> (io.ic_debug_addr(ICACHE_BANK_HI-3,ICACHE_BANK_LO-3)===i.U).asUInt).reverse.reduce(Cat(_,_)) +// val ic_sb_wr_data = (0 until ICACHE_NUM_WAYS).map(i=> Mux((ic_debug_sel_sb(i)&io.ic_debug_wr_en).asBool, io.ic_debug_wr_data, ic_bank_wr_data(i))) +// val ic_b_rden = (0 until ICACHE_NUM_WAYS).map(i=> +// (Mux1H(Seq(!ic_rw_addr_q(ICACHE_BANK_HI-1).asBool -> (i.U === 0.U), +// (ic_rw_addr_q(ICACHE_BANK_HI-1)).asBool -> ((ic_rw_addr_q(1,0)===3.U)&(i.U===0.U)), +// ic_rw_addr_q(ICACHE_BANK_HI-1).asBool -> (i.U === 1.U), +// (!ic_rw_addr_q(ICACHE_BANK_HI-1)).asBool -> ((ic_rw_addr_q(1,0)===3.U)&(i.U === 1.U)))) & ic_rd_en_with_debug).asUInt).reverse.reduce(Cat(_,_)) +// val ic_b_sb_rden = (0 until ic_b_rden.getWidth).map(i=>Fill(ICACHE_NUM_WAYS, ic_b_rden(i))) +// val ic_bank_way_clken = (0 until ICACHE_BANKS_WAY).map(i=>(0 until ICACHE_NUM_WAYS).map(j=> +// (ic_b_sb_rden(i)(j) | io.clk_override | ic_b_sb_wren(i)(j)).asUInt).reduce(Cat(_,_))) +// +// ic_rd_en_with_debug := io.ic_rd_en | io.ic_debug_rd_en & (!io.ic_wr_en.orR) +// +// val ic_rw_addr_wrap = ic_rw_addr_q(ICACHE_BANK_HI-1) & (ic_rw_addr_q(1,0) === 3.U) & ic_rd_en_with_debug & !(io.ic_wr_en.orR) +// +// val ic_rw_addr_bank_q = VecInit(Mux((!ic_rw_addr_wrap).asBool,ic_rw_addr_q(ICACHE_INDEX_HI-1,ICACHE_DATA_INDEX_LO-1), +// Cat(ic_rw_addr_q(ICACHE_INDEX_HI-1, ICACHE_TAG_INDEX_LO-1) , ic_rw_addr_q_inc(ICACHE_TAG_INDEX_LO-2,ICACHE_DATA_INDEX_LO-1))), +// ic_rw_addr_q(ICACHE_INDEX_HI-1,ICACHE_DATA_INDEX_LO-1)) +// +// val ic_b_rden_ff = RegNext(ic_b_rden, 0.U) +// val ic_rw_addr_ff = RegNext(ic_rw_addr_q(ICACHE_TAG_INDEX_LO-2,0), 0.U) +// val ic_debug_rd_way_en_ff = RegNext(ic_debug_rd_way_en, 0.U) +// val ic_debug_rd_en_ff = RegNext(io.ic_debug_rd_en, 0.U) +// +// val ic_cacheline_wrap_ff = ic_rw_addr_ff(ICACHE_TAG_INDEX_LO-2,ICACHE_BANK_LO-1) === Fill(ICACHE_TAG_INDEX_LO-ICACHE_BANK_LO, 1.U) +// +////////////////////////////////////////////// Memory stated +// val (data_mem_word, tag_mem_word, ecc_offset, tag_word) = DATA_MEM_LINE +// val wb_dout = Wire(Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W)))) +// 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){ +// wb_dout(i)(k) := 0.U +// val WE = if(ICACHE_WAYPACK) ic_b_sb_wren(k).orR else ic_b_sb_wren(k)(i) +// val ME = if(ICACHE_WAYPACK) ic_bank_way_clken(k).orR else ic_bank_way_clken(k)(i) +// when((ic_b_sb_wren(k)(i) & ic_bank_way_clken(k)(i)).asBool){ +// data_mem(ic_rw_addr_bank_q(k))(k)(i) := ic_sb_wr_data(k) +// }.elsewhen((!ic_b_sb_wren(k)(i)&ic_bank_way_clken(k)(i)).asBool){ +// wb_dout(i)(k) := data_mem(ic_rw_addr_bank_q(k))(k)(i) +// } +// } +// val ic_rd_hit_q = Mux(ic_debug_rd_en_ff.asBool, ic_debug_rd_way_en_ff, io.ic_rd_hit) +// ic_bank_wr_data := (0 until ICACHE_BANKS_WAY).map(io.ic_wr_data(_)) +// +// val wb_dout_way_pre = (0 until ICACHE_BANKS_WAY).map(i=>Cat( +// Mux1H((0 until ICACHE_BANKS_WAY).map(j=>(ic_rw_addr_ff(ICACHE_BANK_HI-1, ICACHE_BANK_LO-1)===j.U).asBool->wb_dout(i)(j))), +// Mux1H((0 until ICACHE_BANKS_WAY).map(j=>(ic_rw_addr_ff(ICACHE_BANK_HI-1, ICACHE_BANK_LO-1)===(j.U-1.U)).asBool->wb_dout(i)(j))))) +// +// val wb_dout_way = (0 until ICACHE_NUM_WAYS).map(i=>Mux1H(Seq((ic_rw_addr_ff(1,0)===0.U).asBool->wb_dout_way_pre(i)(63,0), +// (ic_rw_addr_ff(1,0)===1.U).asBool->Cat(wb_dout_way_pre(i)(data_mem_word+15,data_mem_word),wb_dout_way_pre(i)(63,16)), +// (ic_rw_addr_ff(1,0)===2.U).asBool->Cat(wb_dout_way_pre(i)(data_mem_word+31,data_mem_word),wb_dout_way_pre(i)(63,32)), +// (ic_rw_addr_ff(1,0)===3.U).asBool->Cat(wb_dout_way_pre(i)(data_mem_word+47,data_mem_word),wb_dout_way_pre(i)(63,48))))) +// +// val wb_dout_way_with_premux = (0 until ICACHE_NUM_WAYS).map(i=>Mux(io.ic_sel_premux_data.asBool,io.ic_premux_data, wb_dout_way(i))) +// +// io.ic_rd_data := Mux1H((0 until ICACHE_NUM_WAYS).map(i=>(ic_rd_hit_q(i) | io.ic_sel_premux_data).asBool->wb_dout_way_with_premux(i))) +// io.ic_debug_rd_data := Mux1H((0 until ICACHE_NUM_WAYS).map(i=>ic_rd_hit_q(i).asBool->wb_dout_way_pre(i)(70,0))) +// val wb_dout_ecc = Mux1H((0 until ICACHE_NUM_WAYS).map(i=>ic_rd_hit_q(i).asBool->wb_dout_way_pre(i))) +// +// val bank_check_en = for(i<-0 until ICACHE_BANKS_WAY) yield io.ic_rd_hit.orR & ((i.U==0.U).asBool | (!ic_cacheline_wrap_ff & (ic_b_rden_ff(ICACHE_BANKS_WAY-1,0) === Fill(ICACHE_BANKS_WAY,1.U)))) +// val wb_dout_ecc_bank = (0 until ICACHE_BANKS_WAY).map(i=> wb_dout_ecc((data_mem_word*i)+data_mem_word-1,data_mem_word*i)) +// +// // TODO: RVECC +// io.ic_eccerr := (0 until ICACHE_NUM_WAYS).map(i=>rvecc_decode_64(bank_check_en(i),wb_dout_ecc_bank(i)(63,0),wb_dout_ecc_bank(i)(70,64)).asUInt).reverse.reduce(Cat(_,_)) +// val ic_parerr_bank = Wire(Vec(ICACHE_NUM_WAYS, Vec(4, UInt(1.W)))) +// for(i<-0 until ICACHE_NUM_WAYS; j<-0 until 4){ic_parerr_bank(i)(j):=rveven_paritycheck(wb_dout_ecc_bank(i)(16*(j+1)-1, 16*j), wb_dout_ecc_bank(i)(64+j))} +// +// io.ic_parerr := Cat(ic_parerr_bank(0).reduce(_|_) & bank_check_en(0), ic_parerr_bank(1).reduce(_|_) & bank_check_en(1)) +//} object ifu_ic extends App { println((new chisel3.stage.ChiselStage).emitVerilog(new el2_ifu_ic_mem())) 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 deleted file mode 100644 index 7b08864eea5813635f614bedc7d74002aabfecd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4700 zcma)A`FC5z75+xCtw_8iinGv=LP$}AoInIl8cH1kj%^YVFHpyJQXt|*dbS^tpVVh5 zOBdSGjqcEe(uKCrot7*nma{;}IsJ{lp?^bv>#sfiW=8KxdLH%E=lI<_Gxxjq&Ye4V zX7tg2ZrlQ}A2$W=bZ2YXkd;q`)QvSYS(ltk{J!_MDSGTrQW=ajc_)y-?|7Q^i;9&P_7?3b7iL|kkzNvVcWe7#*iZ@& z1qO=^aEh9W>4*Q(v=-*0hNPr7E`1IS5GJDHIgHE<`un58Dk#*M}XAN%V#tReLUP z`@VgFAqqRs$)*HVd}pC{zF}U1n5FHV(hpjhcdPV?IqKyX$}+&IOkX%>6=Dn9@$m#= z*vEyeGT#NZjYg6=*c1#;D_+IS!riz>;y-O+hvq(G;a;utAk(hJpk9F;?LDj3z`{;^ zLTY@%LRxD)Y~hod8@8}Zb5B~hUvoz-WHk4bg+9%VTG*|97`L!Tb5C1%Ky#n9@Sv7E zZeg$HrY&Uk=m`rC>Aufdcvy4K3G^IvJ-2#@J0TMd&_Lfb$J6Cn)nN|o2y(c?wvU5( z86TS%o*EtDzS$WrNC)`=3k4JtI1Mgf&t%ni3tZI$En(~cG?WPHn!|jOx?F+nnb35* zDCcA06wV~kg%VRPm{88E)MQ!UeoKW=-Km_cBv8iZSyjWqpcbe)qhuBnSP%N&ZC5I# z3l`3zKgphRaz-I+n0t31Y(N$-Cza7W-h2jci+%Xv9btLm)(v%tpCokp*Uz+V&i z3*Jfc!xT(4^5XE|__0YDM+@)jFkY1SNNHtBO-#CTo?Wf^+}&M6s!DH=ff}zZoOb-< z_URG_dPmE=XiVF_E8C6E)RSkK)(11CSDp{#dS#tglvQ3))_6r(ts!uQd<^$d zjx}5LvtldCdaWp{wW6%min3BG$~vtmtF)r5(TcJ{E6Vz;D66xgtj&tDGLvqm?d|C2 zcZsbmsUYp%eHHsJlZoLyetT5sMO-CsX#so+2iW3;0FUq+1wR@EUowJs7{LQk@MRpbt5=q1RslnSB&63BX}$dzGejPHm>(X6nxzX-eUwm69wNef*&w~C!^q- zM(~5iIZs8w?;F8;jo_Im_yZ$2Yjpc$6nx7Fe#mI~*(mr!Bluw>`1vUKwh?>^dA&8) z>_U1QUFCmA^yjx$vD?DsI;%WLXTot`o76(ul&tXNpjBDZ@To?bq4e?L@r1EdP zAKQ)(Vvpli>;yiHy@cDbx2R8^y<7EeXq>&=7kGi%1(rG1E$~7rg>KZ@=;x80z#TlS z0PAUVEo&N6@I&T^9HW*KSoX0N#_M0Y<$b))ipuzefS8k zs`A5fEchVghZRm8XM!(9HhDq_zAgD-^-_nV;DeR}EGg=~z>BwR@(AW*Pxi4~2;87G F{1?rdGtvM6 diff --git a/target/scala-2.12/classes/ifu/EL2_IC_DATA.class b/target/scala-2.12/classes/ifu/EL2_IC_DATA.class deleted file mode 100644 index b78aee98061f5d7c447a87da7689cb33c47144fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89207 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 diff --git a/target/scala-2.12/classes/ifu/EL2_IC_TAG$$anon$2.class b/target/scala-2.12/classes/ifu/EL2_IC_TAG$$anon$2.class deleted file mode 100644 index 159bc7f80783849f2c50153ef46767516758cb1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3799 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 R;8PyV)zg_F!j8t+{{!8!;JW|- diff --git a/target/scala-2.12/classes/ifu/el2_ifu_ic_mem.class b/target/scala-2.12/classes/ifu/el2_ifu_ic_mem.class index 5f28a10145f73cb31abd3ffc423a9ccd5d40f595..96a496b7ca7c34911d72d7a34fb8bdcdd325b249 100644 GIT binary patch literal 92679 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 z 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 literal 85305 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 Q2T3m=&U@f4uR00&e&q&_0Mhe