diff --git a/el2_lsu_bus_buffer.anno.json b/el2_lsu_bus_buffer.anno.json index 11c11b9c..51ba2cfd 100644 --- a/el2_lsu_bus_buffer.anno.json +++ b/el2_lsu_bus_buffer.anno.json @@ -1,14 +1,4 @@ [ - { - "class":"firrtl.transforms.CombinationalPath", - "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_bus_buffer_full_any", - "sources":[ - "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ldst_dual_d", - "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_dec_lsu_valid_raw_d", - "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_busreq_m", - "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_busreq_r" - ] - }, { "class":"firrtl.transforms.CombinationalPath", "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_wdata_in", @@ -144,6 +134,18 @@ "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ldst_dual_r" ] }, + { + "class":"firrtl.transforms.CombinationalPath", + "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_bus_buffer_full_any", + "sources":[ + "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ldst_dual_d", + "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_dec_lsu_valid_raw_d", + "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ldst_dual_m", + "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_busreq_m", + "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ldst_dual_r", + "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_busreq_r" + ] + }, { "class":"firrtl.transforms.CombinationalPath", "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_pmu_bus_busy", diff --git a/el2_lsu_bus_buffer.fir b/el2_lsu_bus_buffer.fir index 55d02b8c..3bb94622 100644 --- a/el2_lsu_bus_buffer.fir +++ b/el2_lsu_bus_buffer.fir @@ -5864,11 +5864,11 @@ circuit el2_lsu_bus_buffer : node _T_4432 = cat(_T_4431, buf_data_en[0]) @[Cat.scala 29:58] io.data_en <= _T_4432 @[el2_lsu_bus_buffer.scala 578:14] node _T_4433 = cat(io.lsu_busreq_m, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_4434 = mux(io.lsu_busreq_m, _T_4433, io.lsu_busreq_m) @[el2_lsu_bus_buffer.scala 580:27] + node _T_4434 = mux(io.ldst_dual_m, _T_4433, io.lsu_busreq_m) @[el2_lsu_bus_buffer.scala 580:27] node _T_4435 = cat(io.lsu_busreq_r, UInt<1>("h00")) @[Cat.scala 29:58] - node _T_4436 = mux(io.lsu_busreq_r, _T_4435, io.lsu_busreq_r) @[el2_lsu_bus_buffer.scala 580:94] - node _T_4437 = add(_T_4434, _T_4436) @[el2_lsu_bus_buffer.scala 580:88] - node buf_numvld_any = add(_T_4437, ibuf_valid) @[el2_lsu_bus_buffer.scala 580:155] + node _T_4436 = mux(io.ldst_dual_r, _T_4435, io.lsu_busreq_r) @[el2_lsu_bus_buffer.scala 580:93] + node _T_4437 = add(_T_4434, _T_4436) @[el2_lsu_bus_buffer.scala 580:87] + node buf_numvld_any = add(_T_4437, ibuf_valid) @[el2_lsu_bus_buffer.scala 580:153] node _T_4438 = bits(buf_write, 0, 0) @[el2_lsu_bus_buffer.scala 581:60] node _T_4439 = eq(buf_state[0], UInt<3>("h02")) @[el2_lsu_bus_buffer.scala 581:79] node _T_4440 = and(_T_4438, _T_4439) @[el2_lsu_bus_buffer.scala 581:64] diff --git a/el2_lsu_bus_buffer.v b/el2_lsu_bus_buffer.v index fa389bad..2458e489 100644 --- a/el2_lsu_bus_buffer.v +++ b/el2_lsu_bus_buffer.v @@ -2449,12 +2449,12 @@ module el2_lsu_bus_buffer( wire _T_4424 = ~buf_rst_3; // @[el2_lsu_bus_buffer.scala 577:128] wire [2:0] _T_4431 = {buf_data_en_3,buf_data_en_2,buf_data_en_1}; // @[Cat.scala 29:58] wire [1:0] _T_4433 = {io_lsu_busreq_m,1'h0}; // @[Cat.scala 29:58] - wire [1:0] _T_4434 = io_lsu_busreq_m ? _T_4433 : {{1'd0}, io_lsu_busreq_m}; // @[el2_lsu_bus_buffer.scala 580:27] + wire [1:0] _T_4434 = io_ldst_dual_m ? _T_4433 : {{1'd0}, io_lsu_busreq_m}; // @[el2_lsu_bus_buffer.scala 580:27] wire [1:0] _T_4435 = {io_lsu_busreq_r,1'h0}; // @[Cat.scala 29:58] - wire [1:0] _T_4436 = io_lsu_busreq_r ? _T_4435 : {{1'd0}, io_lsu_busreq_r}; // @[el2_lsu_bus_buffer.scala 580:94] - wire [2:0] _T_4437 = _T_4434 + _T_4436; // @[el2_lsu_bus_buffer.scala 580:88] - wire [2:0] _GEN_388 = {{2'd0}, ibuf_valid}; // @[el2_lsu_bus_buffer.scala 580:155] - wire [3:0] buf_numvld_any = _T_4437 + _GEN_388; // @[el2_lsu_bus_buffer.scala 580:155] + wire [1:0] _T_4436 = io_ldst_dual_r ? _T_4435 : {{1'd0}, io_lsu_busreq_r}; // @[el2_lsu_bus_buffer.scala 580:93] + wire [2:0] _T_4437 = _T_4434 + _T_4436; // @[el2_lsu_bus_buffer.scala 580:87] + wire [2:0] _GEN_388 = {{2'd0}, ibuf_valid}; // @[el2_lsu_bus_buffer.scala 580:153] + wire [3:0] buf_numvld_any = _T_4437 + _GEN_388; // @[el2_lsu_bus_buffer.scala 580:153] wire _T_4507 = io_ldst_dual_d & io_dec_lsu_valid_raw_d; // @[el2_lsu_bus_buffer.scala 586:52] wire _T_4508 = buf_numvld_any >= 4'h3; // @[el2_lsu_bus_buffer.scala 586:92] wire _T_4509 = buf_numvld_any == 4'h3; // @[el2_lsu_bus_buffer.scala 586:119] diff --git a/src/main/scala/lsu/el2_lsu_bus_buffer.scala b/src/main/scala/lsu/el2_lsu_bus_buffer.scala index 183042eb..fc18e247 100644 --- a/src/main/scala/lsu/el2_lsu_bus_buffer.scala +++ b/src/main/scala/lsu/el2_lsu_bus_buffer.scala @@ -577,7 +577,7 @@ class el2_lsu_bus_buffer extends Module with RequireAsyncReset with el2_lib { buf_error := (0 until DEPTH).map(i=>(withClock(io.lsu_bus_buf_c1_clk){RegNext(Mux(buf_error_en(i), true.B, buf_error(i)) & !buf_rst(i), false.B)}).asUInt()).reverse.reduce(Cat(_,_)) io.data_en := (0 until DEPTH).map(i=>buf_data_en(i).asUInt()).reverse.reduce(Cat(_,_)) - val buf_numvld_any = Mux(io.lsu_busreq_m, Cat(io.lsu_busreq_m, 0.U),io.lsu_busreq_m) +& Mux(io.lsu_busreq_r, Cat(io.lsu_busreq_r, 0.U),io.lsu_busreq_r) +& ibuf_valid + val buf_numvld_any = Mux(io.ldst_dual_m, Cat(io.lsu_busreq_m, 0.U),io.lsu_busreq_m) +& Mux(io.ldst_dual_r, Cat(io.lsu_busreq_r, 0.U),io.lsu_busreq_r) +& ibuf_valid buf_numvld_wrcmd_any := (0 until DEPTH).map(i=>(buf_write(i) & (buf_state(i)===cmd_C) & !buf_cmd_state_bus_en(i)).asUInt).reverse.reduce(_ +& _) buf_numvld_cmd_any := (0 until DEPTH).map(i=>((buf_state(i)===cmd_C) & !buf_cmd_state_bus_en(i)).asUInt).reverse.reduce(_ +& _) buf_numvld_pend_any := (0 until DEPTH).map(i=>((buf_state(i)===wait_C) | ((buf_state(i)===cmd_C) & !buf_cmd_state_bus_en(i))).asUInt).reverse.reduce(_ +& _) diff --git a/target/scala-2.12/classes/lsu/el2_lsu_bus_buffer.class b/target/scala-2.12/classes/lsu/el2_lsu_bus_buffer.class index 75f6c02f..87e04111 100644 Binary files a/target/scala-2.12/classes/lsu/el2_lsu_bus_buffer.class and b/target/scala-2.12/classes/lsu/el2_lsu_bus_buffer.class differ