[common/dv] Fix env cfg compile warning seen for all IPs
- Instead of specifying default value of argument
csr_addr_map_size in initialize method, set csr_addr_map_size
using a new method initialize_csr_addr_map_size.
- This method initialize_csr_addr_map_size is empty by default in
dv_base_env_cfg, and must be overridden with csr_addr_map_size
assignment specific to IP under verification.
- parameter names changed from ADDR_MAP_SIZE to <IP>_ADDR_MAP_SIZE
- Updated test plans to reflect parameter name changes
- Updated templates generation scripts env_pkg.sv.tpl, env_cfg.sv.tpl
diff --git a/hw/dv/sv/cip_lib/cip_base_env_cfg.sv b/hw/dv/sv/cip_lib/cip_base_env_cfg.sv
index ad09f15..404870e 100644
--- a/hw/dv/sv/cip_lib/cip_base_env_cfg.sv
+++ b/hw/dv/sv/cip_lib/cip_base_env_cfg.sv
@@ -26,9 +26,8 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
// create tl agent config obj
m_tl_agent_cfg = tl_agent_cfg::type_id::create("m_tl_agent_cfg");
m_tl_agent_cfg.is_host = 1'b1;
diff --git a/hw/dv/sv/dv_lib/dv_base_env_cfg.sv b/hw/dv/sv/dv_lib/dv_base_env_cfg.sv
index b258329..1c2bf8a 100644
--- a/hw/dv/sv/dv_lib/dv_base_env_cfg.sv
+++ b/hw/dv/sv/dv_lib/dv_base_env_cfg.sv
@@ -45,10 +45,9 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size);
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ initialize_csr_addr_map_size();
`DV_CHECK_NE_FATAL(csr_addr_map_size, 0, "csr_addr_map_size can't be 0")
- this.csr_addr_map_size = csr_addr_map_size;
// use locally randomized csr base address, unless provided as arg to this function
if (csr_base_addr != '1) begin
bit is_aligned;
@@ -70,6 +69,12 @@
end
endfunction
+ // This function must be implemented in extended class to
+ // initialize value of csr_addr_map_size member
+ virtual function void initialize_csr_addr_map_size();
+ `uvm_fatal(`gfn, "This task must be implemented in the extended class!")
+ endfunction : initialize_csr_addr_map_size
+
// ral flow is limited in terms of setting correct field access policies and reset values
// We apply those fixes here - please note these fixes need to be reflected in the scoreboard
protected virtual function void apply_ral_fixes();
diff --git a/hw/ip/alert_handler/dv/env/alert_handler_env_cfg.sv b/hw/ip/alert_handler/dv/env/alert_handler_env_cfg.sv
index 82b19db..38a9afe 100644
--- a/hw/ip/alert_handler/dv/env/alert_handler_env_cfg.sv
+++ b/hw/ip/alert_handler/dv/env/alert_handler_env_cfg.sv
@@ -13,9 +13,12 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = 2048);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = ALERT_HANDLER_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
// set num_interrupts & num_alerts
begin
diff --git a/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv b/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv
index 7d3aa65..2ac8a9f 100644
--- a/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv
+++ b/hw/ip/alert_handler/dv/env/alert_handler_env_pkg.sv
@@ -17,7 +17,8 @@
`include "dv_macros.svh"
// parameters
- parameter int NUM_MAX_ESC_SEV = 8;
+ parameter uint ALERT_HANDLER_ADDR_MAP_SIZE = 2048;
+ parameter uint NUM_MAX_ESC_SEV = 8;
// types
// forward declare classes to allow typedefs below
diff --git a/hw/ip/gpio/dv/env/gpio_env_cfg.sv b/hw/ip/gpio/dv/env/gpio_env_cfg.sv
index 82ed132..9a56bda 100644
--- a/hw/ip/gpio/dv/env/gpio_env_cfg.sv
+++ b/hw/ip/gpio/dv/env/gpio_env_cfg.sv
@@ -19,9 +19,12 @@
`uvm_object_utils(gpio_env_cfg)
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = GPIO_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
// set num_interrupts & num_alerts which will be used to create coverage and more
num_interrupts = ral.intr_state.get_n_used_bits();
endfunction : initialize
diff --git a/hw/ip/gpio/dv/env/gpio_env_pkg.sv b/hw/ip/gpio/dv/env/gpio_env_pkg.sv
index c6b04e0..df8b35b 100644
--- a/hw/ip/gpio/dv/env/gpio_env_pkg.sv
+++ b/hw/ip/gpio/dv/env/gpio_env_pkg.sv
@@ -17,7 +17,7 @@
`include "dv_macros.svh"
// csr and mem total size for IP
- parameter uint ADDR_MAP_SIZE = 64;
+ parameter uint GPIO_ADDR_MAP_SIZE = 64;
// no. of gpio pins
parameter uint NUM_GPIOS = 32;
// no. of cycles for noise filter
diff --git a/hw/ip/hmac/dv/env/hmac_env_cfg.sv b/hw/ip/hmac/dv/env/hmac_env_cfg.sv
index 2295f2b..9e4a2e8 100644
--- a/hw/ip/hmac/dv/env/hmac_env_cfg.sv
+++ b/hw/ip/hmac/dv/env/hmac_env_cfg.sv
@@ -6,10 +6,13 @@
`uvm_object_utils(hmac_env_cfg)
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = HMAC_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
mem_addr_s mem_addr;
- super.initialize(csr_base_addr, csr_addr_map_size);
+ super.initialize(csr_base_addr);
en_mem_byte_write = 1;
en_mem_read = 0;
mem_addr.start_addr = HMAC_MSG_FIFO_BASE;
diff --git a/hw/ip/hmac/dv/env/hmac_env_pkg.sv b/hw/ip/hmac/dv/env/hmac_env_pkg.sv
index cb81fe7..b4c1cdb 100644
--- a/hw/ip/hmac/dv/env/hmac_env_pkg.sv
+++ b/hw/ip/hmac/dv/env/hmac_env_pkg.sv
@@ -20,7 +20,7 @@
// local parameters and types
// csr and mem total size for IP
- parameter uint ADDR_MAP_SIZE = 4096;
+ parameter uint HMAC_ADDR_MAP_SIZE = 4096;
parameter uint32 HMAC_MSG_FIFO_DEPTH = 16;
parameter uint32 HMAC_MSG_FIFO_DEPTH_BYTES = HMAC_MSG_FIFO_DEPTH * 4;
parameter uint32 HMAC_MSG_FIFO_SIZE = 2048;
diff --git a/hw/ip/i2c/doc/i2c_dv_plan.md b/hw/ip/i2c/doc/i2c_dv_plan.md
index e3bc7ac..d9b769f 100644
--- a/hw/ip/i2c/doc/i2c_dv_plan.md
+++ b/hw/ip/i2c/doc/i2c_dv_plan.md
@@ -45,8 +45,8 @@
`i2c_env_pkg`. Some of them in use are:
```systemverilog
parameter uint I2C_FMT_FIFO_DEPTH = 32;
-parameter uint I2C_RX_FIFO_DEPTH = 32;
-parameter uint ADDR_MAP_SIZE = 128;
+parameter uint I2C_RX_FIFO_DEPTH = 32;
+parameter uint I2C_ADDR_MAP_SIZE = 128;
```
### TL_agent
diff --git a/hw/ip/i2c/dv/env/i2c_env_cfg.sv b/hw/ip/i2c/dv/env/i2c_env_cfg.sv
index 6d589ea..fba3fa7 100644
--- a/hw/ip/i2c/dv/env/i2c_env_cfg.sv
+++ b/hw/ip/i2c/dv/env/i2c_env_cfg.sv
@@ -13,9 +13,12 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = I2C_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
// create i2c agent config obj
m_i2c_agent_cfg = i2c_agent_cfg::type_id::create("m_i2c_agent_cfg");
diff --git a/hw/ip/i2c/dv/env/i2c_env_pkg.sv b/hw/ip/i2c/dv/env/i2c_env_pkg.sv
index fbf83c0..cce8737 100644
--- a/hw/ip/i2c/dv/env/i2c_env_pkg.sv
+++ b/hw/ip/i2c/dv/env/i2c_env_pkg.sv
@@ -32,7 +32,7 @@
} i2c_intr_e;
// csr and mem total size for IP, TODO confirm below value with spec
- parameter uint ADDR_MAP_SIZE = 128;
+ parameter uint I2C_ADDR_MAP_SIZE = 128;
// local types
parameter uint I2C_FMT_FIFO_DEPTH = 32;
parameter uint I2C_RX_FIFO_DEPTH = 32;
diff --git a/hw/ip/rv_dm/dv/env/rv_dm_env_cfg.sv b/hw/ip/rv_dm/dv/env/rv_dm_env_cfg.sv
index 9f49638..c7c0e32 100644
--- a/hw/ip/rv_dm/dv/env/rv_dm_env_cfg.sv
+++ b/hw/ip/rv_dm/dv/env/rv_dm_env_cfg.sv
@@ -19,9 +19,12 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = RV_DM_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
// create jtag agent config obj
m_jtag_agent_cfg = jtag_agent_cfg::type_id::create("m_jtag_agent_cfg");
// create tl_host agent config obj
diff --git a/hw/ip/rv_dm/dv/env/rv_dm_env_pkg.sv b/hw/ip/rv_dm/dv/env/rv_dm_env_pkg.sv
index 2b526e5..8841e12 100644
--- a/hw/ip/rv_dm/dv/env/rv_dm_env_pkg.sv
+++ b/hw/ip/rv_dm/dv/env/rv_dm_env_pkg.sv
@@ -19,7 +19,7 @@
// parameters
// csr and mem total size for IP, TODO update below value
- parameter uint ADDR_MAP_SIZE = 4096;
+ parameter uint RV_DM_ADDR_MAP_SIZE = 4096;
// types
diff --git a/hw/ip/rv_timer/dv/env/rv_timer_env_cfg.sv b/hw/ip/rv_timer/dv/env/rv_timer_env_cfg.sv
index 8b2356c..4f357ba 100644
--- a/hw/ip/rv_timer/dv/env/rv_timer_env_cfg.sv
+++ b/hw/ip/rv_timer/dv/env/rv_timer_env_cfg.sv
@@ -6,9 +6,12 @@
`uvm_object_utils(rv_timer_env_cfg)
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = RV_TIMER_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
// set num_interrupts
num_interrupts = NUM_HARTS * NUM_TIMERS;
endfunction
diff --git a/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv b/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv
index cdb343d..b5e00cb 100644
--- a/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv
+++ b/hw/ip/rv_timer/dv/env/rv_timer_env_pkg.sv
@@ -18,7 +18,7 @@
// local parameters and types
// csr and mem total size for IP
- parameter uint ADDR_MAP_SIZE = 512;
+ parameter uint RV_TIMER_ADDR_MAP_SIZE = 512;
// TODO: these are currently hardcoded to 1 - this will need to change if design is modified
parameter uint NUM_HARTS = 1;
parameter uint NUM_TIMERS = 1;
diff --git a/hw/ip/spi_device/dv/env/spi_device_env_cfg.sv b/hw/ip/spi_device/dv/env/spi_device_env_cfg.sv
index 0f474d2..861b28c 100644
--- a/hw/ip/spi_device/dv/env/spi_device_env_cfg.sv
+++ b/hw/ip/spi_device/dv/env/spi_device_env_cfg.sv
@@ -13,10 +13,13 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = 0,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = SPI_DEVICE_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = 0);
mem_addr_s mem_addr;
- super.initialize(csr_base_addr, csr_addr_map_size);
+ super.initialize(csr_base_addr);
// create spi agent config obj
m_spi_agent_cfg = spi_agent_cfg::type_id::create("m_spi_agent_cfg");
// set num_interrupts & num_alerts which will be used to create coverage and more
diff --git a/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv b/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv
index dc022ad..dc05da8 100644
--- a/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv
+++ b/hw/ip/spi_device/dv/env/spi_device_env_pkg.sv
@@ -32,13 +32,13 @@
} sram_avail_type_e;
// csr and mem total size for IP
- parameter uint ADDR_MAP_SIZE = 4096;
+ parameter uint SPI_DEVICE_ADDR_MAP_SIZE = 4096;
// SPI SRAM is 2kB
- parameter uint SRAM_OFFSET = 'h800;
- parameter uint SRAM_SIZE = 2048;
- parameter uint SRAM_MSB = $clog2(SRAM_SIZE) - 1;
- parameter uint SRAM_PTR_PHASE_BIT = SRAM_MSB + 1;
- parameter uint SRAM_WORD_SIZE = 4;
+ parameter uint SRAM_OFFSET = 'h800;
+ parameter uint SRAM_SIZE = 2048;
+ parameter uint SRAM_MSB = $clog2(SRAM_SIZE) - 1;
+ parameter uint SRAM_PTR_PHASE_BIT = SRAM_MSB + 1;
+ parameter uint SRAM_WORD_SIZE = 4;
string msg_id = "spi_device_env_pkg";
diff --git a/hw/ip/tlul/dv/env/xbar_env_cfg.sv b/hw/ip/tlul/dv/env/xbar_env_cfg.sv
index ad85e3e..81f0558 100644
--- a/hw/ip/tlul/dv/env/xbar_env_cfg.sv
+++ b/hw/ip/tlul/dv/env/xbar_env_cfg.sv
@@ -30,8 +30,7 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = 2048);
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
has_ral = 0; // no csr in xbar
// Host TL agent cfg
num_hosts = xbar_hosts.size();
diff --git a/hw/ip/uart/doc/uart_dv_plan.md b/hw/ip/uart/doc/uart_dv_plan.md
index 709fd43..ae7a69b 100644
--- a/hw/ip/uart/doc/uart_dv_plan.md
+++ b/hw/ip/uart/doc/uart_dv_plan.md
@@ -42,8 +42,8 @@
All common types and methods defined at the package level can be found in
`uart_env_pkg`. Some of them in use are:
```systemverilog
-parameter uint ADDR_MAP_SIZE = 64;
-parameter uint UART_FIFO_DEPTH = 32;
+parameter uint UART_ADDR_MAP_SIZE = 64;
+parameter uint UART_FIFO_DEPTH = 32;
```
### TL_agent
diff --git a/hw/ip/uart/dv/env/uart_env_cfg.sv b/hw/ip/uart/dv/env/uart_env_cfg.sv
index a6e2f14..7f0dbc8 100644
--- a/hw/ip/uart/dv/env/uart_env_cfg.sv
+++ b/hw/ip/uart/dv/env/uart_env_cfg.sv
@@ -17,9 +17,12 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = UART_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
// create uart agent config obj
m_uart_agent_cfg = uart_agent_cfg::type_id::create("m_uart_agent_cfg");
// set num_interrupts & num_alerts which will be used to create coverage and more
diff --git a/hw/ip/uart/dv/env/uart_env_pkg.sv b/hw/ip/uart/dv/env/uart_env_pkg.sv
index 21b8aca..b0a659b 100644
--- a/hw/ip/uart/dv/env/uart_env_pkg.sv
+++ b/hw/ip/uart/dv/env/uart_env_pkg.sv
@@ -19,7 +19,7 @@
// local types
// csr and mem total size for IP
- parameter uint ADDR_MAP_SIZE = 64;
+ parameter uint UART_ADDR_MAP_SIZE = 64;
parameter uint UART_FIFO_DEPTH = 32;
typedef enum int {
diff --git a/util/uvmdvgen/env_cfg.sv.tpl b/util/uvmdvgen/env_cfg.sv.tpl
index a8211d9..6774780 100644
--- a/util/uvmdvgen/env_cfg.sv.tpl
+++ b/util/uvmdvgen/env_cfg.sv.tpl
@@ -21,9 +21,12 @@
`uvm_object_new
- virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1,
- bit [TL_AW-1:0] csr_addr_map_size = ADDR_MAP_SIZE);
- super.initialize(csr_base_addr, csr_addr_map_size);
+ virtual function void initialize_csr_addr_map_size();
+ this.csr_addr_map_size = ${name.upper()}_ADDR_MAP_SIZE;
+ endfunction : initialize_csr_addr_map_size
+
+ virtual function void initialize(bit [TL_AW-1:0] csr_base_addr = '1);
+ super.initialize(csr_base_addr);
% for agent in env_agents:
// create ${agent} agent config obj
m_${agent}_agent_cfg = ${agent}_agent_cfg::type_id::create("m_${agent}_agent_cfg");
diff --git a/util/uvmdvgen/env_pkg.sv.tpl b/util/uvmdvgen/env_pkg.sv.tpl
index a5058c9..ec87ff0 100644
--- a/util/uvmdvgen/env_pkg.sv.tpl
+++ b/util/uvmdvgen/env_pkg.sv.tpl
@@ -23,7 +23,7 @@
// parameters
// TODO update below, or compile error occurs
- parameter uint ADDR_MAP_SIZE = ;
+ parameter uint ${name.upper()}_ADDR_MAP_SIZE = ;
// types