diff --git a/el2_ifu_iccm_mem.fir b/el2_ifu_iccm_mem.fir index fb0ad2ba..956a81e0 100644 --- a/el2_ifu_iccm_mem.fir +++ b/el2_ifu_iccm_mem.fir @@ -528,16 +528,16 @@ circuit el2_ifu_iccm_mem : node _T_389 = or(_T_388, _T_386) @[Mux.scala 27:72] wire _T_390 : UInt<32> @[Mux.scala 27:72] _T_390 <= _T_389 @[Mux.scala 27:72] - node _T_391 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_391 = bits(iccm_rd_addr_lo_q, 2, 1) @[el2_ifu_iccm_mem.scala 106:59] node _T_392 = eq(_T_391, UInt<1>("h00")) @[el2_ifu_iccm_mem.scala 106:77] node _T_393 = bits(iccm_bank_dout_fn_0, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] - node _T_394 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_394 = bits(iccm_rd_addr_lo_q, 2, 1) @[el2_ifu_iccm_mem.scala 106:59] node _T_395 = eq(_T_394, UInt<1>("h01")) @[el2_ifu_iccm_mem.scala 106:77] node _T_396 = bits(iccm_bank_dout_fn_1, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] - node _T_397 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_397 = bits(iccm_rd_addr_lo_q, 2, 1) @[el2_ifu_iccm_mem.scala 106:59] node _T_398 = eq(_T_397, UInt<2>("h02")) @[el2_ifu_iccm_mem.scala 106:77] node _T_399 = bits(iccm_bank_dout_fn_2, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] - node _T_400 = bits(iccm_rd_addr_lo_q, 1, 0) @[el2_ifu_iccm_mem.scala 106:59] + node _T_400 = bits(iccm_rd_addr_lo_q, 2, 1) @[el2_ifu_iccm_mem.scala 106:59] node _T_401 = eq(_T_400, UInt<2>("h03")) @[el2_ifu_iccm_mem.scala 106:77] node _T_402 = bits(iccm_bank_dout_fn_3, 31, 0) @[el2_ifu_iccm_mem.scala 106:106] node _T_403 = mux(_T_392, _T_393, UInt<1>("h00")) @[Mux.scala 27:72] diff --git a/el2_ifu_iccm_mem.v b/el2_ifu_iccm_mem.v index 60d2456b..f42592cf 100644 --- a/el2_ifu_iccm_mem.v +++ b/el2_ifu_iccm_mem.v @@ -250,10 +250,10 @@ module el2_ifu_iccm_mem( wire [31:0] _T_387 = _T_383 | _T_384; // @[Mux.scala 27:72] wire [31:0] _T_388 = _T_387 | _T_385; // @[Mux.scala 27:72] wire [31:0] _T_389 = _T_388 | _T_386; // @[Mux.scala 27:72] - wire _T_392 = iccm_rd_addr_lo_q[1:0] == 2'h0; // @[el2_ifu_iccm_mem.scala 106:77] - wire _T_395 = iccm_rd_addr_lo_q[1:0] == 2'h1; // @[el2_ifu_iccm_mem.scala 106:77] - wire _T_398 = iccm_rd_addr_lo_q[1:0] == 2'h2; // @[el2_ifu_iccm_mem.scala 106:77] - wire _T_401 = iccm_rd_addr_lo_q[1:0] == 2'h3; // @[el2_ifu_iccm_mem.scala 106:77] + wire _T_392 = iccm_rd_addr_lo_q[2:1] == 2'h0; // @[el2_ifu_iccm_mem.scala 106:77] + wire _T_395 = iccm_rd_addr_lo_q[2:1] == 2'h1; // @[el2_ifu_iccm_mem.scala 106:77] + wire _T_398 = iccm_rd_addr_lo_q[2:1] == 2'h2; // @[el2_ifu_iccm_mem.scala 106:77] + wire _T_401 = iccm_rd_addr_lo_q[2:1] == 2'h3; // @[el2_ifu_iccm_mem.scala 106:77] wire [31:0] _T_403 = _T_392 ? iccm_bank_dout_fn_0[31:0] : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_404 = _T_395 ? iccm_bank_dout_fn_1[31:0] : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_405 = _T_398 ? iccm_bank_dout_fn_2[31:0] : 32'h0; // @[Mux.scala 27:72] @@ -270,10 +270,14 @@ module el2_ifu_iccm_mem( wire [38:0] _T_425 = _T_421 | _T_422; // @[Mux.scala 27:72] wire [38:0] _T_426 = _T_425 | _T_423; // @[Mux.scala 27:72] wire [38:0] _T_427 = _T_426 | _T_424; // @[Mux.scala 27:72] - wire [38:0] _T_437 = _T_392 ? iccm_bank_dout_fn_0 : 39'h0; // @[Mux.scala 27:72] - wire [38:0] _T_438 = _T_395 ? iccm_bank_dout_fn_1 : 39'h0; // @[Mux.scala 27:72] - wire [38:0] _T_439 = _T_398 ? iccm_bank_dout_fn_2 : 39'h0; // @[Mux.scala 27:72] - wire [38:0] _T_440 = _T_401 ? iccm_bank_dout_fn_3 : 39'h0; // @[Mux.scala 27:72] + wire _T_430 = iccm_rd_addr_lo_q[1:0] == 2'h0; // @[el2_ifu_iccm_mem.scala 110:79] + wire _T_432 = iccm_rd_addr_lo_q[1:0] == 2'h1; // @[el2_ifu_iccm_mem.scala 110:79] + wire _T_434 = iccm_rd_addr_lo_q[1:0] == 2'h2; // @[el2_ifu_iccm_mem.scala 110:79] + wire _T_436 = iccm_rd_addr_lo_q[1:0] == 2'h3; // @[el2_ifu_iccm_mem.scala 110:79] + wire [38:0] _T_437 = _T_430 ? iccm_bank_dout_fn_0 : 39'h0; // @[Mux.scala 27:72] + wire [38:0] _T_438 = _T_432 ? iccm_bank_dout_fn_1 : 39'h0; // @[Mux.scala 27:72] + wire [38:0] _T_439 = _T_434 ? iccm_bank_dout_fn_2 : 39'h0; // @[Mux.scala 27:72] + wire [38:0] _T_440 = _T_436 ? iccm_bank_dout_fn_3 : 39'h0; // @[Mux.scala 27:72] wire [38:0] _T_441 = _T_437 | _T_438; // @[Mux.scala 27:72] wire [38:0] _T_442 = _T_441 | _T_439; // @[Mux.scala 27:72] wire [38:0] _T_443 = _T_442 | _T_440; // @[Mux.scala 27:72] diff --git a/src/main/scala/ifu/el2_ifu_iccm_mem.scala b/src/main/scala/ifu/el2_ifu_iccm_mem.scala index 6663c87a..a74e5143 100644 --- a/src/main/scala/ifu/el2_ifu_iccm_mem.scala +++ b/src/main/scala/ifu/el2_ifu_iccm_mem.scala @@ -103,7 +103,7 @@ class el2_ifu_iccm_mem extends Module with el2_lib { 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)))) + Mux1H((0 until ICCM_NUM_BANKS).map(i=>(iccm_rd_addr_lo_q(ICCM_BANK_HI-1,1)===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))), diff --git a/target/scala-2.12/classes/ifu/el2_ifu_iccm_mem.class b/target/scala-2.12/classes/ifu/el2_ifu_iccm_mem.class index 83dfc492..6570f8f7 100644 Binary files a/target/scala-2.12/classes/ifu/el2_ifu_iccm_mem.class and b/target/scala-2.12/classes/ifu/el2_ifu_iccm_mem.class differ