diff --git a/Bender.yml b/Bender.yml index 4050071580768850a86784e1e58f8c556ba98cbb..b20fd2cf4b584ecbaf1bcf6d17f56cfa4fa195bf 100644 --- a/Bender.yml +++ b/Bender.yml @@ -188,6 +188,7 @@ sources: - src/common_cells/src/lfsr_16bit.sv - src/common_cells/src/counter.sv - src/common_cells/src/shift_reg.sv + - src/common_cells/src/exp_backoff.sv - src/tech_cells_generic/src/cluster_clock_inverter.sv - src/tech_cells_generic/src/pulp_clock_mux2.sv - target: test diff --git a/Flist.ariane b/Flist.ariane index a786ce411ee9eaa50dbb4e20c073f06f3c6d02f9..bbe8b4a85329f47ffee1b5791474afd9dafea989 100644 --- a/Flist.ariane +++ b/Flist.ariane @@ -31,6 +31,7 @@ src/common_cells/src/cdc_2phase.sv src/common_cells/src/shift_reg.sv src/common_cells/src/unread.sv src/common_cells/src/popcount.sv +src/common_cells/src/exp_backoff.sv src/register_interface/src/apb_to_reg.sv src/register_interface/src/reg_intf_pkg.sv src/register_interface/src/reg_intf.sv diff --git a/Makefile b/Makefile index b4ed476c3bf26e0b04944778aa09567fafca7acd..f83eaffdf4dbe67d3f3cb2747a569ddb63b809dc 100644 --- a/Makefile +++ b/Makefile @@ -137,6 +137,7 @@ src := $(filter-out src/ariane_regfile.sv, $(wildcard src/*.sv)) \ src/common_cells/src/rstgen.sv \ src/common_cells/src/stream_mux.sv \ src/common_cells/src/stream_demux.sv \ + src/common_cells/src/exp_backoff.sv \ src/util/axi_master_connect.sv \ src/util/axi_slave_connect.sv \ src/util/axi_master_connect_rev.sv \ diff --git a/src/cache_subsystem/wt_dcache_missunit.sv b/src/cache_subsystem/wt_dcache_missunit.sv index f0eac82b88e87c13006e5a2fd2d6f392c1da515e..c661ce5ba4921ad55dfa08ffc1e6b0f8a13320a9 100644 --- a/src/cache_subsystem/wt_dcache_missunit.sv +++ b/src/cache_subsystem/wt_dcache_missunit.sv @@ -236,17 +236,16 @@ module wt_dcache_missunit #( /////////////////////////////////////////////////////// logic sc_fail, sc_pass, sc_backoff_over; - assign sc_backoff_over = 1'b1; - // exp_backoff #( - // .Seed(3), - // .MaxExp(16) - // ) i_exp_backoff ( - // .clk_i, - // .rst_ni, - // .set_i ( sc_fail ), - // .clr_i ( sc_pass ), - // .is_zero_o ( sc_backoff_over ) - // ); + exp_backoff #( + .Seed(3), + .MaxExp(16) + ) i_exp_backoff ( + .clk_i, + .rst_ni, + .set_i ( sc_fail ), + .clr_i ( sc_pass ), + .is_zero_o ( sc_backoff_over ) + ); /////////////////////////////////////////////////////// // responses from memory @@ -475,8 +474,8 @@ module wt_dcache_missunit #( AMO: begin mem_data_o.rtype = DCACHE_ATOMIC_REQ; amo_sel = 1'b1; - // if this is an SC, we need to consult the backoff counter - if ((amo_req_i.amo_op != AMO_SC) || sc_backoff_over) begin + // if this is an LR, we need to consult the backoff counter + if ((amo_req_i.amo_op != AMO_LR) || sc_backoff_over) begin mem_data_req_o = 1'b1; if (mem_data_ack_i) begin state_d = AMO_WAIT;