From 9eb8590858d4acde6e1c3e86c4f20fb590cb2f71 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Mon, 5 Sep 2022 00:36:41 +0100 Subject: [PATCH] Add generate to avoid elaborating internals of PMP/triggers with 0 PMP regions or triggers. --- hdl/hazard3_pmp.v | 16 ++++++++++++++++ hdl/hazard3_triggers.v | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/hdl/hazard3_pmp.v b/hdl/hazard3_pmp.v index 8803188..1f01df9 100644 --- a/hdl/hazard3_pmp.v +++ b/hdl/hazard3_pmp.v @@ -39,6 +39,19 @@ localparam PMP_A_NAPOT = 2'b11; `include "hazard3_csr_addr.vh" +generate +if (PMP_REGIONS == 0) begin: no_pmp + +// This should already be stubbed out in core.v, but use a generate here too +// so that we don't get a warning for elaborating this module with a region +// count of 0. + +always @ (*) cfg_rdata = {W_DATA{1'b0}}; +assign i_kill = 1'b0; +assign d_kill = 1'b0; + +end else begin: have_pmp + // ---------------------------------------------------------------------------- // Config registers and read/write interface @@ -279,6 +292,9 @@ assign i_kill = i_partial_match || ( (!i_m_mode || i_l || i_m) && !i_x ); +end +endgenerate + endmodule `ifndef YOSYS diff --git a/hdl/hazard3_triggers.v b/hdl/hazard3_triggers.v index 0ee98a9..fcff709 100644 --- a/hdl/hazard3_triggers.v +++ b/hdl/hazard3_triggers.v @@ -36,6 +36,19 @@ module hazard3_triggers #( `include "hazard3_csr_addr.vh" +generate +if (BREAKPOINT_TRIGGERS == 0) begin: no_triggers + +// The instantiation of this block should already be stubbed out in core.v if +// there are no triggers, but we still get warnings for elaborating this +// module with zero triggers, so add a generate block here too. + +always @ (*) cfg_rdata = {W_DATA{1'b0}}; +assign break_any = 1'b0; +assign break_d_mode = 1'b0; + +end else begin: have_triggers + // ---------------------------------------------------------------------------- // Configuration state @@ -156,6 +169,9 @@ end assign break_any = |want_m_mode_break || |want_d_mode_break; assign break_d_mode = |want_d_mode_break; +end +endgenerate + endmodule `ifndef YOSYS