From 2fd89019c6e3749e083a63332bad58e8c689c66e Mon Sep 17 00:00:00 2001 From: waleed-lm Date: Thu, 8 Oct 2020 18:53:20 +0500 Subject: [PATCH] RegEnable added --- el2_ifu_iccm_mem.anno.json | 36 -- el2_ifu_iccm_mem.fir | 596 +++++++++--------- el2_ifu_iccm_mem.v | 190 +++--- src/main/scala/ifu/el2_ifu_iccm_mem.scala | 12 +- .../ifu/el2_ifu_iccm_mem$$anon$1.class | Bin 3717 -> 3110 bytes .../classes/ifu/el2_ifu_iccm_mem.class | Bin 93706 -> 92974 bytes target/scala-2.12/classes/ifu/ifu_iccm$.class | Bin 3884 -> 3884 bytes .../ifu/ifu_iccm$delayedInit$body.class | Bin 743 -> 743 bytes 8 files changed, 392 insertions(+), 442 deletions(-) diff --git a/el2_ifu_iccm_mem.anno.json b/el2_ifu_iccm_mem.anno.json index fe943699..838b68a5 100644 --- a/el2_ifu_iccm_mem.anno.json +++ b/el2_ifu_iccm_mem.anno.json @@ -1,40 +1,4 @@ [ - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_bank_addr_2", - "sources":[ - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_rw_addr", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wren", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wr_size" - ] - }, - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_bank_addr_3", - "sources":[ - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_rw_addr", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wren", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wr_size" - ] - }, - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_bank_addr_1", - "sources":[ - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_rw_addr", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wren", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wr_size" - ] - }, - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_bank_addr_0", - "sources":[ - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_rw_addr", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wren", - "~el2_ifu_iccm_mem|el2_ifu_iccm_mem>io_iccm_wr_size" - ] - }, { "class":"firrtl.EmitCircuitAnnotation", "emitter":"firrtl.VerilogEmitter" diff --git a/el2_ifu_iccm_mem.fir b/el2_ifu_iccm_mem.fir index 05505e07..677a07ae 100644 --- a/el2_ifu_iccm_mem.fir +++ b/el2_ifu_iccm_mem.fir @@ -3,7 +3,7 @@ circuit el2_ifu_iccm_mem : module el2_ifu_iccm_mem : input clock : Clock input reset : UInt<1> - output io : {flip clk_override : UInt<1>, flip iccm_wren : UInt<1>, flip iccm_rden : UInt<1>, flip iccm_rw_addr : UInt<15>, flip iccm_buf_correct_ecc : UInt<1>, flip iccm_correction_state : UInt<1>, flip iccm_wr_size : UInt<3>, flip iccm_wr_data : UInt<78>, iccm_rd_data : UInt<64>, iccm_rd_data_ecc : UInt<78>, flip scan_mode : UInt<1>, iccm_bank_addr : UInt[4]} + output io : {flip clk_override : UInt<1>, flip iccm_wren : UInt<1>, flip iccm_rden : UInt<1>, flip iccm_rw_addr : UInt<15>, flip iccm_buf_correct_ecc : UInt<1>, flip iccm_correction_state : UInt<1>, flip iccm_wr_size : UInt<3>, flip iccm_wr_data : UInt<78>, iccm_rd_data : UInt<64>, iccm_rd_data_ecc : UInt<78>, flip scan_mode : UInt<1>} io.iccm_rd_data <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 22:19] io.iccm_rd_data_ecc <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 23:23] @@ -183,158 +183,154 @@ circuit el2_ifu_iccm_mem : _T_112 <= _T_111 @[Reg.scala 28:23] skip @[Reg.scala 28:19] iccm_bank_dout[3] <= _T_112 @[el2_ifu_iccm_mem.scala 56:53] - io.iccm_bank_addr[0] <= addr_bank[0] @[el2_ifu_iccm_mem.scala 61:21] - io.iccm_bank_addr[1] <= addr_bank[1] @[el2_ifu_iccm_mem.scala 61:21] - io.iccm_bank_addr[2] <= addr_bank[2] @[el2_ifu_iccm_mem.scala 61:21] - io.iccm_bank_addr[3] <= addr_bank[3] @[el2_ifu_iccm_mem.scala 61:21] wire redundant_valid : UInt<2> redundant_valid <= UInt<1>("h00") - wire redundant_address : UInt<14>[2] @[el2_ifu_iccm_mem.scala 67:31] - redundant_address[0] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 68:21] - redundant_address[1] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 68:21] - node _T_113 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 70:67] - node _T_114 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 70:90] - node _T_115 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 70:128] - node _T_116 = eq(_T_114, _T_115) @[el2_ifu_iccm_mem.scala 70:105] - node _T_117 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 70:163] - node _T_118 = eq(_T_117, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 70:169] - node _T_119 = and(_T_116, _T_118) @[el2_ifu_iccm_mem.scala 70:145] - node _T_120 = and(_T_113, _T_119) @[el2_ifu_iccm_mem.scala 70:71] - node _T_121 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 71:22] - node _T_122 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 71:60] - node _T_123 = eq(_T_121, _T_122) @[el2_ifu_iccm_mem.scala 71:37] - node _T_124 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 71:93] - node _T_125 = eq(_T_124, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 71:99] - node _T_126 = and(_T_123, _T_125) @[el2_ifu_iccm_mem.scala 71:77] - node _T_127 = or(_T_120, _T_126) @[el2_ifu_iccm_mem.scala 70:179] - node _T_128 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 70:67] - node _T_129 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 70:90] - node _T_130 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 70:128] - node _T_131 = eq(_T_129, _T_130) @[el2_ifu_iccm_mem.scala 70:105] - node _T_132 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 70:163] - node _T_133 = eq(_T_132, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 70:169] - node _T_134 = and(_T_131, _T_133) @[el2_ifu_iccm_mem.scala 70:145] - node _T_135 = and(_T_128, _T_134) @[el2_ifu_iccm_mem.scala 70:71] - node _T_136 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 71:22] - node _T_137 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 71:60] - node _T_138 = eq(_T_136, _T_137) @[el2_ifu_iccm_mem.scala 71:37] - node _T_139 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 71:93] - node _T_140 = eq(_T_139, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 71:99] - node _T_141 = and(_T_138, _T_140) @[el2_ifu_iccm_mem.scala 71:77] - node _T_142 = or(_T_135, _T_141) @[el2_ifu_iccm_mem.scala 70:179] - node _T_143 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 70:67] - node _T_144 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 70:90] - node _T_145 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 70:128] - node _T_146 = eq(_T_144, _T_145) @[el2_ifu_iccm_mem.scala 70:105] - node _T_147 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 70:163] - node _T_148 = eq(_T_147, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 70:169] - node _T_149 = and(_T_146, _T_148) @[el2_ifu_iccm_mem.scala 70:145] - node _T_150 = and(_T_143, _T_149) @[el2_ifu_iccm_mem.scala 70:71] - node _T_151 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 71:22] - node _T_152 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 71:60] - node _T_153 = eq(_T_151, _T_152) @[el2_ifu_iccm_mem.scala 71:37] - node _T_154 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 71:93] - node _T_155 = eq(_T_154, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 71:99] - node _T_156 = and(_T_153, _T_155) @[el2_ifu_iccm_mem.scala 71:77] - node _T_157 = or(_T_150, _T_156) @[el2_ifu_iccm_mem.scala 70:179] - node _T_158 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 70:67] - node _T_159 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 70:90] - node _T_160 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 70:128] - node _T_161 = eq(_T_159, _T_160) @[el2_ifu_iccm_mem.scala 70:105] - node _T_162 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 70:163] - node _T_163 = eq(_T_162, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 70:169] - node _T_164 = and(_T_161, _T_163) @[el2_ifu_iccm_mem.scala 70:145] - node _T_165 = and(_T_158, _T_164) @[el2_ifu_iccm_mem.scala 70:71] - node _T_166 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 71:22] - node _T_167 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 71:60] - node _T_168 = eq(_T_166, _T_167) @[el2_ifu_iccm_mem.scala 71:37] - node _T_169 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 71:93] - node _T_170 = eq(_T_169, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 71:99] - node _T_171 = and(_T_168, _T_170) @[el2_ifu_iccm_mem.scala 71:77] - node _T_172 = or(_T_165, _T_171) @[el2_ifu_iccm_mem.scala 70:179] + wire redundant_address : UInt<14>[2] @[el2_ifu_iccm_mem.scala 62:31] + redundant_address[0] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 63:21] + redundant_address[1] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 63:21] + node _T_113 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 65:67] + node _T_114 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 65:90] + node _T_115 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 65:128] + node _T_116 = eq(_T_114, _T_115) @[el2_ifu_iccm_mem.scala 65:105] + node _T_117 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 65:163] + node _T_118 = eq(_T_117, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 65:169] + node _T_119 = and(_T_116, _T_118) @[el2_ifu_iccm_mem.scala 65:145] + node _T_120 = and(_T_113, _T_119) @[el2_ifu_iccm_mem.scala 65:71] + node _T_121 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 66:22] + node _T_122 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 66:60] + node _T_123 = eq(_T_121, _T_122) @[el2_ifu_iccm_mem.scala 66:37] + node _T_124 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 66:93] + node _T_125 = eq(_T_124, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 66:99] + node _T_126 = and(_T_123, _T_125) @[el2_ifu_iccm_mem.scala 66:77] + node _T_127 = or(_T_120, _T_126) @[el2_ifu_iccm_mem.scala 65:179] + node _T_128 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 65:67] + node _T_129 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 65:90] + node _T_130 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 65:128] + node _T_131 = eq(_T_129, _T_130) @[el2_ifu_iccm_mem.scala 65:105] + node _T_132 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 65:163] + node _T_133 = eq(_T_132, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 65:169] + node _T_134 = and(_T_131, _T_133) @[el2_ifu_iccm_mem.scala 65:145] + node _T_135 = and(_T_128, _T_134) @[el2_ifu_iccm_mem.scala 65:71] + node _T_136 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 66:22] + node _T_137 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 66:60] + node _T_138 = eq(_T_136, _T_137) @[el2_ifu_iccm_mem.scala 66:37] + node _T_139 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 66:93] + node _T_140 = eq(_T_139, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 66:99] + node _T_141 = and(_T_138, _T_140) @[el2_ifu_iccm_mem.scala 66:77] + node _T_142 = or(_T_135, _T_141) @[el2_ifu_iccm_mem.scala 65:179] + node _T_143 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 65:67] + node _T_144 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 65:90] + node _T_145 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 65:128] + node _T_146 = eq(_T_144, _T_145) @[el2_ifu_iccm_mem.scala 65:105] + node _T_147 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 65:163] + node _T_148 = eq(_T_147, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 65:169] + node _T_149 = and(_T_146, _T_148) @[el2_ifu_iccm_mem.scala 65:145] + node _T_150 = and(_T_143, _T_149) @[el2_ifu_iccm_mem.scala 65:71] + node _T_151 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 66:22] + node _T_152 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 66:60] + node _T_153 = eq(_T_151, _T_152) @[el2_ifu_iccm_mem.scala 66:37] + node _T_154 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 66:93] + node _T_155 = eq(_T_154, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 66:99] + node _T_156 = and(_T_153, _T_155) @[el2_ifu_iccm_mem.scala 66:77] + node _T_157 = or(_T_150, _T_156) @[el2_ifu_iccm_mem.scala 65:179] + node _T_158 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 65:67] + node _T_159 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 65:90] + node _T_160 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 65:128] + node _T_161 = eq(_T_159, _T_160) @[el2_ifu_iccm_mem.scala 65:105] + node _T_162 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 65:163] + node _T_163 = eq(_T_162, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 65:169] + node _T_164 = and(_T_161, _T_163) @[el2_ifu_iccm_mem.scala 65:145] + node _T_165 = and(_T_158, _T_164) @[el2_ifu_iccm_mem.scala 65:71] + node _T_166 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 66:22] + node _T_167 = bits(redundant_address[1], 13, 0) @[el2_ifu_iccm_mem.scala 66:60] + node _T_168 = eq(_T_166, _T_167) @[el2_ifu_iccm_mem.scala 66:37] + node _T_169 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 66:93] + node _T_170 = eq(_T_169, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 66:99] + node _T_171 = and(_T_168, _T_170) @[el2_ifu_iccm_mem.scala 66:77] + node _T_172 = or(_T_165, _T_171) @[el2_ifu_iccm_mem.scala 65:179] node _T_173 = cat(_T_172, _T_157) @[Cat.scala 29:58] node _T_174 = cat(_T_173, _T_142) @[Cat.scala 29:58] node sel_red1 = cat(_T_174, _T_127) @[Cat.scala 29:58] - node _T_175 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 72:67] - node _T_176 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 72:90] - node _T_177 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 72:128] - node _T_178 = eq(_T_176, _T_177) @[el2_ifu_iccm_mem.scala 72:105] - node _T_179 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 72:163] - node _T_180 = eq(_T_179, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 72:169] - node _T_181 = and(_T_178, _T_180) @[el2_ifu_iccm_mem.scala 72:145] - node _T_182 = and(_T_175, _T_181) @[el2_ifu_iccm_mem.scala 72:71] - node _T_183 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 73:22] - node _T_184 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 73:60] - node _T_185 = eq(_T_183, _T_184) @[el2_ifu_iccm_mem.scala 73:37] - node _T_186 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 73:93] - node _T_187 = eq(_T_186, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 73:99] - node _T_188 = and(_T_185, _T_187) @[el2_ifu_iccm_mem.scala 73:77] - node _T_189 = or(_T_182, _T_188) @[el2_ifu_iccm_mem.scala 72:179] - node _T_190 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 72:67] - node _T_191 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 72:90] - node _T_192 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 72:128] - node _T_193 = eq(_T_191, _T_192) @[el2_ifu_iccm_mem.scala 72:105] - node _T_194 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 72:163] - node _T_195 = eq(_T_194, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 72:169] - node _T_196 = and(_T_193, _T_195) @[el2_ifu_iccm_mem.scala 72:145] - node _T_197 = and(_T_190, _T_196) @[el2_ifu_iccm_mem.scala 72:71] - node _T_198 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 73:22] - node _T_199 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 73:60] - node _T_200 = eq(_T_198, _T_199) @[el2_ifu_iccm_mem.scala 73:37] - node _T_201 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 73:93] - node _T_202 = eq(_T_201, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 73:99] - node _T_203 = and(_T_200, _T_202) @[el2_ifu_iccm_mem.scala 73:77] - node _T_204 = or(_T_197, _T_203) @[el2_ifu_iccm_mem.scala 72:179] - node _T_205 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 72:67] - node _T_206 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 72:90] - node _T_207 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 72:128] - node _T_208 = eq(_T_206, _T_207) @[el2_ifu_iccm_mem.scala 72:105] - node _T_209 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 72:163] - node _T_210 = eq(_T_209, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 72:169] - node _T_211 = and(_T_208, _T_210) @[el2_ifu_iccm_mem.scala 72:145] - node _T_212 = and(_T_205, _T_211) @[el2_ifu_iccm_mem.scala 72:71] - node _T_213 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 73:22] - node _T_214 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 73:60] - node _T_215 = eq(_T_213, _T_214) @[el2_ifu_iccm_mem.scala 73:37] - node _T_216 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 73:93] - node _T_217 = eq(_T_216, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 73:99] - node _T_218 = and(_T_215, _T_217) @[el2_ifu_iccm_mem.scala 73:77] - node _T_219 = or(_T_212, _T_218) @[el2_ifu_iccm_mem.scala 72:179] - node _T_220 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 72:67] - node _T_221 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 72:90] - node _T_222 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 72:128] - node _T_223 = eq(_T_221, _T_222) @[el2_ifu_iccm_mem.scala 72:105] - node _T_224 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 72:163] - node _T_225 = eq(_T_224, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 72:169] - node _T_226 = and(_T_223, _T_225) @[el2_ifu_iccm_mem.scala 72:145] - node _T_227 = and(_T_220, _T_226) @[el2_ifu_iccm_mem.scala 72:71] - node _T_228 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 73:22] - node _T_229 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 73:60] - node _T_230 = eq(_T_228, _T_229) @[el2_ifu_iccm_mem.scala 73:37] - node _T_231 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 73:93] - node _T_232 = eq(_T_231, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 73:99] - node _T_233 = and(_T_230, _T_232) @[el2_ifu_iccm_mem.scala 73:77] - node _T_234 = or(_T_227, _T_233) @[el2_ifu_iccm_mem.scala 72:179] + node _T_175 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 67:67] + node _T_176 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 67:90] + node _T_177 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 67:128] + node _T_178 = eq(_T_176, _T_177) @[el2_ifu_iccm_mem.scala 67:105] + node _T_179 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 67:163] + node _T_180 = eq(_T_179, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 67:169] + node _T_181 = and(_T_178, _T_180) @[el2_ifu_iccm_mem.scala 67:145] + node _T_182 = and(_T_175, _T_181) @[el2_ifu_iccm_mem.scala 67:71] + node _T_183 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 68:22] + node _T_184 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 68:60] + node _T_185 = eq(_T_183, _T_184) @[el2_ifu_iccm_mem.scala 68:37] + node _T_186 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 68:93] + node _T_187 = eq(_T_186, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 68:99] + node _T_188 = and(_T_185, _T_187) @[el2_ifu_iccm_mem.scala 68:77] + node _T_189 = or(_T_182, _T_188) @[el2_ifu_iccm_mem.scala 67:179] + node _T_190 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 67:67] + node _T_191 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 67:90] + node _T_192 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 67:128] + node _T_193 = eq(_T_191, _T_192) @[el2_ifu_iccm_mem.scala 67:105] + node _T_194 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 67:163] + node _T_195 = eq(_T_194, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 67:169] + node _T_196 = and(_T_193, _T_195) @[el2_ifu_iccm_mem.scala 67:145] + node _T_197 = and(_T_190, _T_196) @[el2_ifu_iccm_mem.scala 67:71] + node _T_198 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 68:22] + node _T_199 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 68:60] + node _T_200 = eq(_T_198, _T_199) @[el2_ifu_iccm_mem.scala 68:37] + node _T_201 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 68:93] + node _T_202 = eq(_T_201, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 68:99] + node _T_203 = and(_T_200, _T_202) @[el2_ifu_iccm_mem.scala 68:77] + node _T_204 = or(_T_197, _T_203) @[el2_ifu_iccm_mem.scala 67:179] + node _T_205 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 67:67] + node _T_206 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 67:90] + node _T_207 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 67:128] + node _T_208 = eq(_T_206, _T_207) @[el2_ifu_iccm_mem.scala 67:105] + node _T_209 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 67:163] + node _T_210 = eq(_T_209, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 67:169] + node _T_211 = and(_T_208, _T_210) @[el2_ifu_iccm_mem.scala 67:145] + node _T_212 = and(_T_205, _T_211) @[el2_ifu_iccm_mem.scala 67:71] + node _T_213 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 68:22] + node _T_214 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 68:60] + node _T_215 = eq(_T_213, _T_214) @[el2_ifu_iccm_mem.scala 68:37] + node _T_216 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 68:93] + node _T_217 = eq(_T_216, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 68:99] + node _T_218 = and(_T_215, _T_217) @[el2_ifu_iccm_mem.scala 68:77] + node _T_219 = or(_T_212, _T_218) @[el2_ifu_iccm_mem.scala 67:179] + node _T_220 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 67:67] + node _T_221 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 67:90] + node _T_222 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 67:128] + node _T_223 = eq(_T_221, _T_222) @[el2_ifu_iccm_mem.scala 67:105] + node _T_224 = bits(io.iccm_rw_addr, 2, 1) @[el2_ifu_iccm_mem.scala 67:163] + node _T_225 = eq(_T_224, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 67:169] + node _T_226 = and(_T_223, _T_225) @[el2_ifu_iccm_mem.scala 67:145] + node _T_227 = and(_T_220, _T_226) @[el2_ifu_iccm_mem.scala 67:71] + node _T_228 = bits(addr_bank_inc, 14, 1) @[el2_ifu_iccm_mem.scala 68:22] + node _T_229 = bits(redundant_address[0], 13, 0) @[el2_ifu_iccm_mem.scala 68:60] + node _T_230 = eq(_T_228, _T_229) @[el2_ifu_iccm_mem.scala 68:37] + node _T_231 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 68:93] + node _T_232 = eq(_T_231, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 68:99] + node _T_233 = and(_T_230, _T_232) @[el2_ifu_iccm_mem.scala 68:77] + node _T_234 = or(_T_227, _T_233) @[el2_ifu_iccm_mem.scala 67:179] node _T_235 = cat(_T_234, _T_219) @[Cat.scala 29:58] node _T_236 = cat(_T_235, _T_204) @[Cat.scala 29:58] node sel_red0 = cat(_T_236, _T_189) @[Cat.scala 29:58] - reg sel_red0_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 75:27] - sel_red0_q <= sel_red0 @[el2_ifu_iccm_mem.scala 75:27] - reg sel_red1_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 76:27] - sel_red1_q <= sel_red1 @[el2_ifu_iccm_mem.scala 76:27] - wire redundant_data : UInt<39>[2] @[el2_ifu_iccm_mem.scala 77:28] - redundant_data[0] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 78:18] - redundant_data[1] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 78:18] - node _T_237 = bits(sel_red1_q, 0, 0) @[el2_ifu_iccm_mem.scala 80:47] - node _T_238 = bits(_T_237, 0, 0) @[el2_ifu_iccm_mem.scala 80:51] - node _T_239 = bits(sel_red0_q, 0, 0) @[el2_ifu_iccm_mem.scala 81:47] - node _T_240 = bits(_T_239, 0, 0) @[el2_ifu_iccm_mem.scala 81:51] - node _T_241 = bits(sel_red0_q, 0, 0) @[el2_ifu_iccm_mem.scala 82:47] - node _T_242 = not(_T_241) @[el2_ifu_iccm_mem.scala 82:36] - node _T_243 = bits(sel_red1_q, 0, 0) @[el2_ifu_iccm_mem.scala 82:64] - node _T_244 = not(_T_243) @[el2_ifu_iccm_mem.scala 82:53] - node _T_245 = and(_T_242, _T_244) @[el2_ifu_iccm_mem.scala 82:51] - node _T_246 = bits(_T_245, 0, 0) @[el2_ifu_iccm_mem.scala 82:69] + reg sel_red0_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 70:27] + sel_red0_q <= sel_red0 @[el2_ifu_iccm_mem.scala 70:27] + reg sel_red1_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 71:27] + sel_red1_q <= sel_red1 @[el2_ifu_iccm_mem.scala 71:27] + wire redundant_data : UInt<39>[2] @[el2_ifu_iccm_mem.scala 72:28] + redundant_data[0] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 73:18] + redundant_data[1] <= UInt<1>("h00") @[el2_ifu_iccm_mem.scala 73:18] + node _T_237 = bits(sel_red1_q, 0, 0) @[el2_ifu_iccm_mem.scala 75:47] + node _T_238 = bits(_T_237, 0, 0) @[el2_ifu_iccm_mem.scala 75:51] + node _T_239 = bits(sel_red0_q, 0, 0) @[el2_ifu_iccm_mem.scala 76:47] + node _T_240 = bits(_T_239, 0, 0) @[el2_ifu_iccm_mem.scala 76:51] + node _T_241 = bits(sel_red0_q, 0, 0) @[el2_ifu_iccm_mem.scala 77:47] + node _T_242 = not(_T_241) @[el2_ifu_iccm_mem.scala 77:36] + node _T_243 = bits(sel_red1_q, 0, 0) @[el2_ifu_iccm_mem.scala 77:64] + node _T_244 = not(_T_243) @[el2_ifu_iccm_mem.scala 77:53] + node _T_245 = and(_T_242, _T_244) @[el2_ifu_iccm_mem.scala 77:51] + node _T_246 = bits(_T_245, 0, 0) @[el2_ifu_iccm_mem.scala 77:69] node _T_247 = mux(_T_238, redundant_data[1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_248 = mux(_T_240, redundant_data[0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_249 = mux(_T_246, iccm_bank_dout[0], UInt<1>("h00")) @[Mux.scala 27:72] @@ -342,16 +338,16 @@ circuit el2_ifu_iccm_mem : node _T_251 = or(_T_250, _T_249) @[Mux.scala 27:72] wire iccm_bank_dout_fn_0 : UInt<39> @[Mux.scala 27:72] iccm_bank_dout_fn_0 <= _T_251 @[Mux.scala 27:72] - node _T_252 = bits(sel_red1_q, 1, 1) @[el2_ifu_iccm_mem.scala 80:47] - node _T_253 = bits(_T_252, 0, 0) @[el2_ifu_iccm_mem.scala 80:51] - node _T_254 = bits(sel_red0_q, 1, 1) @[el2_ifu_iccm_mem.scala 81:47] - node _T_255 = bits(_T_254, 0, 0) @[el2_ifu_iccm_mem.scala 81:51] - node _T_256 = bits(sel_red0_q, 1, 1) @[el2_ifu_iccm_mem.scala 82:47] - node _T_257 = not(_T_256) @[el2_ifu_iccm_mem.scala 82:36] - node _T_258 = bits(sel_red1_q, 1, 1) @[el2_ifu_iccm_mem.scala 82:64] - node _T_259 = not(_T_258) @[el2_ifu_iccm_mem.scala 82:53] - node _T_260 = and(_T_257, _T_259) @[el2_ifu_iccm_mem.scala 82:51] - node _T_261 = bits(_T_260, 0, 0) @[el2_ifu_iccm_mem.scala 82:69] + node _T_252 = bits(sel_red1_q, 1, 1) @[el2_ifu_iccm_mem.scala 75:47] + node _T_253 = bits(_T_252, 0, 0) @[el2_ifu_iccm_mem.scala 75:51] + node _T_254 = bits(sel_red0_q, 1, 1) @[el2_ifu_iccm_mem.scala 76:47] + node _T_255 = bits(_T_254, 0, 0) @[el2_ifu_iccm_mem.scala 76:51] + node _T_256 = bits(sel_red0_q, 1, 1) @[el2_ifu_iccm_mem.scala 77:47] + node _T_257 = not(_T_256) @[el2_ifu_iccm_mem.scala 77:36] + node _T_258 = bits(sel_red1_q, 1, 1) @[el2_ifu_iccm_mem.scala 77:64] + node _T_259 = not(_T_258) @[el2_ifu_iccm_mem.scala 77:53] + node _T_260 = and(_T_257, _T_259) @[el2_ifu_iccm_mem.scala 77:51] + node _T_261 = bits(_T_260, 0, 0) @[el2_ifu_iccm_mem.scala 77:69] node _T_262 = mux(_T_253, redundant_data[1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_263 = mux(_T_255, redundant_data[0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_264 = mux(_T_261, iccm_bank_dout[1], UInt<1>("h00")) @[Mux.scala 27:72] @@ -359,16 +355,16 @@ circuit el2_ifu_iccm_mem : node _T_266 = or(_T_265, _T_264) @[Mux.scala 27:72] wire iccm_bank_dout_fn_1 : UInt<39> @[Mux.scala 27:72] iccm_bank_dout_fn_1 <= _T_266 @[Mux.scala 27:72] - node _T_267 = bits(sel_red1_q, 2, 2) @[el2_ifu_iccm_mem.scala 80:47] - node _T_268 = bits(_T_267, 0, 0) @[el2_ifu_iccm_mem.scala 80:51] - node _T_269 = bits(sel_red0_q, 2, 2) @[el2_ifu_iccm_mem.scala 81:47] - node _T_270 = bits(_T_269, 0, 0) @[el2_ifu_iccm_mem.scala 81:51] - node _T_271 = bits(sel_red0_q, 2, 2) @[el2_ifu_iccm_mem.scala 82:47] - node _T_272 = not(_T_271) @[el2_ifu_iccm_mem.scala 82:36] - node _T_273 = bits(sel_red1_q, 2, 2) @[el2_ifu_iccm_mem.scala 82:64] - node _T_274 = not(_T_273) @[el2_ifu_iccm_mem.scala 82:53] - node _T_275 = and(_T_272, _T_274) @[el2_ifu_iccm_mem.scala 82:51] - node _T_276 = bits(_T_275, 0, 0) @[el2_ifu_iccm_mem.scala 82:69] + node _T_267 = bits(sel_red1_q, 2, 2) @[el2_ifu_iccm_mem.scala 75:47] + node _T_268 = bits(_T_267, 0, 0) @[el2_ifu_iccm_mem.scala 75:51] + node _T_269 = bits(sel_red0_q, 2, 2) @[el2_ifu_iccm_mem.scala 76:47] + node _T_270 = bits(_T_269, 0, 0) @[el2_ifu_iccm_mem.scala 76:51] + node _T_271 = bits(sel_red0_q, 2, 2) @[el2_ifu_iccm_mem.scala 77:47] + node _T_272 = not(_T_271) @[el2_ifu_iccm_mem.scala 77:36] + node _T_273 = bits(sel_red1_q, 2, 2) @[el2_ifu_iccm_mem.scala 77:64] + node _T_274 = not(_T_273) @[el2_ifu_iccm_mem.scala 77:53] + node _T_275 = and(_T_272, _T_274) @[el2_ifu_iccm_mem.scala 77:51] + node _T_276 = bits(_T_275, 0, 0) @[el2_ifu_iccm_mem.scala 77:69] node _T_277 = mux(_T_268, redundant_data[1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_278 = mux(_T_270, redundant_data[0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_279 = mux(_T_276, iccm_bank_dout[2], UInt<1>("h00")) @[Mux.scala 27:72] @@ -376,16 +372,16 @@ circuit el2_ifu_iccm_mem : node _T_281 = or(_T_280, _T_279) @[Mux.scala 27:72] wire iccm_bank_dout_fn_2 : UInt<39> @[Mux.scala 27:72] iccm_bank_dout_fn_2 <= _T_281 @[Mux.scala 27:72] - node _T_282 = bits(sel_red1_q, 3, 3) @[el2_ifu_iccm_mem.scala 80:47] - node _T_283 = bits(_T_282, 0, 0) @[el2_ifu_iccm_mem.scala 80:51] - node _T_284 = bits(sel_red0_q, 3, 3) @[el2_ifu_iccm_mem.scala 81:47] - node _T_285 = bits(_T_284, 0, 0) @[el2_ifu_iccm_mem.scala 81:51] - node _T_286 = bits(sel_red0_q, 3, 3) @[el2_ifu_iccm_mem.scala 82:47] - node _T_287 = not(_T_286) @[el2_ifu_iccm_mem.scala 82:36] - node _T_288 = bits(sel_red1_q, 3, 3) @[el2_ifu_iccm_mem.scala 82:64] - node _T_289 = not(_T_288) @[el2_ifu_iccm_mem.scala 82:53] - node _T_290 = and(_T_287, _T_289) @[el2_ifu_iccm_mem.scala 82:51] - node _T_291 = bits(_T_290, 0, 0) @[el2_ifu_iccm_mem.scala 82:69] + node _T_282 = bits(sel_red1_q, 3, 3) @[el2_ifu_iccm_mem.scala 75:47] + node _T_283 = bits(_T_282, 0, 0) @[el2_ifu_iccm_mem.scala 75:51] + node _T_284 = bits(sel_red0_q, 3, 3) @[el2_ifu_iccm_mem.scala 76:47] + node _T_285 = bits(_T_284, 0, 0) @[el2_ifu_iccm_mem.scala 76:51] + node _T_286 = bits(sel_red0_q, 3, 3) @[el2_ifu_iccm_mem.scala 77:47] + node _T_287 = not(_T_286) @[el2_ifu_iccm_mem.scala 77:36] + node _T_288 = bits(sel_red1_q, 3, 3) @[el2_ifu_iccm_mem.scala 77:64] + node _T_289 = not(_T_288) @[el2_ifu_iccm_mem.scala 77:53] + node _T_290 = and(_T_287, _T_289) @[el2_ifu_iccm_mem.scala 77:51] + node _T_291 = bits(_T_290, 0, 0) @[el2_ifu_iccm_mem.scala 77:69] node _T_292 = mux(_T_283, redundant_data[1], UInt<1>("h00")) @[Mux.scala 27:72] node _T_293 = mux(_T_285, redundant_data[0], UInt<1>("h00")) @[Mux.scala 27:72] node _T_294 = mux(_T_291, iccm_bank_dout[3], UInt<1>("h00")) @[Mux.scala 27:72] @@ -395,38 +391,38 @@ circuit el2_ifu_iccm_mem : iccm_bank_dout_fn_3 <= _T_296 @[Mux.scala 27:72] wire redundant_lru : UInt<1> redundant_lru <= UInt<1>("h00") - node _T_297 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 84:20] - node r0_addr_en = and(_T_297, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 84:35] - node r1_addr_en = and(redundant_lru, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 85:35] - node _T_298 = orr(sel_red0) @[el2_ifu_iccm_mem.scala 86:63] - node _T_299 = orr(sel_red1) @[el2_ifu_iccm_mem.scala 86:78] - node _T_300 = or(_T_298, _T_299) @[el2_ifu_iccm_mem.scala 86:67] - node _T_301 = and(_T_300, io.iccm_rden) @[el2_ifu_iccm_mem.scala 86:83] - node _T_302 = and(_T_301, io.iccm_correction_state) @[el2_ifu_iccm_mem.scala 86:98] - node redundant_lru_en = or(io.iccm_buf_correct_ecc, _T_302) @[el2_ifu_iccm_mem.scala 86:50] - node _T_303 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 87:55] - node _T_304 = orr(sel_red0) @[el2_ifu_iccm_mem.scala 87:84] - node _T_305 = mux(_T_304, UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 87:74] - node redundant_lru_in = mux(io.iccm_buf_correct_ecc, _T_303, _T_305) @[el2_ifu_iccm_mem.scala 87:29] + node _T_297 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 79:20] + node r0_addr_en = and(_T_297, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 79:35] + node r1_addr_en = and(redundant_lru, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 80:35] + node _T_298 = orr(sel_red0) @[el2_ifu_iccm_mem.scala 81:63] + node _T_299 = orr(sel_red1) @[el2_ifu_iccm_mem.scala 81:78] + node _T_300 = or(_T_298, _T_299) @[el2_ifu_iccm_mem.scala 81:67] + node _T_301 = and(_T_300, io.iccm_rden) @[el2_ifu_iccm_mem.scala 81:83] + node _T_302 = and(_T_301, io.iccm_correction_state) @[el2_ifu_iccm_mem.scala 81:98] + node redundant_lru_en = or(io.iccm_buf_correct_ecc, _T_302) @[el2_ifu_iccm_mem.scala 81:50] + node _T_303 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 82:55] + node _T_304 = orr(sel_red0) @[el2_ifu_iccm_mem.scala 82:84] + node _T_305 = mux(_T_304, UInt<1>("h01"), UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 82:74] + node redundant_lru_in = mux(io.iccm_buf_correct_ecc, _T_303, _T_305) @[el2_ifu_iccm_mem.scala 82:29] reg _T_306 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when redundant_lru_en : @[Reg.scala 28:19] _T_306 <= redundant_lru_in @[Reg.scala 28:23] skip @[Reg.scala 28:19] - redundant_lru <= _T_306 @[el2_ifu_iccm_mem.scala 88:17] - node _T_307 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 89:52] + redundant_lru <= _T_306 @[el2_ifu_iccm_mem.scala 83:17] + node _T_307 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 84:52] reg _T_308 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when r0_addr_en : @[Reg.scala 28:19] _T_308 <= _T_307 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - redundant_address[0] <= _T_308 @[el2_ifu_iccm_mem.scala 89:24] - node _T_309 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 90:52] - node _T_310 = bits(r1_addr_en, 0, 0) @[el2_ifu_iccm_mem.scala 90:85] + redundant_address[0] <= _T_308 @[el2_ifu_iccm_mem.scala 84:24] + node _T_309 = bits(io.iccm_rw_addr, 14, 1) @[el2_ifu_iccm_mem.scala 85:52] + node _T_310 = bits(r1_addr_en, 0, 0) @[el2_ifu_iccm_mem.scala 85:85] reg _T_311 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when _T_310 : @[Reg.scala 28:19] _T_311 <= _T_309 @[Reg.scala 28:23] skip @[Reg.scala 28:19] - redundant_address[1] <= _T_311 @[el2_ifu_iccm_mem.scala 90:24] - node _T_312 = bits(r1_addr_en, 0, 0) @[el2_ifu_iccm_mem.scala 91:57] + redundant_address[1] <= _T_311 @[el2_ifu_iccm_mem.scala 85:24] + node _T_312 = bits(r1_addr_en, 0, 0) @[el2_ifu_iccm_mem.scala 86:57] reg _T_313 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when _T_312 : @[Reg.scala 28:19] _T_313 <= UInt<1>("h01") @[Reg.scala 28:23] @@ -436,89 +432,89 @@ circuit el2_ifu_iccm_mem : _T_314 <= UInt<1>("h01") @[Reg.scala 28:23] skip @[Reg.scala 28:19] node _T_315 = cat(_T_313, _T_314) @[Cat.scala 29:58] - redundant_valid <= _T_315 @[el2_ifu_iccm_mem.scala 91:19] - node _T_316 = bits(io.iccm_rw_addr, 14, 2) @[el2_ifu_iccm_mem.scala 93:45] - node _T_317 = bits(redundant_address[0], 13, 1) @[el2_ifu_iccm_mem.scala 93:85] - node _T_318 = eq(_T_316, _T_317) @[el2_ifu_iccm_mem.scala 93:61] - node _T_319 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 94:22] - node _T_320 = bits(redundant_address[0], 0, 0) @[el2_ifu_iccm_mem.scala 94:48] - node _T_321 = and(_T_319, _T_320) @[el2_ifu_iccm_mem.scala 94:26] - node _T_322 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 94:70] - node _T_323 = eq(_T_322, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 94:75] - node _T_324 = or(_T_321, _T_323) @[el2_ifu_iccm_mem.scala 94:52] - node _T_325 = and(_T_318, _T_324) @[el2_ifu_iccm_mem.scala 93:102] - node _T_326 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 94:101] - node _T_327 = and(_T_325, _T_326) @[el2_ifu_iccm_mem.scala 94:84] - node _T_328 = and(_T_327, io.iccm_wren) @[el2_ifu_iccm_mem.scala 94:105] - node _T_329 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 95:6] - node _T_330 = and(_T_329, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 95:21] - node redundant_data0_en = or(_T_328, _T_330) @[el2_ifu_iccm_mem.scala 94:121] - node _T_331 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 96:49] - node _T_332 = bits(redundant_address[0], 0, 0) @[el2_ifu_iccm_mem.scala 96:73] - node _T_333 = and(_T_331, _T_332) @[el2_ifu_iccm_mem.scala 96:52] - node _T_334 = bits(redundant_address[0], 0, 0) @[el2_ifu_iccm_mem.scala 96:100] - node _T_335 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 96:122] - node _T_336 = eq(_T_335, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 96:127] - node _T_337 = and(_T_334, _T_336) @[el2_ifu_iccm_mem.scala 96:104] - node _T_338 = or(_T_333, _T_337) @[el2_ifu_iccm_mem.scala 96:78] - node _T_339 = bits(_T_338, 0, 0) @[el2_ifu_iccm_mem.scala 96:137] - node _T_340 = bits(io.iccm_wr_data, 77, 39) @[el2_ifu_iccm_mem.scala 97:20] - node _T_341 = bits(io.iccm_wr_data, 38, 0) @[el2_ifu_iccm_mem.scala 97:44] - node redundant_data0_in = mux(_T_339, _T_340, _T_341) @[el2_ifu_iccm_mem.scala 96:31] - node _T_342 = bits(redundant_data0_en, 0, 0) @[el2_ifu_iccm_mem.scala 98:78] + redundant_valid <= _T_315 @[el2_ifu_iccm_mem.scala 86:19] + node _T_316 = bits(io.iccm_rw_addr, 14, 2) @[el2_ifu_iccm_mem.scala 88:45] + node _T_317 = bits(redundant_address[0], 13, 1) @[el2_ifu_iccm_mem.scala 88:85] + node _T_318 = eq(_T_316, _T_317) @[el2_ifu_iccm_mem.scala 88:61] + node _T_319 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 89:22] + node _T_320 = bits(redundant_address[0], 0, 0) @[el2_ifu_iccm_mem.scala 89:48] + node _T_321 = and(_T_319, _T_320) @[el2_ifu_iccm_mem.scala 89:26] + node _T_322 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 89:70] + node _T_323 = eq(_T_322, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 89:75] + node _T_324 = or(_T_321, _T_323) @[el2_ifu_iccm_mem.scala 89:52] + node _T_325 = and(_T_318, _T_324) @[el2_ifu_iccm_mem.scala 88:102] + node _T_326 = bits(redundant_valid, 0, 0) @[el2_ifu_iccm_mem.scala 89:101] + node _T_327 = and(_T_325, _T_326) @[el2_ifu_iccm_mem.scala 89:84] + node _T_328 = and(_T_327, io.iccm_wren) @[el2_ifu_iccm_mem.scala 89:105] + node _T_329 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 90:6] + node _T_330 = and(_T_329, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 90:21] + node redundant_data0_en = or(_T_328, _T_330) @[el2_ifu_iccm_mem.scala 89:121] + node _T_331 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 91:49] + node _T_332 = bits(redundant_address[0], 0, 0) @[el2_ifu_iccm_mem.scala 91:73] + node _T_333 = and(_T_331, _T_332) @[el2_ifu_iccm_mem.scala 91:52] + node _T_334 = bits(redundant_address[0], 0, 0) @[el2_ifu_iccm_mem.scala 91:100] + node _T_335 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 91:122] + node _T_336 = eq(_T_335, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 91:127] + node _T_337 = and(_T_334, _T_336) @[el2_ifu_iccm_mem.scala 91:104] + node _T_338 = or(_T_333, _T_337) @[el2_ifu_iccm_mem.scala 91:78] + node _T_339 = bits(_T_338, 0, 0) @[el2_ifu_iccm_mem.scala 91:137] + node _T_340 = bits(io.iccm_wr_data, 77, 39) @[el2_ifu_iccm_mem.scala 92:20] + node _T_341 = bits(io.iccm_wr_data, 38, 0) @[el2_ifu_iccm_mem.scala 92:44] + node redundant_data0_in = mux(_T_339, _T_340, _T_341) @[el2_ifu_iccm_mem.scala 91:31] + node _T_342 = bits(redundant_data0_en, 0, 0) @[el2_ifu_iccm_mem.scala 93:78] reg _T_343 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when _T_342 : @[Reg.scala 28:19] _T_343 <= redundant_data0_in @[Reg.scala 28:23] skip @[Reg.scala 28:19] - redundant_data[0] <= _T_343 @[el2_ifu_iccm_mem.scala 98:21] - node _T_344 = bits(io.iccm_rw_addr, 14, 2) @[el2_ifu_iccm_mem.scala 100:45] - node _T_345 = bits(redundant_address[1], 13, 1) @[el2_ifu_iccm_mem.scala 100:85] - node _T_346 = eq(_T_344, _T_345) @[el2_ifu_iccm_mem.scala 100:61] - node _T_347 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 101:22] - node _T_348 = bits(redundant_address[1], 0, 0) @[el2_ifu_iccm_mem.scala 101:48] - node _T_349 = and(_T_347, _T_348) @[el2_ifu_iccm_mem.scala 101:26] - node _T_350 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 101:70] - node _T_351 = eq(_T_350, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 101:75] - node _T_352 = or(_T_349, _T_351) @[el2_ifu_iccm_mem.scala 101:52] - node _T_353 = and(_T_346, _T_352) @[el2_ifu_iccm_mem.scala 100:102] - node _T_354 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 101:101] - node _T_355 = and(_T_353, _T_354) @[el2_ifu_iccm_mem.scala 101:84] - node _T_356 = and(_T_355, io.iccm_wren) @[el2_ifu_iccm_mem.scala 101:105] - node _T_357 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 102:6] - node _T_358 = and(_T_357, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 102:21] - node redundant_data1_en = or(_T_356, _T_358) @[el2_ifu_iccm_mem.scala 101:121] - node _T_359 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 103:49] - node _T_360 = bits(redundant_address[1], 0, 0) @[el2_ifu_iccm_mem.scala 103:73] - node _T_361 = and(_T_359, _T_360) @[el2_ifu_iccm_mem.scala 103:52] - node _T_362 = bits(redundant_address[1], 0, 0) @[el2_ifu_iccm_mem.scala 103:100] - node _T_363 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 103:122] - node _T_364 = eq(_T_363, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 103:127] - node _T_365 = and(_T_362, _T_364) @[el2_ifu_iccm_mem.scala 103:104] - node _T_366 = or(_T_361, _T_365) @[el2_ifu_iccm_mem.scala 103:78] - node _T_367 = bits(_T_366, 0, 0) @[el2_ifu_iccm_mem.scala 103:137] - node _T_368 = bits(io.iccm_wr_data, 77, 39) @[el2_ifu_iccm_mem.scala 104:20] - node _T_369 = bits(io.iccm_wr_data, 38, 0) @[el2_ifu_iccm_mem.scala 104:44] - node redundant_data1_in = mux(_T_367, _T_368, _T_369) @[el2_ifu_iccm_mem.scala 103:31] - node _T_370 = bits(redundant_data1_en, 0, 0) @[el2_ifu_iccm_mem.scala 105:78] + redundant_data[0] <= _T_343 @[el2_ifu_iccm_mem.scala 93:21] + node _T_344 = bits(io.iccm_rw_addr, 14, 2) @[el2_ifu_iccm_mem.scala 95:45] + node _T_345 = bits(redundant_address[1], 13, 1) @[el2_ifu_iccm_mem.scala 95:85] + node _T_346 = eq(_T_344, _T_345) @[el2_ifu_iccm_mem.scala 95:61] + node _T_347 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 96:22] + node _T_348 = bits(redundant_address[1], 0, 0) @[el2_ifu_iccm_mem.scala 96:48] + node _T_349 = and(_T_347, _T_348) @[el2_ifu_iccm_mem.scala 96:26] + node _T_350 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 96:70] + node _T_351 = eq(_T_350, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 96:75] + node _T_352 = or(_T_349, _T_351) @[el2_ifu_iccm_mem.scala 96:52] + node _T_353 = and(_T_346, _T_352) @[el2_ifu_iccm_mem.scala 95:102] + node _T_354 = bits(redundant_valid, 1, 1) @[el2_ifu_iccm_mem.scala 96:101] + node _T_355 = and(_T_353, _T_354) @[el2_ifu_iccm_mem.scala 96:84] + node _T_356 = and(_T_355, io.iccm_wren) @[el2_ifu_iccm_mem.scala 96:105] + node _T_357 = eq(redundant_lru, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 97:6] + node _T_358 = and(_T_357, io.iccm_buf_correct_ecc) @[el2_ifu_iccm_mem.scala 97:21] + node redundant_data1_en = or(_T_356, _T_358) @[el2_ifu_iccm_mem.scala 96:121] + node _T_359 = bits(io.iccm_rw_addr, 1, 1) @[el2_ifu_iccm_mem.scala 98:49] + node _T_360 = bits(redundant_address[1], 0, 0) @[el2_ifu_iccm_mem.scala 98:73] + node _T_361 = and(_T_359, _T_360) @[el2_ifu_iccm_mem.scala 98:52] + node _T_362 = bits(redundant_address[1], 0, 0) @[el2_ifu_iccm_mem.scala 98:100] + node _T_363 = bits(io.iccm_wr_size, 1, 0) @[el2_ifu_iccm_mem.scala 98:122] + node _T_364 = eq(_T_363, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 98:127] + node _T_365 = and(_T_362, _T_364) @[el2_ifu_iccm_mem.scala 98:104] + node _T_366 = or(_T_361, _T_365) @[el2_ifu_iccm_mem.scala 98:78] + node _T_367 = bits(_T_366, 0, 0) @[el2_ifu_iccm_mem.scala 98:137] + node _T_368 = bits(io.iccm_wr_data, 77, 39) @[el2_ifu_iccm_mem.scala 99:20] + node _T_369 = bits(io.iccm_wr_data, 38, 0) @[el2_ifu_iccm_mem.scala 99:44] + node redundant_data1_in = mux(_T_367, _T_368, _T_369) @[el2_ifu_iccm_mem.scala 98:31] + node _T_370 = bits(redundant_data1_en, 0, 0) @[el2_ifu_iccm_mem.scala 100:78] reg _T_371 : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[Reg.scala 27:20] when _T_370 : @[Reg.scala 28:19] _T_371 <= redundant_data1_in @[Reg.scala 28:23] skip @[Reg.scala 28:19] - redundant_data[1] <= _T_371 @[el2_ifu_iccm_mem.scala 105:21] - node _T_372 = bits(io.iccm_rw_addr, 2, 0) @[el2_ifu_iccm_mem.scala 107:50] - reg iccm_rd_addr_lo_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 107:34] - iccm_rd_addr_lo_q <= _T_372 @[el2_ifu_iccm_mem.scala 107:34] - node _T_373 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 108:48] - reg iccm_rd_addr_hi_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 108:34] - iccm_rd_addr_hi_q <= _T_373 @[el2_ifu_iccm_mem.scala 108:34] - node _T_374 = eq(iccm_rd_addr_hi_q, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 110:86] - node _T_375 = bits(iccm_bank_dout_fn_0, 31, 0) @[el2_ifu_iccm_mem.scala 110:115] - node _T_376 = eq(iccm_rd_addr_hi_q, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 110:86] - node _T_377 = bits(iccm_bank_dout_fn_1, 31, 0) @[el2_ifu_iccm_mem.scala 110:115] - node _T_378 = eq(iccm_rd_addr_hi_q, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 110:86] - node _T_379 = bits(iccm_bank_dout_fn_2, 31, 0) @[el2_ifu_iccm_mem.scala 110:115] - node _T_380 = eq(iccm_rd_addr_hi_q, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 110:86] - node _T_381 = bits(iccm_bank_dout_fn_3, 31, 0) @[el2_ifu_iccm_mem.scala 110:115] + redundant_data[1] <= _T_371 @[el2_ifu_iccm_mem.scala 100:21] + node _T_372 = bits(io.iccm_rw_addr, 3, 1) @[el2_ifu_iccm_mem.scala 102:50] + reg iccm_rd_addr_lo_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 102:34] + iccm_rd_addr_lo_q <= _T_372 @[el2_ifu_iccm_mem.scala 102:34] + node _T_373 = bits(addr_bank_inc, 2, 1) @[el2_ifu_iccm_mem.scala 103:48] + reg iccm_rd_addr_hi_q : UInt, clock with : (reset => (reset, UInt<1>("h00"))) @[el2_ifu_iccm_mem.scala 103:34] + iccm_rd_addr_hi_q <= _T_373 @[el2_ifu_iccm_mem.scala 103:34] + node _T_374 = eq(iccm_rd_addr_hi_q, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 105:86] + node _T_375 = bits(iccm_bank_dout_fn_0, 31, 0) @[el2_ifu_iccm_mem.scala 105:115] + node _T_376 = eq(iccm_rd_addr_hi_q, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 105:86] + node _T_377 = bits(iccm_bank_dout_fn_1, 31, 0) @[el2_ifu_iccm_mem.scala 105:115] + node _T_378 = eq(iccm_rd_addr_hi_q, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 105:86] + node _T_379 = bits(iccm_bank_dout_fn_2, 31, 0) @[el2_ifu_iccm_mem.scala 105:115] + node _T_380 = eq(iccm_rd_addr_hi_q, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 105:86] + node _T_381 = bits(iccm_bank_dout_fn_3, 31, 0) @[el2_ifu_iccm_mem.scala 105:115] node _T_382 = mux(_T_374, _T_375, UInt<1>("h00")) @[Mux.scala 27:72] node _T_383 = mux(_T_376, _T_377, UInt<1>("h00")) @[Mux.scala 27:72] node _T_384 = mux(_T_378, _T_379, UInt<1>("h00")) @[Mux.scala 27:72] @@ -528,18 +524,18 @@ circuit el2_ifu_iccm_mem : node _T_388 = or(_T_387, _T_385) @[Mux.scala 27:72] wire _T_389 : UInt<32> @[Mux.scala 27:72] _T_389 <= _T_388 @[Mux.scala 27:72] - node _T_390 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 111:59] - node _T_391 = eq(_T_390, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 111:77] - node _T_392 = bits(iccm_bank_dout_fn_0, 31, 0) @[el2_ifu_iccm_mem.scala 111:106] - node _T_393 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 111:59] - node _T_394 = eq(_T_393, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 111:77] - node _T_395 = bits(iccm_bank_dout_fn_1, 31, 0) @[el2_ifu_iccm_mem.scala 111:106] - node _T_396 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 111:59] - node _T_397 = eq(_T_396, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 111:77] - node _T_398 = bits(iccm_bank_dout_fn_2, 31, 0) @[el2_ifu_iccm_mem.scala 111:106] - node _T_399 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 111:59] - node _T_400 = eq(_T_399, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 111:77] - node _T_401 = bits(iccm_bank_dout_fn_3, 31, 0) @[el2_ifu_iccm_mem.scala 111:106] + node _T_390 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_391 = eq(_T_390, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 106:77] + node _T_392 = bits(iccm_bank_dout_fn_0, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] + node _T_393 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_394 = eq(_T_393, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 106:77] + node _T_395 = bits(iccm_bank_dout_fn_1, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] + node _T_396 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_397 = eq(_T_396, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 106:77] + node _T_398 = bits(iccm_bank_dout_fn_2, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] + node _T_399 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_400 = eq(_T_399, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 106:77] + node _T_401 = bits(iccm_bank_dout_fn_3, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] node _T_402 = mux(_T_391, _T_392, UInt<1>("h00")) @[Mux.scala 27:72] node _T_403 = mux(_T_394, _T_395, UInt<1>("h00")) @[Mux.scala 27:72] node _T_404 = mux(_T_397, _T_398, UInt<1>("h00")) @[Mux.scala 27:72] @@ -550,17 +546,17 @@ circuit el2_ifu_iccm_mem : wire _T_409 : UInt<32> @[Mux.scala 27:72] _T_409 <= _T_408 @[Mux.scala 27:72] node iccm_rd_data_pre = cat(_T_389, _T_409) @[Cat.scala 29:58] - node _T_410 = bits(iccm_rd_addr_lo_q, 0, 0) @[el2_ifu_iccm_mem.scala 112:43] - node _T_411 = bits(_T_410, 0, 0) @[el2_ifu_iccm_mem.scala 112:53] + node _T_410 = bits(iccm_rd_addr_lo_q, 0, 0) @[el2_ifu_iccm_mem.scala 108:43] + node _T_411 = bits(_T_410, 0, 0) @[el2_ifu_iccm_mem.scala 108:53] node _T_412 = mux(UInt<1>("h00"), UInt<16>("h0ffff"), UInt<16>("h00")) @[Bitwise.scala 72:12] - node _T_413 = bits(iccm_rd_data_pre, 63, 16) @[el2_ifu_iccm_mem.scala 112:89] + node _T_413 = bits(iccm_rd_data_pre, 63, 16) @[el2_ifu_iccm_mem.scala 108:89] node _T_414 = cat(_T_412, _T_413) @[Cat.scala 29:58] - node _T_415 = mux(_T_411, _T_414, iccm_rd_data_pre) @[el2_ifu_iccm_mem.scala 112:25] - io.iccm_rd_data <= _T_415 @[el2_ifu_iccm_mem.scala 112:19] - node _T_416 = eq(iccm_rd_addr_hi_q, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 113:85] - node _T_417 = eq(iccm_rd_addr_hi_q, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 113:85] - node _T_418 = eq(iccm_rd_addr_hi_q, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 113:85] - node _T_419 = eq(iccm_rd_addr_hi_q, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 113:85] + node _T_415 = mux(_T_411, _T_414, iccm_rd_data_pre) @[el2_ifu_iccm_mem.scala 108:25] + io.iccm_rd_data <= _T_415 @[el2_ifu_iccm_mem.scala 108:19] + node _T_416 = eq(iccm_rd_addr_hi_q, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 109:85] + node _T_417 = eq(iccm_rd_addr_hi_q, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 109:85] + node _T_418 = eq(iccm_rd_addr_hi_q, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 109:85] + node _T_419 = eq(iccm_rd_addr_hi_q, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 109:85] node _T_420 = mux(_T_416, iccm_bank_dout_fn_0, UInt<1>("h00")) @[Mux.scala 27:72] node _T_421 = mux(_T_417, iccm_bank_dout_fn_1, UInt<1>("h00")) @[Mux.scala 27:72] node _T_422 = mux(_T_418, iccm_bank_dout_fn_2, UInt<1>("h00")) @[Mux.scala 27:72] @@ -570,14 +566,14 @@ circuit el2_ifu_iccm_mem : node _T_426 = or(_T_425, _T_423) @[Mux.scala 27:72] wire _T_427 : UInt<39> @[Mux.scala 27:72] _T_427 <= _T_426 @[Mux.scala 27:72] - node _T_428 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 114:61] - node _T_429 = eq(_T_428, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 114:79] - node _T_430 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 114:61] - node _T_431 = eq(_T_430, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 114:79] - node _T_432 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 114:61] - node _T_433 = eq(_T_432, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 114:79] - node _T_434 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 114:61] - node _T_435 = eq(_T_434, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 114:79] + node _T_428 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 110:61] + node _T_429 = eq(_T_428, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 110:79] + node _T_430 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 110:61] + node _T_431 = eq(_T_430, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 110:79] + node _T_432 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 110:61] + node _T_433 = eq(_T_432, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 110:79] + node _T_434 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 110:61] + node _T_435 = eq(_T_434, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 110:79] node _T_436 = mux(_T_429, iccm_bank_dout_fn_0, UInt<1>("h00")) @[Mux.scala 27:72] node _T_437 = mux(_T_431, iccm_bank_dout_fn_1, UInt<1>("h00")) @[Mux.scala 27:72] node _T_438 = mux(_T_433, iccm_bank_dout_fn_2, UInt<1>("h00")) @[Mux.scala 27:72] @@ -588,5 +584,5 @@ circuit el2_ifu_iccm_mem : wire _T_443 : UInt<39> @[Mux.scala 27:72] _T_443 <= _T_442 @[Mux.scala 27:72] node _T_444 = cat(_T_427, _T_443) @[Cat.scala 29:58] - io.iccm_rd_data_ecc <= _T_444 @[el2_ifu_iccm_mem.scala 113:23] + io.iccm_rd_data_ecc <= _T_444 @[el2_ifu_iccm_mem.scala 109:23] diff --git a/el2_ifu_iccm_mem.v b/el2_ifu_iccm_mem.v index 6d7464bb..f8b91748 100644 --- a/el2_ifu_iccm_mem.v +++ b/el2_ifu_iccm_mem.v @@ -11,11 +11,7 @@ module el2_ifu_iccm_mem( input [77:0] io_iccm_wr_data, output [63:0] io_iccm_rd_data, output [77:0] io_iccm_rd_data_ecc, - input io_scan_mode, - output [11:0] io_iccm_bank_addr_0, - output [11:0] io_iccm_bank_addr_1, - output [11:0] io_iccm_bank_addr_2, - output [11:0] io_iccm_bank_addr_3 + input io_scan_mode ); `ifdef RANDOMIZE_MEM_INIT reg [63:0] _RAND_0; @@ -134,50 +130,50 @@ module el2_ifu_iccm_mem( reg _T_314; // @[Reg.scala 27:20] wire [1:0] redundant_valid = {_T_313,_T_314}; // @[Cat.scala 29:58] reg [13:0] redundant_address_1; // @[Reg.scala 27:20] - wire _T_116 = io_iccm_rw_addr[14:1] == redundant_address_1; // @[el2_ifu_iccm_mem.scala 70:105] - wire _T_119 = _T_116 & _T_10; // @[el2_ifu_iccm_mem.scala 70:145] - wire _T_120 = redundant_valid[1] & _T_119; // @[el2_ifu_iccm_mem.scala 70:71] - wire _T_123 = addr_bank_inc[14:1] == redundant_address_1; // @[el2_ifu_iccm_mem.scala 71:37] - wire _T_126 = _T_123 & _T_12; // @[el2_ifu_iccm_mem.scala 71:77] - wire _T_127 = _T_120 | _T_126; // @[el2_ifu_iccm_mem.scala 70:179] - wire _T_134 = _T_116 & _T_15; // @[el2_ifu_iccm_mem.scala 70:145] - wire _T_135 = redundant_valid[1] & _T_134; // @[el2_ifu_iccm_mem.scala 70:71] - wire _T_141 = _T_123 & _T_17; // @[el2_ifu_iccm_mem.scala 71:77] - wire _T_142 = _T_135 | _T_141; // @[el2_ifu_iccm_mem.scala 70:179] - wire _T_149 = _T_116 & _T_20; // @[el2_ifu_iccm_mem.scala 70:145] - wire _T_150 = redundant_valid[1] & _T_149; // @[el2_ifu_iccm_mem.scala 70:71] - wire _T_156 = _T_123 & _T_22; // @[el2_ifu_iccm_mem.scala 71:77] - wire _T_157 = _T_150 | _T_156; // @[el2_ifu_iccm_mem.scala 70:179] - wire _T_164 = _T_116 & _T_25; // @[el2_ifu_iccm_mem.scala 70:145] - wire _T_165 = redundant_valid[1] & _T_164; // @[el2_ifu_iccm_mem.scala 70:71] - wire _T_171 = _T_123 & _T_27; // @[el2_ifu_iccm_mem.scala 71:77] - wire _T_172 = _T_165 | _T_171; // @[el2_ifu_iccm_mem.scala 70:179] + wire _T_116 = io_iccm_rw_addr[14:1] == redundant_address_1; // @[el2_ifu_iccm_mem.scala 65:105] + wire _T_119 = _T_116 & _T_10; // @[el2_ifu_iccm_mem.scala 65:145] + wire _T_120 = redundant_valid[1] & _T_119; // @[el2_ifu_iccm_mem.scala 65:71] + wire _T_123 = addr_bank_inc[14:1] == redundant_address_1; // @[el2_ifu_iccm_mem.scala 66:37] + wire _T_126 = _T_123 & _T_12; // @[el2_ifu_iccm_mem.scala 66:77] + wire _T_127 = _T_120 | _T_126; // @[el2_ifu_iccm_mem.scala 65:179] + wire _T_134 = _T_116 & _T_15; // @[el2_ifu_iccm_mem.scala 65:145] + wire _T_135 = redundant_valid[1] & _T_134; // @[el2_ifu_iccm_mem.scala 65:71] + wire _T_141 = _T_123 & _T_17; // @[el2_ifu_iccm_mem.scala 66:77] + wire _T_142 = _T_135 | _T_141; // @[el2_ifu_iccm_mem.scala 65:179] + wire _T_149 = _T_116 & _T_20; // @[el2_ifu_iccm_mem.scala 65:145] + wire _T_150 = redundant_valid[1] & _T_149; // @[el2_ifu_iccm_mem.scala 65:71] + wire _T_156 = _T_123 & _T_22; // @[el2_ifu_iccm_mem.scala 66:77] + wire _T_157 = _T_150 | _T_156; // @[el2_ifu_iccm_mem.scala 65:179] + wire _T_164 = _T_116 & _T_25; // @[el2_ifu_iccm_mem.scala 65:145] + wire _T_165 = redundant_valid[1] & _T_164; // @[el2_ifu_iccm_mem.scala 65:71] + wire _T_171 = _T_123 & _T_27; // @[el2_ifu_iccm_mem.scala 66:77] + wire _T_172 = _T_165 | _T_171; // @[el2_ifu_iccm_mem.scala 65:179] wire [3:0] sel_red1 = {_T_172,_T_157,_T_142,_T_127}; // @[Cat.scala 29:58] reg [13:0] redundant_address_0; // @[Reg.scala 27:20] - wire _T_178 = io_iccm_rw_addr[14:1] == redundant_address_0; // @[el2_ifu_iccm_mem.scala 72:105] - wire _T_181 = _T_178 & _T_10; // @[el2_ifu_iccm_mem.scala 72:145] - wire _T_182 = redundant_valid[0] & _T_181; // @[el2_ifu_iccm_mem.scala 72:71] - wire _T_185 = addr_bank_inc[14:1] == redundant_address_0; // @[el2_ifu_iccm_mem.scala 73:37] - wire _T_188 = _T_185 & _T_12; // @[el2_ifu_iccm_mem.scala 73:77] - wire _T_189 = _T_182 | _T_188; // @[el2_ifu_iccm_mem.scala 72:179] - wire _T_196 = _T_178 & _T_15; // @[el2_ifu_iccm_mem.scala 72:145] - wire _T_197 = redundant_valid[0] & _T_196; // @[el2_ifu_iccm_mem.scala 72:71] - wire _T_203 = _T_185 & _T_17; // @[el2_ifu_iccm_mem.scala 73:77] - wire _T_204 = _T_197 | _T_203; // @[el2_ifu_iccm_mem.scala 72:179] - wire _T_211 = _T_178 & _T_20; // @[el2_ifu_iccm_mem.scala 72:145] - wire _T_212 = redundant_valid[0] & _T_211; // @[el2_ifu_iccm_mem.scala 72:71] - wire _T_218 = _T_185 & _T_22; // @[el2_ifu_iccm_mem.scala 73:77] - wire _T_219 = _T_212 | _T_218; // @[el2_ifu_iccm_mem.scala 72:179] - wire _T_226 = _T_178 & _T_25; // @[el2_ifu_iccm_mem.scala 72:145] - wire _T_227 = redundant_valid[0] & _T_226; // @[el2_ifu_iccm_mem.scala 72:71] - wire _T_233 = _T_185 & _T_27; // @[el2_ifu_iccm_mem.scala 73:77] - wire _T_234 = _T_227 | _T_233; // @[el2_ifu_iccm_mem.scala 72:179] + wire _T_178 = io_iccm_rw_addr[14:1] == redundant_address_0; // @[el2_ifu_iccm_mem.scala 67:105] + wire _T_181 = _T_178 & _T_10; // @[el2_ifu_iccm_mem.scala 67:145] + wire _T_182 = redundant_valid[0] & _T_181; // @[el2_ifu_iccm_mem.scala 67:71] + wire _T_185 = addr_bank_inc[14:1] == redundant_address_0; // @[el2_ifu_iccm_mem.scala 68:37] + wire _T_188 = _T_185 & _T_12; // @[el2_ifu_iccm_mem.scala 68:77] + wire _T_189 = _T_182 | _T_188; // @[el2_ifu_iccm_mem.scala 67:179] + wire _T_196 = _T_178 & _T_15; // @[el2_ifu_iccm_mem.scala 67:145] + wire _T_197 = redundant_valid[0] & _T_196; // @[el2_ifu_iccm_mem.scala 67:71] + wire _T_203 = _T_185 & _T_17; // @[el2_ifu_iccm_mem.scala 68:77] + wire _T_204 = _T_197 | _T_203; // @[el2_ifu_iccm_mem.scala 67:179] + wire _T_211 = _T_178 & _T_20; // @[el2_ifu_iccm_mem.scala 67:145] + wire _T_212 = redundant_valid[0] & _T_211; // @[el2_ifu_iccm_mem.scala 67:71] + wire _T_218 = _T_185 & _T_22; // @[el2_ifu_iccm_mem.scala 68:77] + wire _T_219 = _T_212 | _T_218; // @[el2_ifu_iccm_mem.scala 67:179] + wire _T_226 = _T_178 & _T_25; // @[el2_ifu_iccm_mem.scala 67:145] + wire _T_227 = redundant_valid[0] & _T_226; // @[el2_ifu_iccm_mem.scala 67:71] + wire _T_233 = _T_185 & _T_27; // @[el2_ifu_iccm_mem.scala 68:77] + wire _T_234 = _T_227 | _T_233; // @[el2_ifu_iccm_mem.scala 67:179] wire [3:0] sel_red0 = {_T_234,_T_219,_T_204,_T_189}; // @[Cat.scala 29:58] - reg [3:0] sel_red0_q; // @[el2_ifu_iccm_mem.scala 75:27] - reg [3:0] sel_red1_q; // @[el2_ifu_iccm_mem.scala 76:27] - wire _T_242 = ~sel_red0_q[0]; // @[el2_ifu_iccm_mem.scala 82:36] - wire _T_244 = ~sel_red1_q[0]; // @[el2_ifu_iccm_mem.scala 82:53] - wire _T_245 = _T_242 & _T_244; // @[el2_ifu_iccm_mem.scala 82:51] + reg [3:0] sel_red0_q; // @[el2_ifu_iccm_mem.scala 70:27] + reg [3:0] sel_red1_q; // @[el2_ifu_iccm_mem.scala 71:27] + wire _T_242 = ~sel_red0_q[0]; // @[el2_ifu_iccm_mem.scala 77:36] + wire _T_244 = ~sel_red1_q[0]; // @[el2_ifu_iccm_mem.scala 77:53] + wire _T_245 = _T_242 & _T_244; // @[el2_ifu_iccm_mem.scala 77:51] reg [38:0] redundant_data_1; // @[Reg.scala 27:20] wire [38:0] _T_247 = sel_red1_q[0] ? redundant_data_1 : 39'h0; // @[Mux.scala 27:72] reg [38:0] redundant_data_0; // @[Reg.scala 27:20] @@ -185,66 +181,66 @@ module el2_ifu_iccm_mem( wire [38:0] _T_249 = _T_245 ? iccm_bank_dout_0 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_250 = _T_247 | _T_248; // @[Mux.scala 27:72] wire [38:0] iccm_bank_dout_fn_0 = _T_250 | _T_249; // @[Mux.scala 27:72] - wire _T_257 = ~sel_red0_q[1]; // @[el2_ifu_iccm_mem.scala 82:36] - wire _T_259 = ~sel_red1_q[1]; // @[el2_ifu_iccm_mem.scala 82:53] - wire _T_260 = _T_257 & _T_259; // @[el2_ifu_iccm_mem.scala 82:51] + wire _T_257 = ~sel_red0_q[1]; // @[el2_ifu_iccm_mem.scala 77:36] + wire _T_259 = ~sel_red1_q[1]; // @[el2_ifu_iccm_mem.scala 77:53] + wire _T_260 = _T_257 & _T_259; // @[el2_ifu_iccm_mem.scala 77:51] wire [38:0] _T_262 = sel_red1_q[1] ? redundant_data_1 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_263 = sel_red0_q[1] ? redundant_data_0 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_264 = _T_260 ? iccm_bank_dout_1 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_265 = _T_262 | _T_263; // @[Mux.scala 27:72] wire [38:0] iccm_bank_dout_fn_1 = _T_265 | _T_264; // @[Mux.scala 27:72] - wire _T_272 = ~sel_red0_q[2]; // @[el2_ifu_iccm_mem.scala 82:36] - wire _T_274 = ~sel_red1_q[2]; // @[el2_ifu_iccm_mem.scala 82:53] - wire _T_275 = _T_272 & _T_274; // @[el2_ifu_iccm_mem.scala 82:51] + wire _T_272 = ~sel_red0_q[2]; // @[el2_ifu_iccm_mem.scala 77:36] + wire _T_274 = ~sel_red1_q[2]; // @[el2_ifu_iccm_mem.scala 77:53] + wire _T_275 = _T_272 & _T_274; // @[el2_ifu_iccm_mem.scala 77:51] wire [38:0] _T_277 = sel_red1_q[2] ? redundant_data_1 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_278 = sel_red0_q[2] ? redundant_data_0 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_279 = _T_275 ? iccm_bank_dout_2 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_280 = _T_277 | _T_278; // @[Mux.scala 27:72] wire [38:0] iccm_bank_dout_fn_2 = _T_280 | _T_279; // @[Mux.scala 27:72] - wire _T_287 = ~sel_red0_q[3]; // @[el2_ifu_iccm_mem.scala 82:36] - wire _T_289 = ~sel_red1_q[3]; // @[el2_ifu_iccm_mem.scala 82:53] - wire _T_290 = _T_287 & _T_289; // @[el2_ifu_iccm_mem.scala 82:51] + wire _T_287 = ~sel_red0_q[3]; // @[el2_ifu_iccm_mem.scala 77:36] + wire _T_289 = ~sel_red1_q[3]; // @[el2_ifu_iccm_mem.scala 77:53] + wire _T_290 = _T_287 & _T_289; // @[el2_ifu_iccm_mem.scala 77:51] wire [38:0] _T_292 = sel_red1_q[3] ? redundant_data_1 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_293 = sel_red0_q[3] ? redundant_data_0 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_294 = _T_290 ? iccm_bank_dout_3 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_295 = _T_292 | _T_293; // @[Mux.scala 27:72] wire [38:0] iccm_bank_dout_fn_3 = _T_295 | _T_294; // @[Mux.scala 27:72] reg redundant_lru; // @[Reg.scala 27:20] - wire _T_297 = ~redundant_lru; // @[el2_ifu_iccm_mem.scala 84:20] - wire r0_addr_en = _T_297 & io_iccm_buf_correct_ecc; // @[el2_ifu_iccm_mem.scala 84:35] - wire r1_addr_en = redundant_lru & io_iccm_buf_correct_ecc; // @[el2_ifu_iccm_mem.scala 85:35] - wire _T_298 = |sel_red0; // @[el2_ifu_iccm_mem.scala 86:63] - wire _T_299 = |sel_red1; // @[el2_ifu_iccm_mem.scala 86:78] - wire _T_300 = _T_298 | _T_299; // @[el2_ifu_iccm_mem.scala 86:67] - wire _T_301 = _T_300 & io_iccm_rden; // @[el2_ifu_iccm_mem.scala 86:83] - wire _T_302 = _T_301 & io_iccm_correction_state; // @[el2_ifu_iccm_mem.scala 86:98] - wire redundant_lru_en = io_iccm_buf_correct_ecc | _T_302; // @[el2_ifu_iccm_mem.scala 86:50] + wire _T_297 = ~redundant_lru; // @[el2_ifu_iccm_mem.scala 79:20] + wire r0_addr_en = _T_297 & io_iccm_buf_correct_ecc; // @[el2_ifu_iccm_mem.scala 79:35] + wire r1_addr_en = redundant_lru & io_iccm_buf_correct_ecc; // @[el2_ifu_iccm_mem.scala 80:35] + wire _T_298 = |sel_red0; // @[el2_ifu_iccm_mem.scala 81:63] + wire _T_299 = |sel_red1; // @[el2_ifu_iccm_mem.scala 81:78] + wire _T_300 = _T_298 | _T_299; // @[el2_ifu_iccm_mem.scala 81:67] + wire _T_301 = _T_300 & io_iccm_rden; // @[el2_ifu_iccm_mem.scala 81:83] + wire _T_302 = _T_301 & io_iccm_correction_state; // @[el2_ifu_iccm_mem.scala 81:98] + wire redundant_lru_en = io_iccm_buf_correct_ecc | _T_302; // @[el2_ifu_iccm_mem.scala 81:50] wire _GEN_27 = r1_addr_en | _T_313; // @[Reg.scala 28:19] wire _GEN_28 = r0_addr_en | _T_314; // @[Reg.scala 28:19] - wire _T_318 = io_iccm_rw_addr[14:2] == redundant_address_0[13:1]; // @[el2_ifu_iccm_mem.scala 93:61] - wire _T_321 = io_iccm_rw_addr[1] & redundant_address_0[0]; // @[el2_ifu_iccm_mem.scala 94:26] - wire _T_324 = _T_321 | _T_1; // @[el2_ifu_iccm_mem.scala 94:52] - wire _T_325 = _T_318 & _T_324; // @[el2_ifu_iccm_mem.scala 93:102] - wire _T_327 = _T_325 & redundant_valid[0]; // @[el2_ifu_iccm_mem.scala 94:84] - wire _T_328 = _T_327 & io_iccm_wren; // @[el2_ifu_iccm_mem.scala 94:105] - wire redundant_data0_en = _T_328 | r0_addr_en; // @[el2_ifu_iccm_mem.scala 94:121] - wire _T_337 = redundant_address_0[0] & _T_1; // @[el2_ifu_iccm_mem.scala 96:104] - wire _T_338 = _T_321 | _T_337; // @[el2_ifu_iccm_mem.scala 96:78] - wire _T_346 = io_iccm_rw_addr[14:2] == redundant_address_1[13:1]; // @[el2_ifu_iccm_mem.scala 100:61] - wire _T_349 = io_iccm_rw_addr[1] & redundant_address_1[0]; // @[el2_ifu_iccm_mem.scala 101:26] - wire _T_352 = _T_349 | _T_1; // @[el2_ifu_iccm_mem.scala 101:52] - wire _T_353 = _T_346 & _T_352; // @[el2_ifu_iccm_mem.scala 100:102] - wire _T_355 = _T_353 & redundant_valid[1]; // @[el2_ifu_iccm_mem.scala 101:84] - wire _T_356 = _T_355 & io_iccm_wren; // @[el2_ifu_iccm_mem.scala 101:105] - wire redundant_data1_en = _T_356 | r0_addr_en; // @[el2_ifu_iccm_mem.scala 101:121] - wire _T_365 = redundant_address_1[0] & _T_1; // @[el2_ifu_iccm_mem.scala 103:104] - wire _T_366 = _T_349 | _T_365; // @[el2_ifu_iccm_mem.scala 103:78] - reg [2:0] iccm_rd_addr_lo_q; // @[el2_ifu_iccm_mem.scala 107:34] - reg [1:0] iccm_rd_addr_hi_q; // @[el2_ifu_iccm_mem.scala 108:34] - wire _T_374 = iccm_rd_addr_hi_q == 2'h0; // @[el2_ifu_iccm_mem.scala 110:86] - wire _T_376 = iccm_rd_addr_hi_q == 2'h1; // @[el2_ifu_iccm_mem.scala 110:86] - wire _T_378 = iccm_rd_addr_hi_q == 2'h2; // @[el2_ifu_iccm_mem.scala 110:86] - wire _T_380 = iccm_rd_addr_hi_q == 2'h3; // @[el2_ifu_iccm_mem.scala 110:86] + wire _T_318 = io_iccm_rw_addr[14:2] == redundant_address_0[13:1]; // @[el2_ifu_iccm_mem.scala 88:61] + wire _T_321 = io_iccm_rw_addr[1] & redundant_address_0[0]; // @[el2_ifu_iccm_mem.scala 89:26] + wire _T_324 = _T_321 | _T_1; // @[el2_ifu_iccm_mem.scala 89:52] + wire _T_325 = _T_318 & _T_324; // @[el2_ifu_iccm_mem.scala 88:102] + wire _T_327 = _T_325 & redundant_valid[0]; // @[el2_ifu_iccm_mem.scala 89:84] + wire _T_328 = _T_327 & io_iccm_wren; // @[el2_ifu_iccm_mem.scala 89:105] + wire redundant_data0_en = _T_328 | r0_addr_en; // @[el2_ifu_iccm_mem.scala 89:121] + wire _T_337 = redundant_address_0[0] & _T_1; // @[el2_ifu_iccm_mem.scala 91:104] + wire _T_338 = _T_321 | _T_337; // @[el2_ifu_iccm_mem.scala 91:78] + wire _T_346 = io_iccm_rw_addr[14:2] == redundant_address_1[13:1]; // @[el2_ifu_iccm_mem.scala 95:61] + wire _T_349 = io_iccm_rw_addr[1] & redundant_address_1[0]; // @[el2_ifu_iccm_mem.scala 96:26] + wire _T_352 = _T_349 | _T_1; // @[el2_ifu_iccm_mem.scala 96:52] + wire _T_353 = _T_346 & _T_352; // @[el2_ifu_iccm_mem.scala 95:102] + wire _T_355 = _T_353 & redundant_valid[1]; // @[el2_ifu_iccm_mem.scala 96:84] + wire _T_356 = _T_355 & io_iccm_wren; // @[el2_ifu_iccm_mem.scala 96:105] + wire redundant_data1_en = _T_356 | r0_addr_en; // @[el2_ifu_iccm_mem.scala 96:121] + wire _T_365 = redundant_address_1[0] & _T_1; // @[el2_ifu_iccm_mem.scala 98:104] + wire _T_366 = _T_349 | _T_365; // @[el2_ifu_iccm_mem.scala 98:78] + reg [2:0] iccm_rd_addr_lo_q; // @[el2_ifu_iccm_mem.scala 102:34] + reg [1:0] iccm_rd_addr_hi_q; // @[el2_ifu_iccm_mem.scala 103:34] + wire _T_374 = iccm_rd_addr_hi_q == 2'h0; // @[el2_ifu_iccm_mem.scala 105:86] + wire _T_376 = iccm_rd_addr_hi_q == 2'h1; // @[el2_ifu_iccm_mem.scala 105:86] + wire _T_378 = iccm_rd_addr_hi_q == 2'h2; // @[el2_ifu_iccm_mem.scala 105:86] + wire _T_380 = iccm_rd_addr_hi_q == 2'h3; // @[el2_ifu_iccm_mem.scala 105:86] wire [31:0] _T_382 = _T_374 ? iccm_bank_dout_fn_0[31:0] : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_383 = _T_376 ? iccm_bank_dout_fn_1[31:0] : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_384 = _T_378 ? iccm_bank_dout_fn_2[31:0] : 32'h0; // @[Mux.scala 27:72] @@ -252,10 +248,10 @@ module el2_ifu_iccm_mem( wire [31:0] _T_386 = _T_382 | _T_383; // @[Mux.scala 27:72] wire [31:0] _T_387 = _T_386 | _T_384; // @[Mux.scala 27:72] wire [31:0] _T_388 = _T_387 | _T_385; // @[Mux.scala 27:72] - wire _T_391 = iccm_rd_addr_lo_q[1:0] == 2'h0; // @[el2_ifu_iccm_mem.scala 111:77] - wire _T_394 = iccm_rd_addr_lo_q[1:0] == 2'h1; // @[el2_ifu_iccm_mem.scala 111:77] - wire _T_397 = iccm_rd_addr_lo_q[1:0] == 2'h2; // @[el2_ifu_iccm_mem.scala 111:77] - wire _T_400 = iccm_rd_addr_lo_q[1:0] == 2'h3; // @[el2_ifu_iccm_mem.scala 111:77] + wire _T_391 = iccm_rd_addr_lo_q[1:0] == 2'h0; // @[el2_ifu_iccm_mem.scala 106:77] + wire _T_394 = iccm_rd_addr_lo_q[1:0] == 2'h1; // @[el2_ifu_iccm_mem.scala 106:77] + wire _T_397 = iccm_rd_addr_lo_q[1:0] == 2'h2; // @[el2_ifu_iccm_mem.scala 106:77] + wire _T_400 = iccm_rd_addr_lo_q[1:0] == 2'h3; // @[el2_ifu_iccm_mem.scala 106:77] wire [31:0] _T_402 = _T_391 ? iccm_bank_dout_fn_0[31:0] : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_403 = _T_394 ? iccm_bank_dout_fn_1[31:0] : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_404 = _T_397 ? iccm_bank_dout_fn_2[31:0] : 32'h0; // @[Mux.scala 27:72] @@ -303,12 +299,8 @@ module el2_ifu_iccm_mem( assign _T_88__T_104_addr = wren_bank_3 ? io_iccm_rw_addr[14:3] : _T_83; assign _T_88__T_104_mask = 1'h1; assign _T_88__T_104_en = iccm_clken_3 & wren_bank_3; - assign io_iccm_rd_data = iccm_rd_addr_lo_q[0] ? _T_414 : iccm_rd_data_pre; // @[el2_ifu_iccm_mem.scala 22:19 el2_ifu_iccm_mem.scala 112:19] - assign io_iccm_rd_data_ecc = {_T_426,_T_442}; // @[el2_ifu_iccm_mem.scala 23:23 el2_ifu_iccm_mem.scala 113:23] - assign io_iccm_bank_addr_0 = wren_bank_0 ? io_iccm_rw_addr[14:3] : _T_59; // @[el2_ifu_iccm_mem.scala 61:21] - assign io_iccm_bank_addr_1 = wren_bank_1 ? io_iccm_rw_addr[14:3] : _T_67; // @[el2_ifu_iccm_mem.scala 61:21] - assign io_iccm_bank_addr_2 = wren_bank_2 ? io_iccm_rw_addr[14:3] : _T_75; // @[el2_ifu_iccm_mem.scala 61:21] - assign io_iccm_bank_addr_3 = wren_bank_3 ? io_iccm_rw_addr[14:3] : _T_83; // @[el2_ifu_iccm_mem.scala 61:21] + assign io_iccm_rd_data = iccm_rd_addr_lo_q[0] ? _T_414 : iccm_rd_data_pre; // @[el2_ifu_iccm_mem.scala 22:19 el2_ifu_iccm_mem.scala 108:19] + assign io_iccm_rd_data_ecc = {_T_426,_T_442}; // @[el2_ifu_iccm_mem.scala 23:23 el2_ifu_iccm_mem.scala 109:23] `ifdef RANDOMIZE_GARBAGE_ASSIGN `define RANDOMIZE `endif @@ -524,7 +516,7 @@ end // initial if (reset) begin iccm_rd_addr_lo_q <= 3'h0; end else begin - iccm_rd_addr_lo_q <= io_iccm_rw_addr[2:0]; + iccm_rd_addr_lo_q <= io_iccm_rw_addr[3:1]; end if (reset) begin iccm_rd_addr_hi_q <= 2'h0; diff --git a/src/main/scala/ifu/el2_ifu_iccm_mem.scala b/src/main/scala/ifu/el2_ifu_iccm_mem.scala index a7a6e7b7..ef709595 100644 --- a/src/main/scala/ifu/el2_ifu_iccm_mem.scala +++ b/src/main/scala/ifu/el2_ifu_iccm_mem.scala @@ -17,7 +17,7 @@ class el2_ifu_iccm_mem extends Module with el2_lib { val iccm_rd_data = Output(UInt(64.W)) val iccm_rd_data_ecc = Output(UInt(78.W)) val scan_mode = Input(Bool()) - val iccm_bank_addr = Output(Vec(ICCM_NUM_BANKS, UInt())) + // val iccm_bank_addr = Output(Vec(ICCM_NUM_BANKS, UInt())) }) io.iccm_rd_data := 0.U io.iccm_rd_data_ecc := 0.U @@ -54,11 +54,6 @@ class el2_ifu_iccm_mem extends Module with el2_lib { for(i<-0 until ICCM_NUM_BANKS) when(write_vec(i)) {iccm_mem(i)(addr_bank(i)) := iccm_bank_wr_data(i)} for(i<-0 until ICCM_NUM_BANKS) {iccm_bank_dout(i) := RegEnable(iccm_mem(i)(addr_bank(i)),0.U,read_enable(i))} - //(0 until ICCM_NUM_BANKS).map(i=> ) - - // iccm_bank_dout(i) := RegNext(inter(i)) - - io.iccm_bank_addr := addr_bank @@ -104,15 +99,18 @@ class el2_ifu_iccm_mem extends Module with el2_lib { io.iccm_wr_data(77,39), io.iccm_wr_data(38,0)) redundant_data(1) := RegEnable(redundant_data1_in, 0.U, redundant_data1_en.asBool) - val iccm_rd_addr_lo_q = RegNext(io.iccm_rw_addr(ICCM_BANK_HI-1,0), 0.U) + val iccm_rd_addr_lo_q = RegNext(io.iccm_rw_addr(ICCM_BANK_HI,1), 0.U) val iccm_rd_addr_hi_q = RegNext(addr_bank_inc(ICCM_BANK_HI-1,1), 0.U) val iccm_rd_data_pre = Cat(Mux1H((0 until ICCM_NUM_BANKS).map(i=>(iccm_rd_addr_hi_q===i.U)->iccm_bank_dout_fn(i)(31,0))), Mux1H((0 until ICCM_NUM_BANKS).map(i=>(iccm_rd_addr_lo_q(ICCM_BANK_HI-2,0)===i.U)->iccm_bank_dout_fn(i)(31,0)))) + io.iccm_rd_data := Mux(iccm_rd_addr_lo_q(0).asBool(),Cat(Fill(16,0.U),iccm_rd_data_pre(63,16)) ,iccm_rd_data_pre) io.iccm_rd_data_ecc :=Cat(Mux1H((0 until ICCM_NUM_BANKS).map(i=>(iccm_rd_addr_hi_q===i.U)->iccm_bank_dout_fn(i))), Mux1H((0 until ICCM_NUM_BANKS).map(i=>(iccm_rd_addr_lo_q(ICCM_BANK_HI-2,0)===i.U)->iccm_bank_dout_fn(i)))) } + + object ifu_iccm extends App { println((new chisel3.stage.ChiselStage).emitVerilog(new el2_ifu_iccm_mem())) } \ No newline at end of file diff --git a/target/scala-2.12/classes/ifu/el2_ifu_iccm_mem$$anon$1.class b/target/scala-2.12/classes/ifu/el2_ifu_iccm_mem$$anon$1.class index 64a5d8379b2ba2ee3df7e06b4236afe4c468138c..80fe0146c680e8ebf6e0a65732bfaad3da21f6d1 100644 GIT binary patch literal 3110 zcmaJ@ZBrCS5Pk-cb=MURP>e6}^^AbgQ#8Z~K?E_m1jGao^LknK7TLJBd)eC)HE-tq zALMT&q2i?~l}h>vysJ1RN0 z&27l#%_SajsTNrg{U+wt!&1$C)H*F&5ifAlS-F%+JgZq%PNXR|X5wIi7&dVz;a=QsSZ>qAVLTrjE|@rys9i8|G~q6q zIF?9XGI2cNUN&(e;a)LuGU4bfpCDcp=o)u@H<}PQFsO`hZ0I(X@t)mfG-&G$fkT5$ z*V|RO9}`zGYoHTzEoEKwtMxd&=XvT)XtF4Sd`rhIye+W5DNK`I){E3x)X|M4)`wNC zdJj!3Y5s<^lyuw!tjXyPu`3}|o#P7W5gl08LluW{Pi zk9!7fc>-dYY0z??uFpjBEw8ZZhGFCtWTzm)M_^z8Re{3RS*ew`{BPF8GD3sfWtBA# zDVAucxAeIAdX(Joxz~bmRHvVs6ff)`IdaE3_&OcOJ)B^nE9kt=-|YXU4a^pyv8_6IB6YA*hG8 zbAz7+iWlNfO40Y|uIR4@%r3ct3+w`&{C@35U)*iT^~F6zQg#qY*(@YwtB{n9LQ=K~ zN!cVMWs8uM4MI}32T~J)mQQi~g0ljtAl*6qD^CARrUPGc?2?N*9+Qs&RKOsHNCm@D zfzM>Yh7x>82|k+z?^c2j;~f2G!#c#jf%R0+P61$QgK$CP1@X2Cs5 z@Np&hau%FZf=?*HSF+$UHJ+p~lSkXzv zk75t`T`-{YMPXo^Eoh0g|2fxxBw1aAx1 zh!gmVvYi6gayhn-uQ?ee)oIw|*iB=-r2V9ONe4*xlk&Rx>%})5JNb12zU9Az$nQue v`Dl;7^pmoQ@d1WYe80p4bDiI@cwmp=+dt-5Jc6$$4s2S2?;{T1(+d6rI^m-Q literal 3717 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 delta 107 zcmZ1@w?=NmM=r*a$qGE8li9g7fUJq!;*;IEJ;AI%sLT&;buh~oDqqTD1!QgDafR}E hd99(W1YTFh(#gwseOXHx)EP=9|KP0v$`tbL1_0b!AkY8+ diff --git a/target/scala-2.12/classes/ifu/ifu_iccm$delayedInit$body.class b/target/scala-2.12/classes/ifu/ifu_iccm$delayedInit$body.class index d39718fb30a65cbf2ac35adcfa161f23edef8c5a..f2f5674dea3352d1fd016ec1ee8d9a9a1ce54cdf 100644 GIT binary patch delta 19 ZcmaFP`kZxx7ZYRAWN)SbAUTK08vsS|24?^O delta 19 ZcmaFP`kZxx7ZYR2WN)SbAUTK08vsTT25SHS