From d39488baa31fce45cd71c96fc4a700e9a8ce923d Mon Sep 17 00:00:00 2001 From: waleed-lm Date: Thu, 1 Oct 2020 13:05:22 +0500 Subject: [PATCH] IFC bits rectified --- EL2_IC_DATA.fir | 528 ++++++++++------- EL2_IC_DATA.v | 542 +++++++++--------- src/main/scala/ifu/el2_ifu_ic_mem.scala | 95 +-- .../scala-2.12/classes/ifu/EL2_IC_DATA.class | Bin 75743 -> 86438 bytes target/scala-2.12/classes/ifu/ifu_ic$.class | Bin 3862 -> 3862 bytes .../classes/ifu/ifu_ic$delayedInit$body.class | Bin 729 -> 729 bytes 6 files changed, 625 insertions(+), 540 deletions(-) diff --git a/EL2_IC_DATA.fir b/EL2_IC_DATA.fir index 0170d20d..61cd7d64 100644 --- a/EL2_IC_DATA.fir +++ b/EL2_IC_DATA.fir @@ -22,8 +22,7 @@ circuit EL2_IC_DATA : _T_6[1] <= _T_5 @[el2_lib.scala 185:48] node _T_7 = cat(_T_6[0], _T_6[1]) @[Cat.scala 29:58] node ic_debug_wr_way_en = and(_T_7, io.ic_debug_way) @[el2_ifu_ic_mem.scala 201:94] - wire ic_bank_wr_data : UInt<71> - ic_bank_wr_data <= UInt<1>("h00") + wire ic_bank_wr_data : UInt<71>[2] @[el2_ifu_ic_mem.scala 203: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 206:45] @@ -53,222 +52,355 @@ circuit EL2_IC_DATA : node _T_27 = bits(ic_debug_sel_sb, 0, 0) @[el2_ifu_ic_mem.scala 212:77] node _T_28 = and(_T_27, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 212:80] node _T_29 = bits(_T_28, 0, 0) @[el2_ifu_ic_mem.scala 212:100] - node _T_30 = bits(ic_bank_wr_data, 0, 0) @[el2_ifu_ic_mem.scala 212:144] - node ic_sb_wr_data_0 = mux(_T_29, io.ic_debug_wr_data, _T_30) @[el2_ifu_ic_mem.scala 212:60] - node _T_31 = bits(ic_debug_sel_sb, 1, 1) @[el2_ifu_ic_mem.scala 212:77] - node _T_32 = and(_T_31, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 212:80] - node _T_33 = bits(_T_32, 0, 0) @[el2_ifu_ic_mem.scala 212:100] - node _T_34 = bits(ic_bank_wr_data, 1, 1) @[el2_ifu_ic_mem.scala 212:144] - node ic_sb_wr_data_1 = mux(_T_33, io.ic_debug_wr_data, _T_34) @[el2_ifu_ic_mem.scala 212:60] - node _T_35 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 214:29] - node _T_36 = bits(_T_35, 0, 0) @[el2_ifu_ic_mem.scala 214:48] - node _T_37 = eq(_T_36, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:16] - node _T_38 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:63] - node _T_39 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 215:42] - node _T_40 = bits(_T_39, 0, 0) @[el2_ifu_ic_mem.scala 215:62] - node _T_41 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 215:86] - node _T_42 = eq(_T_41, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 215:91] - node _T_43 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 215:103] - node _T_44 = and(_T_42, _T_43) @[el2_ifu_ic_mem.scala 215:98] - node _T_45 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 216:42] - node _T_46 = bits(_T_45, 0, 0) @[el2_ifu_ic_mem.scala 216:61] - node _T_47 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 216:76] - node _T_48 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 217:43] - node _T_49 = eq(_T_48, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 217:30] - node _T_50 = bits(_T_49, 0, 0) @[el2_ifu_ic_mem.scala 217:63] - node _T_51 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 217:87] - node _T_52 = eq(_T_51, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 217:92] - node _T_53 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 217:105] - node _T_54 = and(_T_52, _T_53) @[el2_ifu_ic_mem.scala 217:99] - node _T_55 = mux(_T_37, _T_38, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_56 = mux(_T_40, _T_44, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_57 = mux(_T_46, _T_47, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_58 = mux(_T_50, _T_54, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_59 = or(_T_55, _T_56) @[Mux.scala 27:72] - node _T_60 = or(_T_59, _T_57) @[Mux.scala 27:72] - node _T_61 = or(_T_60, _T_58) @[Mux.scala 27:72] - wire _T_62 : UInt<1> @[Mux.scala 27:72] - _T_62 <= _T_61 @[Mux.scala 27:72] - node _T_63 = and(_T_62, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 217:117] - node _T_64 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 214:29] - node _T_65 = bits(_T_64, 0, 0) @[el2_ifu_ic_mem.scala 214:48] - node _T_66 = eq(_T_65, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:16] - node _T_67 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:63] - node _T_68 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 215:42] - node _T_69 = bits(_T_68, 0, 0) @[el2_ifu_ic_mem.scala 215:62] - node _T_70 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 215:86] - node _T_71 = eq(_T_70, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 215:91] - node _T_72 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 215:103] - node _T_73 = and(_T_71, _T_72) @[el2_ifu_ic_mem.scala 215:98] - node _T_74 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 216:42] - node _T_75 = bits(_T_74, 0, 0) @[el2_ifu_ic_mem.scala 216:61] - node _T_76 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 216:76] - node _T_77 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 217:43] - node _T_78 = eq(_T_77, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 217:30] - node _T_79 = bits(_T_78, 0, 0) @[el2_ifu_ic_mem.scala 217:63] - node _T_80 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 217:87] - node _T_81 = eq(_T_80, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 217:92] - node _T_82 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 217:105] - node _T_83 = and(_T_81, _T_82) @[el2_ifu_ic_mem.scala 217:99] - node _T_84 = mux(_T_66, _T_67, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_85 = mux(_T_69, _T_73, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_86 = mux(_T_75, _T_76, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_87 = mux(_T_79, _T_83, UInt<1>("h00")) @[Mux.scala 27:72] - node _T_88 = or(_T_84, _T_85) @[Mux.scala 27:72] - node _T_89 = or(_T_88, _T_86) @[Mux.scala 27:72] - node _T_90 = or(_T_89, _T_87) @[Mux.scala 27:72] - wire _T_91 : UInt<1> @[Mux.scala 27:72] - _T_91 <= _T_90 @[Mux.scala 27:72] - node _T_92 = and(_T_91, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 217:117] - node ic_b_rden = cat(_T_92, _T_63) @[Cat.scala 29:58] - node _T_93 = bits(ic_b_rden, 0, 0) @[el2_ifu_ic_mem.scala 218:89] + node ic_sb_wr_data_0 = mux(_T_29, io.ic_debug_wr_data, ic_bank_wr_data[0]) @[el2_ifu_ic_mem.scala 212:60] + node _T_30 = bits(ic_debug_sel_sb, 1, 1) @[el2_ifu_ic_mem.scala 212:77] + node _T_31 = and(_T_30, io.ic_debug_wr_en) @[el2_ifu_ic_mem.scala 212:80] + node _T_32 = bits(_T_31, 0, 0) @[el2_ifu_ic_mem.scala 212: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 212:60] + node _T_33 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 214:29] + node _T_34 = bits(_T_33, 0, 0) @[el2_ifu_ic_mem.scala 214:48] + node _T_35 = eq(_T_34, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:16] + node _T_36 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:63] + node _T_37 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 215:42] + node _T_38 = bits(_T_37, 0, 0) @[el2_ifu_ic_mem.scala 215:62] + node _T_39 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 215:86] + node _T_40 = eq(_T_39, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 215:91] + node _T_41 = eq(UInt<1>("h00"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 215:103] + node _T_42 = and(_T_40, _T_41) @[el2_ifu_ic_mem.scala 215:98] + node _T_43 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 216:42] + node _T_44 = bits(_T_43, 0, 0) @[el2_ifu_ic_mem.scala 216:61] + node _T_45 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 216:76] + node _T_46 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 217:43] + node _T_47 = eq(_T_46, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 217:30] + node _T_48 = bits(_T_47, 0, 0) @[el2_ifu_ic_mem.scala 217:63] + node _T_49 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 217:87] + node _T_50 = eq(_T_49, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 217:92] + node _T_51 = eq(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 217:105] + node _T_52 = and(_T_50, _T_51) @[el2_ifu_ic_mem.scala 217:99] + 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] + node _T_56 = mux(_T_48, _T_52, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_57 = or(_T_53, _T_54) @[Mux.scala 27:72] + node _T_58 = or(_T_57, _T_55) @[Mux.scala 27:72] + 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 217:117] + node _T_62 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 214:29] + node _T_63 = bits(_T_62, 0, 0) @[el2_ifu_ic_mem.scala 214:48] + node _T_64 = eq(_T_63, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:16] + node _T_65 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 214:63] + node _T_66 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 215:42] + node _T_67 = bits(_T_66, 0, 0) @[el2_ifu_ic_mem.scala 215:62] + node _T_68 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 215:86] + node _T_69 = eq(_T_68, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 215:91] + node _T_70 = eq(UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_ic_mem.scala 215:103] + node _T_71 = and(_T_69, _T_70) @[el2_ifu_ic_mem.scala 215:98] + node _T_72 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 216:42] + node _T_73 = bits(_T_72, 0, 0) @[el2_ifu_ic_mem.scala 216:61] + node _T_74 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 216:76] + node _T_75 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 217:43] + node _T_76 = eq(_T_75, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 217:30] + node _T_77 = bits(_T_76, 0, 0) @[el2_ifu_ic_mem.scala 217:63] + node _T_78 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 217:87] + node _T_79 = eq(_T_78, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 217:92] + node _T_80 = eq(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 217:105] + node _T_81 = and(_T_79, _T_80) @[el2_ifu_ic_mem.scala 217:99] + 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] + node _T_85 = mux(_T_77, _T_81, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_86 = or(_T_82, _T_83) @[Mux.scala 27:72] + node _T_87 = or(_T_86, _T_84) @[Mux.scala 27:72] + 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 217:117] + 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 218: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 218:89] node _T_94 = bits(_T_93, 0, 0) @[Bitwise.scala 72:15] - node ic_b_sb_rden_0 = mux(_T_94, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_95 = bits(ic_b_rden, 1, 1) @[el2_ifu_ic_mem.scala 218:89] - node _T_96 = bits(_T_95, 0, 0) @[Bitwise.scala 72:15] - node ic_b_sb_rden_1 = mux(_T_96, UInt<2>("h03"), UInt<2>("h00")) @[Bitwise.scala 72:12] - node _T_97 = bits(ic_b_sb_rden_0, 0, 0) @[el2_ifu_ic_mem.scala 220:21] - node _T_98 = or(_T_97, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] - node _T_99 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 220:60] - node _T_100 = or(_T_98, _T_99) @[el2_ifu_ic_mem.scala 220:43] - node _T_101 = bits(ic_b_sb_rden_0, 1, 1) @[el2_ifu_ic_mem.scala 220:21] - node _T_102 = or(_T_101, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] - node _T_103 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 220:60] - node _T_104 = or(_T_102, _T_103) @[el2_ifu_ic_mem.scala 220:43] - node ic_bank_way_clken_0 = cat(_T_100, _T_104) @[Cat.scala 29:58] - node _T_105 = bits(ic_b_sb_rden_1, 0, 0) @[el2_ifu_ic_mem.scala 220:21] - node _T_106 = or(_T_105, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] - node _T_107 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 220:60] - node _T_108 = or(_T_106, _T_107) @[el2_ifu_ic_mem.scala 220:43] - node _T_109 = bits(ic_b_sb_rden_1, 1, 1) @[el2_ifu_ic_mem.scala 220:21] - node _T_110 = or(_T_109, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] - node _T_111 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 220:60] - node _T_112 = or(_T_110, _T_111) @[el2_ifu_ic_mem.scala 220:43] - node ic_bank_way_clken_1 = cat(_T_108, _T_112) @[Cat.scala 29:58] - node _T_113 = orr(io.ic_wr_en) @[el2_ifu_ic_mem.scala 222:74] - node _T_114 = eq(_T_113, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 222:61] - node _T_115 = and(io.ic_debug_rd_en, _T_114) @[el2_ifu_ic_mem.scala 222:58] - node _T_116 = or(io.ic_rd_en, _T_115) @[el2_ifu_ic_mem.scala 222:38] - ic_rd_en_with_debug <= _T_116 @[el2_ifu_ic_mem.scala 222:23] - node _T_117 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 224:37] - node _T_118 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 224:71] - node _T_119 = eq(_T_118, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 224:77] - node _T_120 = and(_T_117, _T_119) @[el2_ifu_ic_mem.scala 224:56] - node _T_121 = and(_T_120, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 224:86] - node _T_122 = orr(io.ic_wr_en) @[el2_ifu_ic_mem.scala 224:124] - node _T_123 = eq(_T_122, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 224:110] - node ic_rw_addr_wrap = and(_T_121, _T_123) @[el2_ifu_ic_mem.scala 224:108] - node _T_124 = eq(ic_rw_addr_wrap, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 226:40] - node _T_125 = bits(_T_124, 0, 0) @[el2_ifu_ic_mem.scala 226:58] - node _T_126 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 226:77] - node _T_127 = bits(ic_rw_addr_q, 11, 5) @[el2_ifu_ic_mem.scala 227:21] - node _T_128 = bits(ic_rw_addr_q_inc, 4, 3) @[el2_ifu_ic_mem.scala 227:82] - node _T_129 = cat(_T_127, _T_128) @[Cat.scala 29:58] - node _T_130 = mux(_T_125, _T_126, _T_129) @[el2_ifu_ic_mem.scala 226:38] - node _T_131 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 228:17] + 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 220:21] + node _T_96 = or(_T_95, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] + node _T_97 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 220:60] + node _T_98 = or(_T_96, _T_97) @[el2_ifu_ic_mem.scala 220:43] + node _T_99 = bits(ic_b_sb_rden_0, 1, 1) @[el2_ifu_ic_mem.scala 220:21] + node _T_100 = or(_T_99, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] + node _T_101 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 220:60] + node _T_102 = or(_T_100, _T_101) @[el2_ifu_ic_mem.scala 220: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 220:21] + node _T_104 = or(_T_103, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] + node _T_105 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 220:60] + node _T_106 = or(_T_104, _T_105) @[el2_ifu_ic_mem.scala 220:43] + node _T_107 = bits(ic_b_sb_rden_1, 1, 1) @[el2_ifu_ic_mem.scala 220:21] + node _T_108 = or(_T_107, io.clk_override) @[el2_ifu_ic_mem.scala 220:25] + node _T_109 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 220:60] + node _T_110 = or(_T_108, _T_109) @[el2_ifu_ic_mem.scala 220: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 222:74] + node _T_112 = eq(_T_111, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 222:61] + node _T_113 = and(io.ic_debug_rd_en, _T_112) @[el2_ifu_ic_mem.scala 222:58] + node _T_114 = or(io.ic_rd_en, _T_113) @[el2_ifu_ic_mem.scala 222:38] + ic_rd_en_with_debug <= _T_114 @[el2_ifu_ic_mem.scala 222:23] + node _T_115 = bits(ic_rw_addr_q, 2, 2) @[el2_ifu_ic_mem.scala 224:37] + node _T_116 = bits(ic_rw_addr_q, 1, 0) @[el2_ifu_ic_mem.scala 224:71] + node _T_117 = eq(_T_116, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 224:77] + node _T_118 = and(_T_115, _T_117) @[el2_ifu_ic_mem.scala 224:56] + node _T_119 = and(_T_118, ic_rd_en_with_debug) @[el2_ifu_ic_mem.scala 224:86] + node _T_120 = orr(io.ic_wr_en) @[el2_ifu_ic_mem.scala 224:124] + node _T_121 = eq(_T_120, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 224:110] + node ic_rw_addr_wrap = and(_T_119, _T_121) @[el2_ifu_ic_mem.scala 224:108] + node _T_122 = eq(ic_rw_addr_wrap, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 226:40] + node _T_123 = bits(_T_122, 0, 0) @[el2_ifu_ic_mem.scala 226:58] + node _T_124 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 226:77] + node _T_125 = bits(ic_rw_addr_q, 11, 5) @[el2_ifu_ic_mem.scala 227:21] + node _T_126 = bits(ic_rw_addr_q_inc, 4, 3) @[el2_ifu_ic_mem.scala 227: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 226:38] + node _T_129 = bits(ic_rw_addr_q, 11, 3) @[el2_ifu_ic_mem.scala 228:17] wire ic_rw_addr_bank_q : UInt<9>[2] @[el2_ifu_ic_mem.scala 226:34] - ic_rw_addr_bank_q[0] <= _T_130 @[el2_ifu_ic_mem.scala 226:34] - ic_rw_addr_bank_q[1] <= _T_131 @[el2_ifu_ic_mem.scala 226:34] + ic_rw_addr_bank_q[0] <= _T_128 @[el2_ifu_ic_mem.scala 226:34] + ic_rw_addr_bank_q[1] <= _T_129 @[el2_ifu_ic_mem.scala 226:34] reg ic_b_rden_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 233:29] ic_b_rden_ff <= ic_b_rden @[el2_ifu_ic_mem.scala 233:29] - node _T_132 = bits(ic_rw_addr_q, 4, 0) @[el2_ifu_ic_mem.scala 234:43] + node _T_130 = bits(ic_rw_addr_q, 4, 0) @[el2_ifu_ic_mem.scala 234:43] reg ic_rw_addr_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 234:30] - ic_rw_addr_ff <= _T_132 @[el2_ifu_ic_mem.scala 234:30] + ic_rw_addr_ff <= _T_130 @[el2_ifu_ic_mem.scala 234:30] reg ic_debug_rd_way_en_ff : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 235:38] ic_debug_rd_way_en_ff <= ic_debug_rd_way_en @[el2_ifu_ic_mem.scala 235:38] reg ic_debug_rd_en_ff : UInt<1>, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_ic_mem.scala 236:34] ic_debug_rd_en_ff <= io.ic_debug_rd_en @[el2_ifu_ic_mem.scala 236:34] - node _T_133 = bits(ic_rw_addr_ff, 4, 2) @[el2_ifu_ic_mem.scala 238:43] - node _T_134 = mux(UInt<1>("h01"), UInt<3>("h07"), UInt<3>("h00")) @[Bitwise.scala 72:12] - node ic_cacheline_wrap_ff = eq(_T_133, _T_134) @[el2_ifu_ic_mem.scala 238:84] - wire wb_out : UInt<71>[2][2] @[el2_ifu_ic_mem.scala 242:20] + node _T_131 = bits(ic_rw_addr_ff, 4, 2) @[el2_ifu_ic_mem.scala 238: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 238:84] + wire wb_dout : UInt<71>[2][2] @[el2_ifu_ic_mem.scala 242:21] cmem data_mem : UInt<71>[2][2][512] @[el2_ifu_ic_mem.scala 243:21] - wb_out[0][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:18] - node _T_135 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 246:73] - node _T_136 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 247:83] - node _T_137 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 248:26] - node _T_138 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 248:52] - node _T_139 = and(_T_137, _T_138) @[el2_ifu_ic_mem.scala 248:30] - node _T_140 = bits(_T_139, 0, 0) @[el2_ifu_ic_mem.scala 248:57] - when _T_140 : @[el2_ifu_ic_mem.scala 248:64] - infer mport _T_141 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 249:15] - _T_141[0][0] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + wb_dout[0][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:19] + node _T_133 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 246:73] + node _T_134 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 247:83] + node _T_135 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 248:26] + node _T_136 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 248:52] + node _T_137 = and(_T_135, _T_136) @[el2_ifu_ic_mem.scala 248:30] + node _T_138 = bits(_T_137, 0, 0) @[el2_ifu_ic_mem.scala 248:57] + when _T_138 : @[el2_ifu_ic_mem.scala 248:64] + infer mport _T_139 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_139[0][0] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] skip @[el2_ifu_ic_mem.scala 248:64] else : @[el2_ifu_ic_mem.scala 250:69] - node _T_142 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 250:33] - node _T_143 = eq(_T_142, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] - node _T_144 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 250:57] - node _T_145 = and(_T_143, _T_144) @[el2_ifu_ic_mem.scala 250:36] - node _T_146 = bits(_T_145, 0, 0) @[el2_ifu_ic_mem.scala 250:62] - when _T_146 : @[el2_ifu_ic_mem.scala 250:69] - infer mport _T_147 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 251:31] - wb_out[0][0] <= _T_147[0][0] @[el2_ifu_ic_mem.scala 251:20] + node _T_140 = bits(ic_b_sb_wren_0, 0, 0) @[el2_ifu_ic_mem.scala 250:33] + node _T_141 = eq(_T_140, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_142 = bits(ic_bank_way_clken_0, 0, 0) @[el2_ifu_ic_mem.scala 250:57] + node _T_143 = and(_T_141, _T_142) @[el2_ifu_ic_mem.scala 250:36] + node _T_144 = bits(_T_143, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_144 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_145 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 251:32] + wb_dout[0][0] <= _T_145[0][0] @[el2_ifu_ic_mem.scala 251:21] skip @[el2_ifu_ic_mem.scala 250:69] - wb_out[0][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:18] - node _T_148 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 246:73] - node _T_149 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 247:83] - node _T_150 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 248:26] - node _T_151 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 248:52] - node _T_152 = and(_T_150, _T_151) @[el2_ifu_ic_mem.scala 248:30] - node _T_153 = bits(_T_152, 0, 0) @[el2_ifu_ic_mem.scala 248:57] - when _T_153 : @[el2_ifu_ic_mem.scala 248:64] - infer mport _T_154 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 249:15] - _T_154[1][0] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + wb_dout[0][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:19] + node _T_146 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 246:73] + node _T_147 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 247:83] + node _T_148 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 248:26] + node _T_149 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 248:52] + node _T_150 = and(_T_148, _T_149) @[el2_ifu_ic_mem.scala 248:30] + node _T_151 = bits(_T_150, 0, 0) @[el2_ifu_ic_mem.scala 248:57] + when _T_151 : @[el2_ifu_ic_mem.scala 248:64] + infer mport _T_152 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_152[1][0] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] skip @[el2_ifu_ic_mem.scala 248:64] else : @[el2_ifu_ic_mem.scala 250:69] - node _T_155 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 250:33] - node _T_156 = eq(_T_155, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] - node _T_157 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 250:57] - node _T_158 = and(_T_156, _T_157) @[el2_ifu_ic_mem.scala 250:36] - node _T_159 = bits(_T_158, 0, 0) @[el2_ifu_ic_mem.scala 250:62] - when _T_159 : @[el2_ifu_ic_mem.scala 250:69] - infer mport _T_160 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 251:31] - wb_out[0][1] <= _T_160[1][0] @[el2_ifu_ic_mem.scala 251:20] + node _T_153 = bits(ic_b_sb_wren_1, 0, 0) @[el2_ifu_ic_mem.scala 250:33] + node _T_154 = eq(_T_153, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_155 = bits(ic_bank_way_clken_1, 0, 0) @[el2_ifu_ic_mem.scala 250:57] + node _T_156 = and(_T_154, _T_155) @[el2_ifu_ic_mem.scala 250:36] + node _T_157 = bits(_T_156, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_157 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_158 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 251:32] + wb_dout[0][1] <= _T_158[1][0] @[el2_ifu_ic_mem.scala 251:21] skip @[el2_ifu_ic_mem.scala 250:69] - wb_out[1][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:18] - node _T_161 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 246:73] - node _T_162 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 247:83] - node _T_163 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 248:26] - node _T_164 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 248:52] - node _T_165 = and(_T_163, _T_164) @[el2_ifu_ic_mem.scala 248:30] - node _T_166 = bits(_T_165, 0, 0) @[el2_ifu_ic_mem.scala 248:57] - when _T_166 : @[el2_ifu_ic_mem.scala 248:64] - infer mport _T_167 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 249:15] - _T_167[0][1] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + wb_dout[1][0] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:19] + node _T_159 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 246:73] + node _T_160 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 247:83] + node _T_161 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 248:26] + node _T_162 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 248:52] + node _T_163 = and(_T_161, _T_162) @[el2_ifu_ic_mem.scala 248:30] + node _T_164 = bits(_T_163, 0, 0) @[el2_ifu_ic_mem.scala 248:57] + when _T_164 : @[el2_ifu_ic_mem.scala 248:64] + infer mport _T_165 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_165[0][1] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] skip @[el2_ifu_ic_mem.scala 248:64] else : @[el2_ifu_ic_mem.scala 250:69] - node _T_168 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 250:33] - node _T_169 = eq(_T_168, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] - node _T_170 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 250:57] - node _T_171 = and(_T_169, _T_170) @[el2_ifu_ic_mem.scala 250:36] - node _T_172 = bits(_T_171, 0, 0) @[el2_ifu_ic_mem.scala 250:62] - when _T_172 : @[el2_ifu_ic_mem.scala 250:69] - infer mport _T_173 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 251:31] - wb_out[1][0] <= _T_173[0][1] @[el2_ifu_ic_mem.scala 251:20] + node _T_166 = bits(ic_b_sb_wren_0, 1, 1) @[el2_ifu_ic_mem.scala 250:33] + node _T_167 = eq(_T_166, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_168 = bits(ic_bank_way_clken_0, 1, 1) @[el2_ifu_ic_mem.scala 250:57] + node _T_169 = and(_T_167, _T_168) @[el2_ifu_ic_mem.scala 250:36] + node _T_170 = bits(_T_169, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_170 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_171 = data_mem[ic_rw_addr_bank_q[0]], clock @[el2_ifu_ic_mem.scala 251:32] + wb_dout[1][0] <= _T_171[0][1] @[el2_ifu_ic_mem.scala 251:21] skip @[el2_ifu_ic_mem.scala 250:69] - wb_out[1][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:18] - node _T_174 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 246:73] - node _T_175 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 247:83] - node _T_176 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 248:26] - node _T_177 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 248:52] - node _T_178 = and(_T_176, _T_177) @[el2_ifu_ic_mem.scala 248:30] - node _T_179 = bits(_T_178, 0, 0) @[el2_ifu_ic_mem.scala 248:57] - when _T_179 : @[el2_ifu_ic_mem.scala 248:64] - infer mport _T_180 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 249:15] - _T_180[1][1] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] + wb_dout[1][1] <= UInt<1>("h00") @[el2_ifu_ic_mem.scala 245:19] + node _T_172 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 246:73] + node _T_173 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 247:83] + node _T_174 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 248:26] + node _T_175 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 248:52] + node _T_176 = and(_T_174, _T_175) @[el2_ifu_ic_mem.scala 248:30] + node _T_177 = bits(_T_176, 0, 0) @[el2_ifu_ic_mem.scala 248:57] + when _T_177 : @[el2_ifu_ic_mem.scala 248:64] + infer mport _T_178 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 249:15] + _T_178[1][1] <= io.test_in @[el2_ifu_ic_mem.scala 249:44] skip @[el2_ifu_ic_mem.scala 248:64] else : @[el2_ifu_ic_mem.scala 250:69] - node _T_181 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 250:33] - node _T_182 = eq(_T_181, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] - node _T_183 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 250:57] - node _T_184 = and(_T_182, _T_183) @[el2_ifu_ic_mem.scala 250:36] - node _T_185 = bits(_T_184, 0, 0) @[el2_ifu_ic_mem.scala 250:62] - when _T_185 : @[el2_ifu_ic_mem.scala 250:69] - infer mport _T_186 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 251:31] - wb_out[1][1] <= _T_186[1][1] @[el2_ifu_ic_mem.scala 251:20] + node _T_179 = bits(ic_b_sb_wren_1, 1, 1) @[el2_ifu_ic_mem.scala 250:33] + node _T_180 = eq(_T_179, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 250:17] + node _T_181 = bits(ic_bank_way_clken_1, 1, 1) @[el2_ifu_ic_mem.scala 250:57] + node _T_182 = and(_T_180, _T_181) @[el2_ifu_ic_mem.scala 250:36] + node _T_183 = bits(_T_182, 0, 0) @[el2_ifu_ic_mem.scala 250:62] + when _T_183 : @[el2_ifu_ic_mem.scala 250:69] + infer mport _T_184 = data_mem[ic_rw_addr_bank_q[1]], clock @[el2_ifu_ic_mem.scala 251:32] + wb_dout[1][1] <= _T_184[1][1] @[el2_ifu_ic_mem.scala 251:21] skip @[el2_ifu_ic_mem.scala 250:69] - io.test_port[0][0] <= wb_out[0][0] @[el2_ifu_ic_mem.scala 254:16] - io.test_port[0][1] <= wb_out[0][1] @[el2_ifu_ic_mem.scala 254:16] - io.test_port[1][0] <= wb_out[1][0] @[el2_ifu_ic_mem.scala 254:16] - io.test_port[1][1] <= wb_out[1][1] @[el2_ifu_ic_mem.scala 254:16] + io.test_port[0][0] <= wb_dout[0][0] @[el2_ifu_ic_mem.scala 254:16] + io.test_port[0][1] <= wb_dout[0][1] @[el2_ifu_ic_mem.scala 254:16] + io.test_port[1][0] <= wb_dout[1][0] @[el2_ifu_ic_mem.scala 254:16] + io.test_port[1][1] <= wb_dout[1][1] @[el2_ifu_ic_mem.scala 254:16] + node _T_185 = bits(ic_debug_rd_en_ff, 0, 0) @[el2_ifu_ic_mem.scala 255:43] + node ic_rd_hit_q = mux(_T_185, ic_debug_rd_way_en_ff, io.ic_rd_hit) @[el2_ifu_ic_mem.scala 255:24] + ic_bank_wr_data[0] <= io.ic_wr_data[0] @[el2_ifu_ic_mem.scala 256:19] + ic_bank_wr_data[1] <= io.ic_wr_data[1] @[el2_ifu_ic_mem.scala 256:19] + node _T_186 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 259:59] + node _T_187 = eq(_T_186, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 259:95] + node _T_188 = bits(_T_187, 0, 0) @[el2_ifu_ic_mem.scala 259:103] + node _T_189 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 259:59] + node _T_190 = eq(_T_189, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 259:95] + node _T_191 = bits(_T_190, 0, 0) @[el2_ifu_ic_mem.scala 259: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 260:59] + node _T_197 = sub(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 260:102] + node _T_198 = tail(_T_197, 1) @[el2_ifu_ic_mem.scala 260:102] + node _T_199 = eq(_T_196, _T_198) @[el2_ifu_ic_mem.scala 260:95] + node _T_200 = bits(_T_199, 0, 0) @[el2_ifu_ic_mem.scala 260:109] + node _T_201 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 260:59] + node _T_202 = sub(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 260:102] + node _T_203 = tail(_T_202, 1) @[el2_ifu_ic_mem.scala 260:102] + node _T_204 = eq(_T_201, _T_203) @[el2_ifu_ic_mem.scala 260:95] + node _T_205 = bits(_T_204, 0, 0) @[el2_ifu_ic_mem.scala 260: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 259:59] + node _T_211 = eq(_T_210, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 259:95] + node _T_212 = bits(_T_211, 0, 0) @[el2_ifu_ic_mem.scala 259:103] + node _T_213 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 259:59] + node _T_214 = eq(_T_213, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 259:95] + node _T_215 = bits(_T_214, 0, 0) @[el2_ifu_ic_mem.scala 259: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 260:59] + node _T_221 = sub(UInt<1>("h00"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 260:102] + node _T_222 = tail(_T_221, 1) @[el2_ifu_ic_mem.scala 260:102] + node _T_223 = eq(_T_220, _T_222) @[el2_ifu_ic_mem.scala 260:95] + node _T_224 = bits(_T_223, 0, 0) @[el2_ifu_ic_mem.scala 260:109] + node _T_225 = bits(ic_rw_addr_ff, 2, 2) @[el2_ifu_ic_mem.scala 260:59] + node _T_226 = sub(UInt<1>("h01"), UInt<1>("h01")) @[el2_ifu_ic_mem.scala 260:102] + node _T_227 = tail(_T_226, 1) @[el2_ifu_ic_mem.scala 260:102] + node _T_228 = eq(_T_225, _T_227) @[el2_ifu_ic_mem.scala 260:95] + node _T_229 = bits(_T_228, 0, 0) @[el2_ifu_ic_mem.scala 260: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 262:78] + node _T_235 = eq(_T_234, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 262:83] + node _T_236 = bits(_T_235, 0, 0) @[el2_ifu_ic_mem.scala 262:91] + node _T_237 = bits(wb_dout_way_pre_0, 63, 0) @[el2_ifu_ic_mem.scala 262:117] + node _T_238 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 263:45] + node _T_239 = eq(_T_238, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 263:50] + node _T_240 = bits(_T_239, 0, 0) @[el2_ifu_ic_mem.scala 263:58] + node _T_241 = bits(wb_dout_way_pre_0, 86, 71) @[el2_ifu_ic_mem.scala 263:88] + node _T_242 = bits(wb_dout_way_pre_0, 63, 16) @[el2_ifu_ic_mem.scala 263:114] + 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 264:45] + node _T_245 = eq(_T_244, UInt<2>("h02")) @[el2_ifu_ic_mem.scala 264:50] + node _T_246 = bits(_T_245, 0, 0) @[el2_ifu_ic_mem.scala 264:58] + node _T_247 = bits(wb_dout_way_pre_0, 102, 71) @[el2_ifu_ic_mem.scala 264:88] + node _T_248 = bits(wb_dout_way_pre_0, 63, 32) @[el2_ifu_ic_mem.scala 264:115] + 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 265:45] + node _T_251 = eq(_T_250, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 265:50] + node _T_252 = bits(_T_251, 0, 0) @[el2_ifu_ic_mem.scala 265:58] + node _T_253 = bits(wb_dout_way_pre_0, 119, 71) @[el2_ifu_ic_mem.scala 265:88] + node _T_254 = bits(wb_dout_way_pre_0, 63, 48) @[el2_ifu_ic_mem.scala 265:115] + 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] + node _T_258 = mux(_T_246, _T_249, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_259 = mux(_T_252, _T_255, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_260 = or(_T_256, _T_257) @[Mux.scala 27:72] + node _T_261 = or(_T_260, _T_258) @[Mux.scala 27:72] + node _T_262 = or(_T_261, _T_259) @[Mux.scala 27:72] + wire wb_dout_way_0 : UInt<65> @[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 262:78] + node _T_264 = eq(_T_263, UInt<1>("h00")) @[el2_ifu_ic_mem.scala 262:83] + node _T_265 = bits(_T_264, 0, 0) @[el2_ifu_ic_mem.scala 262:91] + node _T_266 = bits(wb_dout_way_pre_1, 63, 0) @[el2_ifu_ic_mem.scala 262:117] + node _T_267 = bits(ic_rw_addr_ff, 1, 0) @[el2_ifu_ic_mem.scala 263:45] + node _T_268 = eq(_T_267, UInt<1>("h01")) @[el2_ifu_ic_mem.scala 263:50] + node _T_269 = bits(_T_268, 0, 0) @[el2_ifu_ic_mem.scala 263:58] + node _T_270 = bits(wb_dout_way_pre_1, 86, 71) @[el2_ifu_ic_mem.scala 263:88] + node _T_271 = bits(wb_dout_way_pre_1, 63, 16) @[el2_ifu_ic_mem.scala 263:114] + 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 264:45] + node _T_274 = eq(_T_273, UInt<2>("h02")) @[el2_ifu_ic_mem.scala 264:50] + node _T_275 = bits(_T_274, 0, 0) @[el2_ifu_ic_mem.scala 264:58] + node _T_276 = bits(wb_dout_way_pre_1, 102, 71) @[el2_ifu_ic_mem.scala 264:88] + node _T_277 = bits(wb_dout_way_pre_1, 63, 32) @[el2_ifu_ic_mem.scala 264:115] + 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 265:45] + node _T_280 = eq(_T_279, UInt<2>("h03")) @[el2_ifu_ic_mem.scala 265:50] + node _T_281 = bits(_T_280, 0, 0) @[el2_ifu_ic_mem.scala 265:58] + node _T_282 = bits(wb_dout_way_pre_1, 119, 71) @[el2_ifu_ic_mem.scala 265:88] + node _T_283 = bits(wb_dout_way_pre_1, 63, 48) @[el2_ifu_ic_mem.scala 265:115] + 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] + node _T_287 = mux(_T_275, _T_278, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_288 = mux(_T_281, _T_284, UInt<1>("h00")) @[Mux.scala 27:72] + node _T_289 = or(_T_285, _T_286) @[Mux.scala 27:72] + node _T_290 = or(_T_289, _T_287) @[Mux.scala 27:72] + node _T_291 = or(_T_290, _T_288) @[Mux.scala 27:72] + wire wb_dout_way_1 : UInt<65> @[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 267:92] + node wb_dout_way_with_premux_0 = mux(_T_292, io.ic_premux_data, wb_dout_way_0) @[el2_ifu_ic_mem.scala 267:69] + node _T_293 = bits(io.ic_sel_premux_data, 0, 0) @[el2_ifu_ic_mem.scala 267:92] + node wb_dout_way_with_premux_1 = mux(_T_293, io.ic_premux_data, wb_dout_way_1) @[el2_ifu_ic_mem.scala 267:69] + node _T_294 = bits(ic_rd_hit_q, 0, 0) @[el2_ifu_ic_mem.scala 269:71] + node _T_295 = or(_T_294, io.ic_sel_premux_data) @[el2_ifu_ic_mem.scala 269:75] + node _T_296 = bits(_T_295, 0, 0) @[el2_ifu_ic_mem.scala 269:100] + node _T_297 = bits(ic_rd_hit_q, 1, 1) @[el2_ifu_ic_mem.scala 269:71] + node _T_298 = or(_T_297, io.ic_sel_premux_data) @[el2_ifu_ic_mem.scala 269:75] + node _T_299 = bits(_T_298, 0, 0) @[el2_ifu_ic_mem.scala 269: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 ic_rd_data : UInt<65> @[Mux.scala 27:72] + ic_rd_data <= _T_302 @[Mux.scala 27:72] diff --git a/EL2_IC_DATA.v b/EL2_IC_DATA.v index 3d74830c..603e73a4 100644 --- a/EL2_IC_DATA.v +++ b/EL2_IC_DATA.v @@ -35,105 +35,105 @@ module EL2_IC_DATA( reg [95:0] _RAND_3; `endif // RANDOMIZE_MEM_INIT reg [70:0] data_mem_0_0 [0:511]; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_147_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_147_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_160_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_160_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_173_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_173_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_186_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_186_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_141_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_141_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_141_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_154_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_154_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_154_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_167_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_167_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_167_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_0__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_0__T_180_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_180_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_0__T_180_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_145_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_145_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_158_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_158_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_171_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_171_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_184_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_184_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_139_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_139_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_139_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_139_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_152_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_152_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_152_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_152_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_165_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_165_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_165_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_165_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_0__T_178_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_0__T_178_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_178_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_0__T_178_en; // @[el2_ifu_ic_mem.scala 243:21] reg [70:0] data_mem_0_1 [0:511]; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_147_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_147_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_160_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_160_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_173_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_173_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_186_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_186_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_141_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_141_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_141_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_154_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_154_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_154_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_167_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_167_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_167_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_0_1__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_0_1__T_180_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_180_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_0_1__T_180_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_145_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_145_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_158_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_158_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_171_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_171_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_184_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_184_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_139_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_139_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_139_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_139_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_152_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_152_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_152_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_152_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_165_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_165_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_165_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_165_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_0_1__T_178_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_0_1__T_178_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_178_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_0_1__T_178_en; // @[el2_ifu_ic_mem.scala 243:21] reg [70:0] data_mem_1_0 [0:511]; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_147_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_147_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_160_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_160_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_173_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_173_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_186_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_186_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_141_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_141_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_141_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_154_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_154_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_154_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_167_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_167_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_167_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_0__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_0__T_180_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_180_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_0__T_180_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_145_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_145_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_158_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_158_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_171_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_171_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_184_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_184_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_139_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_139_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_139_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_139_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_152_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_152_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_152_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_152_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_165_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_165_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_165_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_165_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_0__T_178_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_0__T_178_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_178_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_0__T_178_en; // @[el2_ifu_ic_mem.scala 243:21] reg [70:0] data_mem_1_1 [0:511]; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_147_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_147_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_160_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_160_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_173_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_173_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_186_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_186_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_141_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_141_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_141_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_154_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_154_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_154_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_167_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_167_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_167_en; // @[el2_ifu_ic_mem.scala 243:21] - wire [70:0] data_mem_1_1__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] - wire [8:0] data_mem_1_1__T_180_addr; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_180_mask; // @[el2_ifu_ic_mem.scala 243:21] - wire data_mem_1_1__T_180_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_145_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_145_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_158_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_158_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_171_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_171_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_184_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_184_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_139_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_139_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_139_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_139_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_152_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_152_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_152_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_152_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_165_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_165_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_165_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_165_en; // @[el2_ifu_ic_mem.scala 243:21] + wire [70:0] data_mem_1_1__T_178_data; // @[el2_ifu_ic_mem.scala 243:21] + wire [8:0] data_mem_1_1__T_178_addr; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_178_mask; // @[el2_ifu_ic_mem.scala 243:21] + wire data_mem_1_1__T_178_en; // @[el2_ifu_ic_mem.scala 243:21] wire _T = ~io_ic_debug_tag_array; // @[el2_ifu_ic_mem.scala 200:70] wire _T_5 = io_ic_debug_wr_en & _T; // @[el2_ifu_ic_mem.scala 201:68] wire [1:0] _T_7 = {_T_5,_T_5}; // @[Cat.scala 29:58] @@ -149,156 +149,156 @@ module EL2_IC_DATA( 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 210:38] wire [1:0] ic_b_sb_wren_1 = io_ic_wr_en | _T_22; // @[el2_ifu_ic_mem.scala 210:17] - wire _T_37 = ~ic_rw_addr_q[2]; // @[el2_ifu_ic_mem.scala 214:16] - wire _T_42 = ic_rw_addr_q[1:0] == 2'h3; // @[el2_ifu_ic_mem.scala 215:91] - wire _T_56 = ic_rw_addr_q[2] & _T_42; // @[Mux.scala 27:72] - wire _T_59 = _T_37 | _T_56; // @[Mux.scala 27:72] - wire _T_113 = |io_ic_wr_en; // @[el2_ifu_ic_mem.scala 222:74] - wire _T_114 = ~_T_113; // @[el2_ifu_ic_mem.scala 222:61] - wire _T_115 = io_ic_debug_rd_en & _T_114; // @[el2_ifu_ic_mem.scala 222:58] - wire ic_rd_en_with_debug = io_ic_rd_en | _T_115; // @[el2_ifu_ic_mem.scala 222:38] - wire _T_63 = _T_59 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 217:117] - wire _T_87 = _T_37 & _T_42; // @[Mux.scala 27:72] - wire _T_90 = ic_rw_addr_q[2] | _T_87; // @[Mux.scala 27:72] - wire _T_92 = _T_90 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 217:117] - wire [1:0] ic_b_rden = {_T_92,_T_63}; // @[Cat.scala 29:58] + wire _T_35 = ~ic_rw_addr_q[2]; // @[el2_ifu_ic_mem.scala 214:16] + wire _T_40 = ic_rw_addr_q[1:0] == 2'h3; // @[el2_ifu_ic_mem.scala 215:91] + 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 222:74] + wire _T_112 = ~_T_111; // @[el2_ifu_ic_mem.scala 222:61] + wire _T_113 = io_ic_debug_rd_en & _T_112; // @[el2_ifu_ic_mem.scala 222:58] + wire ic_rd_en_with_debug = io_ic_rd_en | _T_113; // @[el2_ifu_ic_mem.scala 222:38] + wire _T_61 = _T_57 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 217:117] + 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 217:117] + 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_98 = ic_b_sb_rden_0[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 220:25] - wire _T_100 = _T_98 | ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 220:43] - wire _T_102 = ic_b_sb_rden_0[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 220:25] - wire _T_104 = _T_102 | ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 220:43] - wire [1:0] ic_bank_way_clken_0 = {_T_100,_T_104}; // @[Cat.scala 29:58] - wire _T_106 = ic_b_sb_rden_1[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 220:25] - wire _T_108 = _T_106 | ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 220:43] - wire _T_110 = ic_b_sb_rden_1[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 220:25] - wire _T_112 = _T_110 | ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 220:43] - wire [1:0] ic_bank_way_clken_1 = {_T_108,_T_112}; // @[Cat.scala 29:58] - wire _T_121 = _T_56 & ic_rd_en_with_debug; // @[el2_ifu_ic_mem.scala 224:86] - wire ic_rw_addr_wrap = _T_121 & _T_114; // @[el2_ifu_ic_mem.scala 224:108] - wire _T_124 = ~ic_rw_addr_wrap; // @[el2_ifu_ic_mem.scala 226:40] - wire [8:0] _T_129 = {ic_rw_addr_q[11:5],ic_rw_addr_q_inc[4:3]}; // @[Cat.scala 29:58] - wire _T_139 = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 248:30] - wire _T_143 = ~ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 250:17] - wire _T_145 = _T_143 & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 250:36] - wire [70:0] _GEN_3 = _T_145 ? data_mem_0_0__T_147_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] - wire _T_152 = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 248:30] - wire _T_156 = ~ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 250:17] - wire _T_158 = _T_156 & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 250:36] - wire [70:0] _GEN_17 = _T_158 ? data_mem_1_0__T_160_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] - wire _T_165 = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 248:30] - wire _T_169 = ~ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 250:17] - wire _T_171 = _T_169 & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 250:36] - wire [70:0] _GEN_31 = _T_171 ? data_mem_0_1__T_173_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] - wire _T_178 = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 248:30] - wire _T_182 = ~ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 250:17] - wire _T_184 = _T_182 & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 250:36] - wire [70:0] _GEN_45 = _T_184 ? data_mem_1_1__T_186_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] - assign data_mem_0_0__T_147_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_0__T_147_data = data_mem_0_0[data_mem_0_0__T_147_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_0__T_160_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_0__T_160_data = data_mem_0_0[data_mem_0_0__T_160_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_0__T_173_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_0__T_173_data = data_mem_0_0[data_mem_0_0__T_173_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_0__T_186_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_0__T_186_data = data_mem_0_0[data_mem_0_0__T_186_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_0__T_141_data = io_test_in; - assign data_mem_0_0__T_141_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_0__T_141_mask = 1'h1; - assign data_mem_0_0__T_141_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; - assign data_mem_0_0__T_154_data = 71'h0; - assign data_mem_0_0__T_154_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_0__T_154_mask = 1'h0; - assign data_mem_0_0__T_154_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; - assign data_mem_0_0__T_167_data = 71'h0; - assign data_mem_0_0__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_0__T_167_mask = 1'h0; - assign data_mem_0_0__T_167_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; - assign data_mem_0_0__T_180_data = 71'h0; - assign data_mem_0_0__T_180_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_0__T_180_mask = 1'h0; - assign data_mem_0_0__T_180_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; - assign data_mem_0_1__T_147_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_1__T_147_data = data_mem_0_1[data_mem_0_1__T_147_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_1__T_160_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_1__T_160_data = data_mem_0_1[data_mem_0_1__T_160_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_1__T_173_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_1__T_173_data = data_mem_0_1[data_mem_0_1__T_173_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_1__T_186_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_1__T_186_data = data_mem_0_1[data_mem_0_1__T_186_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_0_1__T_141_data = 71'h0; - assign data_mem_0_1__T_141_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_1__T_141_mask = 1'h0; - assign data_mem_0_1__T_141_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; - assign data_mem_0_1__T_154_data = 71'h0; - assign data_mem_0_1__T_154_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_1__T_154_mask = 1'h0; - assign data_mem_0_1__T_154_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; - assign data_mem_0_1__T_167_data = io_test_in; - assign data_mem_0_1__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_0_1__T_167_mask = 1'h1; - assign data_mem_0_1__T_167_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; - assign data_mem_0_1__T_180_data = 71'h0; - assign data_mem_0_1__T_180_addr = ic_rw_addr_q[11:3]; - assign data_mem_0_1__T_180_mask = 1'h0; - assign data_mem_0_1__T_180_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; - assign data_mem_1_0__T_147_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_0__T_147_data = data_mem_1_0[data_mem_1_0__T_147_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_0__T_160_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_0__T_160_data = data_mem_1_0[data_mem_1_0__T_160_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_0__T_173_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_0__T_173_data = data_mem_1_0[data_mem_1_0__T_173_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_0__T_186_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_0__T_186_data = data_mem_1_0[data_mem_1_0__T_186_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_0__T_141_data = 71'h0; - assign data_mem_1_0__T_141_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_0__T_141_mask = 1'h0; - assign data_mem_1_0__T_141_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; - assign data_mem_1_0__T_154_data = io_test_in; - assign data_mem_1_0__T_154_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_0__T_154_mask = 1'h1; - assign data_mem_1_0__T_154_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; - assign data_mem_1_0__T_167_data = 71'h0; - assign data_mem_1_0__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_0__T_167_mask = 1'h0; - assign data_mem_1_0__T_167_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; - assign data_mem_1_0__T_180_data = 71'h0; - assign data_mem_1_0__T_180_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_0__T_180_mask = 1'h0; - assign data_mem_1_0__T_180_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; - assign data_mem_1_1__T_147_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_1__T_147_data = data_mem_1_1[data_mem_1_1__T_147_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_1__T_160_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_1__T_160_data = data_mem_1_1[data_mem_1_1__T_160_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_1__T_173_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_1__T_173_data = data_mem_1_1[data_mem_1_1__T_173_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_1__T_186_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_1__T_186_data = data_mem_1_1[data_mem_1_1__T_186_addr]; // @[el2_ifu_ic_mem.scala 243:21] - assign data_mem_1_1__T_141_data = 71'h0; - assign data_mem_1_1__T_141_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_1__T_141_mask = 1'h0; - assign data_mem_1_1__T_141_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; - assign data_mem_1_1__T_154_data = 71'h0; - assign data_mem_1_1__T_154_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_1__T_154_mask = 1'h0; - assign data_mem_1_1__T_154_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; - assign data_mem_1_1__T_167_data = 71'h0; - assign data_mem_1_1__T_167_addr = _T_124 ? ic_rw_addr_q[11:3] : _T_129; - assign data_mem_1_1__T_167_mask = 1'h0; - assign data_mem_1_1__T_167_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; - assign data_mem_1_1__T_180_data = io_test_in; - assign data_mem_1_1__T_180_addr = ic_rw_addr_q[11:3]; - assign data_mem_1_1__T_180_mask = 1'h1; - assign data_mem_1_1__T_180_en = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; + wire _T_96 = ic_b_sb_rden_0[0] | io_clk_override; // @[el2_ifu_ic_mem.scala 220:25] + wire _T_98 = _T_96 | ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 220:43] + wire _T_100 = ic_b_sb_rden_0[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 220:25] + wire _T_102 = _T_100 | ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 220: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 220:25] + wire _T_106 = _T_104 | ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 220:43] + wire _T_108 = ic_b_sb_rden_1[1] | io_clk_override; // @[el2_ifu_ic_mem.scala 220:25] + wire _T_110 = _T_108 | ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 220: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 224:86] + wire ic_rw_addr_wrap = _T_119 & _T_112; // @[el2_ifu_ic_mem.scala 224:108] + wire _T_122 = ~ic_rw_addr_wrap; // @[el2_ifu_ic_mem.scala 226:40] + wire [8:0] _T_127 = {ic_rw_addr_q[11:5],ic_rw_addr_q_inc[4:3]}; // @[Cat.scala 29:58] + wire _T_137 = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 248:30] + wire _T_141 = ~ic_b_sb_wren_0[0]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_143 = _T_141 & ic_bank_way_clken_0[0]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_3 = _T_143 ? data_mem_0_0__T_145_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] + wire _T_150 = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 248:30] + wire _T_154 = ~ic_b_sb_wren_1[0]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_156 = _T_154 & ic_bank_way_clken_1[0]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_17 = _T_156 ? data_mem_1_0__T_158_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] + wire _T_163 = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 248:30] + wire _T_167 = ~ic_b_sb_wren_0[1]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_169 = _T_167 & ic_bank_way_clken_0[1]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_31 = _T_169 ? data_mem_0_1__T_171_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] + wire _T_176 = ic_b_sb_wren_1[1] & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 248:30] + wire _T_180 = ~ic_b_sb_wren_1[1]; // @[el2_ifu_ic_mem.scala 250:17] + wire _T_182 = _T_180 & ic_bank_way_clken_1[1]; // @[el2_ifu_ic_mem.scala 250:36] + wire [70:0] _GEN_45 = _T_182 ? data_mem_1_1__T_184_data : 71'h0; // @[el2_ifu_ic_mem.scala 250:69] + 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 243: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 243: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 243: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 243:21] + assign data_mem_0_0__T_139_data = io_test_in; + 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; + assign data_mem_0_0__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_0_0__T_152_data = 71'h0; + assign data_mem_0_0__T_152_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_0__T_152_mask = 1'h0; + assign data_mem_0_0__T_152_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_0_0__T_165_data = 71'h0; + assign data_mem_0_0__T_165_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; + assign data_mem_0_0__T_165_mask = 1'h0; + assign data_mem_0_0__T_165_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_0_0__T_178_data = 71'h0; + assign data_mem_0_0__T_178_addr = ic_rw_addr_q[11:3]; + 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 243: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 243: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 243: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 243: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; + assign data_mem_0_1__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_0_1__T_152_data = 71'h0; + assign data_mem_0_1__T_152_addr = ic_rw_addr_q[11:3]; + assign data_mem_0_1__T_152_mask = 1'h0; + assign data_mem_0_1__T_152_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_0_1__T_165_data = io_test_in; + assign data_mem_0_1__T_165_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; + assign data_mem_0_1__T_165_mask = 1'h1; + assign data_mem_0_1__T_165_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_0_1__T_178_data = 71'h0; + assign data_mem_0_1__T_178_addr = ic_rw_addr_q[11:3]; + 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 243: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 243: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 243: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 243: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; + assign data_mem_1_0__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_1_0__T_152_data = io_test_in; + assign data_mem_1_0__T_152_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_0__T_152_mask = 1'h1; + assign data_mem_1_0__T_152_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_1_0__T_165_data = 71'h0; + assign data_mem_1_0__T_165_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; + assign data_mem_1_0__T_165_mask = 1'h0; + assign data_mem_1_0__T_165_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_1_0__T_178_data = 71'h0; + assign data_mem_1_0__T_178_addr = ic_rw_addr_q[11:3]; + 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 243: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 243: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 243: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 243: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; + assign data_mem_1_1__T_139_en = ic_b_sb_wren_0[0] & ic_bank_way_clken_0[0]; + assign data_mem_1_1__T_152_data = 71'h0; + assign data_mem_1_1__T_152_addr = ic_rw_addr_q[11:3]; + assign data_mem_1_1__T_152_mask = 1'h0; + assign data_mem_1_1__T_152_en = ic_b_sb_wren_1[0] & ic_bank_way_clken_1[0]; + assign data_mem_1_1__T_165_data = 71'h0; + assign data_mem_1_1__T_165_addr = _T_122 ? ic_rw_addr_q[11:3] : _T_127; + assign data_mem_1_1__T_165_mask = 1'h0; + assign data_mem_1_1__T_165_en = ic_b_sb_wren_0[1] & ic_bank_way_clken_0[1]; + assign data_mem_1_1__T_178_data = io_test_in; + 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 = 64'h0; // @[el2_ifu_ic_mem.scala 194:17] assign io_ic_debug_rd_data = 71'h0; // @[el2_ifu_ic_mem.scala 195:23] assign io_ic_parerr = 2'h0; // @[el2_ifu_ic_mem.scala 196:16] assign io_ic_eccerr = 2'h0; // @[el2_ifu_ic_mem.scala 197:16] assign io_test = 1'h0; // @[el2_ifu_ic_mem.scala 198:11] - assign io_test_port_0_0 = _T_139 ? 71'h0 : _GEN_3; // @[el2_ifu_ic_mem.scala 254:16] - assign io_test_port_0_1 = _T_152 ? 71'h0 : _GEN_17; // @[el2_ifu_ic_mem.scala 254:16] - assign io_test_port_1_0 = _T_165 ? 71'h0 : _GEN_31; // @[el2_ifu_ic_mem.scala 254:16] - assign io_test_port_1_1 = _T_178 ? 71'h0 : _GEN_45; // @[el2_ifu_ic_mem.scala 254:16] + assign io_test_port_0_0 = _T_137 ? 71'h0 : _GEN_3; // @[el2_ifu_ic_mem.scala 254:16] + assign io_test_port_0_1 = _T_150 ? 71'h0 : _GEN_17; // @[el2_ifu_ic_mem.scala 254:16] + assign io_test_port_1_0 = _T_163 ? 71'h0 : _GEN_31; // @[el2_ifu_ic_mem.scala 254:16] + assign io_test_port_1_1 = _T_176 ? 71'h0 : _GEN_45; // @[el2_ifu_ic_mem.scala 254:16] `ifdef RANDOMIZE_GARBAGE_ASSIGN `define RANDOMIZE `endif @@ -354,53 +354,53 @@ end // initial `endif `endif // SYNTHESIS always @(posedge clock) begin - if(data_mem_0_0__T_141_en & data_mem_0_0__T_141_mask) begin - data_mem_0_0[data_mem_0_0__T_141_addr] <= data_mem_0_0__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_0_0__T_154_en & data_mem_0_0__T_154_mask) begin - data_mem_0_0[data_mem_0_0__T_154_addr] <= data_mem_0_0__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_0_0__T_167_en & data_mem_0_0__T_167_mask) begin - data_mem_0_0[data_mem_0_0__T_167_addr] <= data_mem_0_0__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_0_0__T_180_en & data_mem_0_0__T_180_mask) begin - data_mem_0_0[data_mem_0_0__T_180_addr] <= data_mem_0_0__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_0_1__T_141_en & data_mem_0_1__T_141_mask) begin - data_mem_0_1[data_mem_0_1__T_141_addr] <= data_mem_0_1__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_0_1__T_154_en & data_mem_0_1__T_154_mask) begin - data_mem_0_1[data_mem_0_1__T_154_addr] <= data_mem_0_1__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_0_1__T_167_en & data_mem_0_1__T_167_mask) begin - data_mem_0_1[data_mem_0_1__T_167_addr] <= data_mem_0_1__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_0_1__T_180_en & data_mem_0_1__T_180_mask) begin - data_mem_0_1[data_mem_0_1__T_180_addr] <= data_mem_0_1__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_0__T_141_en & data_mem_1_0__T_141_mask) begin - data_mem_1_0[data_mem_1_0__T_141_addr] <= data_mem_1_0__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_0__T_154_en & data_mem_1_0__T_154_mask) begin - data_mem_1_0[data_mem_1_0__T_154_addr] <= data_mem_1_0__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_0__T_167_en & data_mem_1_0__T_167_mask) begin - data_mem_1_0[data_mem_1_0__T_167_addr] <= data_mem_1_0__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_0__T_180_en & data_mem_1_0__T_180_mask) begin - data_mem_1_0[data_mem_1_0__T_180_addr] <= data_mem_1_0__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_1__T_141_en & data_mem_1_1__T_141_mask) begin - data_mem_1_1[data_mem_1_1__T_141_addr] <= data_mem_1_1__T_141_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_1__T_154_en & data_mem_1_1__T_154_mask) begin - data_mem_1_1[data_mem_1_1__T_154_addr] <= data_mem_1_1__T_154_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_1__T_167_en & data_mem_1_1__T_167_mask) begin - data_mem_1_1[data_mem_1_1__T_167_addr] <= data_mem_1_1__T_167_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end - if(data_mem_1_1__T_180_en & data_mem_1_1__T_180_mask) begin - data_mem_1_1[data_mem_1_1__T_180_addr] <= data_mem_1_1__T_180_data; // @[el2_ifu_ic_mem.scala 243:21] + 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 243:21] end end endmodule diff --git a/src/main/scala/ifu/el2_ifu_ic_mem.scala b/src/main/scala/ifu/el2_ifu_ic_mem.scala index c9196021..73144981 100644 --- a/src/main/scala/ifu/el2_ifu_ic_mem.scala +++ b/src/main/scala/ifu/el2_ifu_ic_mem.scala @@ -200,7 +200,7 @@ class EL2_IC_DATA extends Module with el2_lib { 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 = repl(ICACHE_NUM_WAYS, io.ic_debug_wr_en & !io.ic_debug_tag_array) & io.ic_debug_way - val ic_bank_wr_data = WireInit(UInt(71.W), 0.U) + 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) @@ -239,86 +239,39 @@ class EL2_IC_DATA extends Module with el2_lib { //////////////////////////////////////////// Memory stated val (data_mem_word, tag_mem_word, ecc_offset) = DATA_MEM_LINE - val wb_out = Wire(Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W)))) + 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_out(i)(k) := 0.U + 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) := io.test_in }.elsewhen((!ic_b_sb_wren(k)(i)&ic_bank_way_clken(k)(i)).asBool){ - wb_out(i)(k) := data_mem(ic_rw_addr_bank_q(k))(k)(i) + wb_dout(i)(k) := data_mem(ic_rw_addr_bank_q(k))(k)(i) } } - io.test_port := wb_out + io.test_port := wb_dout + 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 ic_bank_way_clken = new Array[UInt](ICACHE_NUM_WAYS) -// ic_bank_way_clken(0) = (repl(ICACHE_NUM_WAYS,ic_b_rden(0)) | io.clk_override | ic_b_sb_wren(0)) -// for(i<-1 until ICACHE_NUM_WAYS){ -// ic_bank_way_clken(i) = (repl(ICACHE_NUM_WAYS,ic_b_rden(0)) | io.clk_override | ic_b_sb_wren(i)) | ic_bank_way_clken(i-1) -// } -// // TODO: AS it is being used at only one place replace -// val ic_rw_addr_q_inc = ic_rw_addr_q(ICACHE_TAG_LO-1,ICACHE_DATA_INDEX_LO) + 1.U -// val ic_rw_addr_wrap = ic_rw_addr_q(ICACHE_BANK_HI) & (ic_rw_addr_q(2,1)===3.U) & ic_rd_en_with_debug & ~(io.ic_wr_en.orR) -// // All flops rw-address -// // rd-enable as it is a sync mem -// val ic_rw_addr_ff = RegNext(ic_rw_addr_q, init = 0.U) -// val ic_b_rden_ff = RegNext(ic_b_rden.reverse.reduce(Cat(_,_)), init = 0.U) -// val ic_debug_rd_way_en_ff = RegNext(ic_debug_rd_way_en, init = 0.U) -// val ic_debug_rd_en_ff = RegNext(io.ic_debug_rd_en, init = 0.U) -// val ic_cacheline_wrap_ff = ic_rw_addr_ff(ICACHE_TAG_INDEX_LO-1,ICACHE_BANK_LO) === repl(ICACHE_TAG_INDEX_LO - ICACHE_BANK_LO, 1.U) -// -// val ic_rw_addr_bank_q = Wire(Vec(ICACHE_BANKS_WAY,UInt((ICACHE_INDEX_HI+1).W))) -// ic_rw_addr_bank_q(0) := Mux(~ic_rw_addr_wrap.asBool, ic_rw_addr_q(ICACHE_INDEX_HI,ICACHE_DATA_INDEX_LO), Cat(ic_rw_addr_q(ICACHE_INDEX_HI, ICACHE_TAG_INDEX_LO), ic_rw_addr_q_inc(ICACHE_TAG_INDEX_LO-1, ICACHE_DATA_INDEX_LO))) -// ic_rw_addr_bank_q(1) := ic_rw_addr_q(ICACHE_INDEX_HI, ICACHE_DATA_INDEX_LO) -// val (data_mem_word, tag_mem_word, ecc_offset) = DATA_MEM_LINE -// // Making a memory with Location=ICACHE_DATA_DEPTH banks and ways -// val data_mem = SyncReadMem(ICACHE_DATA_DEPTH, Vec(ICACHE_BANKS_WAY,Vec(ICACHE_NUM_WAYS, UInt(data_mem_word.W)))) -// data_mem(ic_rw_addr_bank_q(0)(ICACHE_INDEX_HI,ICACHE_DATA_INDEX_LO))(0)(0):= ic_sb_wr_data(0) -// val wb_dout = Wire(Vec(ICACHE_NUM_WAYS, Vec(ICACHE_BANKS_WAY, UInt(data_mem_word.W)))) -// // Initializing the wire -// wb_dout.indices.foreach { i => wb_dout(i).indices.foreach{ j=> -// wb_dout(i)(j) := 0.U -// when(ic_sb_wr_data(i)(j) & ic_bank_way_clken(i)(j)){ -// data_mem(ic_rw_addr_bank_q(j)(ICACHE_INDEX_HI,ICACHE_DATA_INDEX_LO))(j)(i) := ic_sb_wr_data(j) -// } -// wb_dout(i)(j) := data_mem(ic_rw_addr_bank_q(j)(ICACHE_INDEX_HI,ICACHE_DATA_INDEX_LO))(i)(j) -// } -// } -// val wb_dout_way_pre_lower = (0 until ICACHE_NUM_WAYS).map(i=> -// (0 until ICACHE_BANKS_WAY).map(j=> -// repl(data_mem_word,ic_rw_addr_ff(ICACHE_BANK_HI, ICACHE_BANK_LO)===j.U)&wb_dout(i)(j)).reduce(_|_)) -// -// val wb_dout_way_pre_upper = (0 until ICACHE_NUM_WAYS).map(i=> -// (0 until ICACHE_BANKS_WAY).map(j=> -// repl(data_mem_word,ic_rw_addr_ff(ICACHE_BANK_HI, ICACHE_BANK_LO)===j.U-1.U)&wb_dout(i)(j)).reduce(_|_)) -// -// val wb_dout_way_pre = (0 until ICACHE_NUM_WAYS).map(i=>Cat(wb_dout_way_pre_upper(i),wb_dout_way_pre_lower(i))) -// -// // TODO: Put an assertion here -// val wb_dout_way = (0 until ICACHE_NUM_WAYS).map(i=> -// repl(64 ,ic_rw_addr_ff(2,1)===0.U) & wb_dout_way_pre(i)(63,0) | -// repl(64 ,ic_rw_addr_ff(2,1)===1.U) & Cat(wb_dout_way_pre(i)(ecc_offset+15,ecc_offset),wb_dout_way_pre(i)(63,16)) | -// repl(64 ,ic_rw_addr_ff(2,1)===2.U) & Cat(wb_dout_way_pre(i)(ecc_offset+31,ecc_offset),wb_dout_way_pre(i)(63,32)) | -// repl(64 ,ic_rw_addr_ff(2,1)===3.U) & Cat(wb_dout_way_pre(i)(ecc_offset+47,ecc_offset),wb_dout_way_pre(i)(63,48)) -// ) -// // ic_rw_addr_ff(ICACHE_BANK_HI,ICACHE_BANK_LO)===1.U -> wb_dout(1)(0))) -// val ic_rd_hit_q = Mux(ic_debug_rd_en_ff===1.U, ic_debug_rd_way_en_ff, io.ic_rd_hit) ; -// val wb_dout_way_with_premux = wb_dout_way.map(Mux(io.ic_sel_premux_data, io.ic_premux_data, _)) -// -// io.ic_debug_rd_data := 0.U -// io.ic_parerr := 0.U -// io.ic_eccerr := 0.U -// -// io.ic_rd_data := Mux1H_LM((0 until ICACHE_NUM_WAYS).map(i => ic_rd_hit_q(i) | io.ic_sel_premux_data), -// (0 until ICACHE_NUM_WAYS).map(wb_dout_way_with_premux(_))) -// io.ic_debug_rd_data := Mux1H_LM((0 until ICACHE_NUM_WAYS).map(i => ic_rd_hit_q(i)), -// (0 until ICACHE_NUM_WAYS).map(wb_dout_way_pre(_)(data_mem_word-1,0))) -// val wb_dout_ecc = Mux1H_LM((0 until ICACHE_NUM_WAYS).map(i => ic_rd_hit_q(i)), -// (0 until ICACHE_NUM_WAYS).map(wb_dout_way_pre(_))) -// io.test_port2 := 0.U//inter2//wb_dout_way_pre -// io.test_port := wb_dout + 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)(86,71),wb_dout_way_pre(i)(63,16)), + (ic_rw_addr_ff(1,0)===2.U).asBool->Cat(wb_dout_way_pre(i)(102,71),wb_dout_way_pre(i)(63,32)), + (ic_rw_addr_ff(1,0)===3.U).asBool->Cat(wb_dout_way_pre(i)(119,71),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))) + + val 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))) + val 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((71*i)+70,71*i))) } object ifu_ic extends App { diff --git a/target/scala-2.12/classes/ifu/EL2_IC_DATA.class b/target/scala-2.12/classes/ifu/EL2_IC_DATA.class index 08c8741ad376a577e6f70f2404d6e43dcf32d6ff..f41421ef8553887c2021569e75d038053d0fa4e8 100644 GIT binary patch literal 86438 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 F{{e%EU_Sr= literal 75743 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 F{|8yqM%n-X diff --git a/target/scala-2.12/classes/ifu/ifu_ic$.class b/target/scala-2.12/classes/ifu/ifu_ic$.class index 6bed693e7a56cabf4cc7f4abfb790e2964a0f16d..432171f287395b7761d649e5264ae85a2d02f360 100644 GIT binary patch delta 106 zcmbOxH%)HCMHWWm&6ij>*%(D9-{G&q&}pbiv!#9IL*qxp6N0D5K~3IG5A delta 106 zcmbOxH%)HCMHWV*&6ij>*%)0W-{G&xoOpbiv!#9IL*qxp6N0Oo}tYybcN diff --git a/target/scala-2.12/classes/ifu/ifu_ic$delayedInit$body.class b/target/scala-2.12/classes/ifu/ifu_ic$delayedInit$body.class index a3c79e523564be32dbd5f9d2cafe954329c72654..1883b798f4b9d0a27db4995b0a418fdc117deb7d 100644 GIT binary patch delta 19 Zcmcb~dXsg74HKj2WLu^HAlb*{4FEj71!n*N delta 19 Zcmcb~dXsg74HKiwWLu^HAlb*{4FEr_1;qdW