From 6766c73638d092a944f85bddd4f8dbfd5265dc2d Mon Sep 17 00:00:00 2001 From: Fei Gao <feig@princeton.edu> Date: Sun, 14 Jul 2019 15:43:39 -0400 Subject: [PATCH] wt_cache: Enable exp back-off for LR/SC (#280) * enable exp_backoff for LR/SC also changed to check LR instead of checking SC. * add exp_backoff module in * Add exp_backoff in Bender.yml * add exp_backoff in Makefile src list --- Bender.yml | 1 + Flist.ariane | 1 + Makefile | 1 + src/cache_subsystem/wt_dcache_missunit.sv | 25 +++++++++++------------ 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Bender.yml b/Bender.yml index 40500715..b20fd2cf 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 a786ce41..bbe8b4a8 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 b4ed476c..f83eaffd 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 f0eac82b..c661ce5b 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; -- GitLab