diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-02-12 22:33:47 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-02-20 11:11:18 -0600 |
| commit | 31006bd10962e72c56f34158b893313e233cd161 (patch) | |
| tree | 42d25fdb315b80c57c87462576f0d9ff0d172704 /rtl/perf/perf_snoop.sv | |
| parent | 6c175d5dc428f630e3bd4caf707db4b77b0b87e7 (diff) | |
rtl/perf: add a flag for enabling or disabling the perf module
Diffstat (limited to 'rtl/perf/perf_snoop.sv')
| -rw-r--r-- | rtl/perf/perf_snoop.sv | 125 |
1 files changed, 65 insertions, 60 deletions
diff --git a/rtl/perf/perf_snoop.sv b/rtl/perf/perf_snoop.sv index e98153e..2cc159d 100644 --- a/rtl/perf/perf_snoop.sv +++ b/rtl/perf/perf_snoop.sv @@ -1,4 +1,5 @@ `include "cache/defs.sv" +`include "config.sv" module perf_snoop ( @@ -64,66 +65,70 @@ module perf_snoop assign local_readdata = mem_readdata; assign local_waitrequest = mem_waitrequest; - always @(posedge clk or negedge rst_n) - if (!rst_n) begin - hold_read <= 0; - hold_write <= 0; - hold_waitrequest <= 0; - - hold_left_ready <= 0; - hold_left_valid <= 0; - hold_right_ready <= 0; - hold_right_valid <= 0; - - snoop_read <= 0; - snoop_write <= 0; - snoop_waitrequest <= 0; - - snoop_left_ready <= 0; - snoop_left_valid <= 0; - snoop_right_ready <= 0; - snoop_right_valid <= 0; - end else begin - /* La idea aquí es aligerar el trabajo del fitter, ya que perf_monitor - * muestrea el anillo completo, por lo que su span de área es - * potencialmente grande. - */ - - hold_read <= mem_read; - hold_write <= mem_write; - hold_waitrequest <= mem_waitrequest; - - hold_left_ready <= in_left_ready; - hold_left_valid <= in_left_valid; - hold_right_ready <= in_right_ready; - hold_right_valid <= in_right_valid; - - snoop_read <= hold_read; - snoop_write <= hold_write; - snoop_waitrequest <= hold_waitrequest; - - snoop_left_ready <= hold_left_ready; - snoop_left_valid <= hold_left_valid; - snoop_right_ready <= hold_right_ready; - snoop_right_valid <= hold_right_valid; + generate + if (`CONFIG_PERF_MONITOR) begin: enable + always @(posedge clk or negedge rst_n) + if (!rst_n) begin + hold_read <= 0; + hold_write <= 0; + hold_waitrequest <= 0; + + hold_left_ready <= 0; + hold_left_valid <= 0; + hold_right_ready <= 0; + hold_right_valid <= 0; + + snoop_read <= 0; + snoop_write <= 0; + snoop_waitrequest <= 0; + + snoop_left_ready <= 0; + snoop_left_valid <= 0; + snoop_right_ready <= 0; + snoop_right_valid <= 0; + end else begin + /* La idea aquí es aligerar el trabajo del fitter, ya que perf_monitor + * muestrea el anillo completo, por lo que su span de área es + * potencialmente grande. + */ + + hold_read <= mem_read; + hold_write <= mem_write; + hold_waitrequest <= mem_waitrequest; + + hold_left_ready <= in_left_ready; + hold_left_valid <= in_left_valid; + hold_right_ready <= in_right_ready; + hold_right_valid <= in_right_valid; + + snoop_read <= hold_read; + snoop_write <= hold_write; + snoop_waitrequest <= hold_waitrequest; + + snoop_left_ready <= hold_left_ready; + snoop_left_valid <= hold_left_valid; + snoop_right_ready <= hold_right_ready; + snoop_right_valid <= hold_right_valid; + end + + always @(posedge clk) begin + hold_left.ttl <= in_left.ttl; + hold_left.read <= in_left.read; + hold_left.inval <= in_left.inval; + hold_left.reply <= in_left.reply; + + hold_right.ttl <= in_right.ttl; + hold_right.read <= in_right.read; + hold_right.inval <= in_right.inval; + hold_right.reply <= in_right.reply; + + snoop_left <= hold_left; + snoop_right <= hold_right; + + hold_address <= mem_address; + snoop_address <= hold_address; + end end - - always @(posedge clk) begin - hold_left.ttl <= in_left.ttl; - hold_left.read <= in_left.read; - hold_left.inval <= in_left.inval; - hold_left.reply <= in_left.reply; - - hold_right.ttl <= in_right.ttl; - hold_right.read <= in_right.read; - hold_right.inval <= in_right.inval; - hold_right.reply <= in_right.reply; - - snoop_left <= hold_left; - snoop_right <= hold_right; - - hold_address <= mem_address; - snoop_address <= hold_address; - end + endgenerate endmodule |
