From e3fcf5446689191a4a5798f4294fde6ecd445845 Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Wed, 16 Apr 2025 11:54:16 -0700 Subject: [PATCH] stats: Add gate input to statistics collector Signed-off-by: Alex Forencich --- rtl/eth/taxi_eth_mac_stats.sv | 2 ++ rtl/stats/taxi_stats_collect.sv | 5 +++-- tb/stats/taxi_stats_collect/test_taxi_stats_collect.py | 2 ++ tb/stats/taxi_stats_collect/test_taxi_stats_collect.sv | 2 ++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/rtl/eth/taxi_eth_mac_stats.sv b/rtl/eth/taxi_eth_mac_stats.sv index 5d6656f..d71e3bb 100644 --- a/rtl/eth/taxi_eth_mac_stats.sv +++ b/rtl/eth/taxi_eth_mac_stats.sv @@ -214,6 +214,7 @@ tx_stats_inst ( /* * Control inputs */ + .gate(1'b1), .update(1'b0) ); @@ -372,6 +373,7 @@ rx_stats_inst ( /* * Control inputs */ + .gate(1'b1), .update(1'b0) ); diff --git a/rtl/stats/taxi_stats_collect.sv b/rtl/stats/taxi_stats_collect.sv index e5b62a0..9d6617d 100644 --- a/rtl/stats/taxi_stats_collect.sv +++ b/rtl/stats/taxi_stats_collect.sv @@ -44,6 +44,7 @@ module taxi_stats_collect # /* * Control inputs */ + input wire logic gate = 1'b1, input wire logic update = 1'b0 ); @@ -100,13 +101,13 @@ for (genvar n = 0; n < CNT; n = n + 1) begin : ch always_ff @(posedge clk) begin if (acc_clear[n]) begin - if (stat_valid[n]) begin + if (stat_valid[n] && gate) begin acc_reg <= ACC_W'(stat_inc[n]); end else begin acc_reg <= '0; end end else begin - if (stat_valid[n]) begin + if (stat_valid[n] && gate) begin acc_reg <= acc_reg + ACC_W'(stat_inc[n]); end end diff --git a/tb/stats/taxi_stats_collect/test_taxi_stats_collect.py b/tb/stats/taxi_stats_collect/test_taxi_stats_collect.py index 6c15b67..eb0c910 100644 --- a/tb/stats/taxi_stats_collect/test_taxi_stats_collect.py +++ b/tb/stats/taxi_stats_collect/test_taxi_stats_collect.py @@ -39,6 +39,8 @@ class TB(object): for k in range(len(dut.stat_inc)): dut.stat_inc[k].setimmediatevalue(0) dut.stat_valid[k].setimmediatevalue(0) + + dut.gate.setimmediatevalue(1) dut.update.setimmediatevalue(0) def set_backpressure_generator(self, generator=None): diff --git a/tb/stats/taxi_stats_collect/test_taxi_stats_collect.sv b/tb/stats/taxi_stats_collect/test_taxi_stats_collect.sv index c3b05a7..05ba39a 100644 --- a/tb/stats/taxi_stats_collect/test_taxi_stats_collect.sv +++ b/tb/stats/taxi_stats_collect/test_taxi_stats_collect.sv @@ -42,6 +42,7 @@ taxi_axis_if #( .ID_W(STAT_ID_W) ) m_axis_stat(); +logic gate; logic update; taxi_stats_collect #( @@ -68,6 +69,7 @@ uut ( /* * Control inputs */ + .gate(gate), .update(update) );