[dv, kmac_app_agent] Enable randomization of push
- Declare push_pull_agent_cfg as rand member
- Create it in kmac_app_agent_cfg::new so that child also gets
randomized
- Pass some cross-constraints
Signed-off-by: Srikrishna Iyer <sriyer@google.com>
diff --git a/hw/dv/sv/kmac_app_agent/kmac_app_agent.sv b/hw/dv/sv/kmac_app_agent/kmac_app_agent.sv
index 0c1625f..91f8a08 100644
--- a/hw/dv/sv/kmac_app_agent/kmac_app_agent.sv
+++ b/hw/dv/sv/kmac_app_agent/kmac_app_agent.sv
@@ -31,8 +31,6 @@
// create push_agent, agent_cfg
m_data_push_agent = push_pull_agent#(`CONNECT_DATA_WIDTH)::type_id::create(
"m_data_push_agent", this);
- cfg.m_data_push_agent_cfg = push_pull_agent_cfg#(`CONNECT_DATA_WIDTH)::type_id::create(
- "m_data_push_agent_cfg");
cfg.m_data_push_agent_cfg.is_active = cfg.is_active;
cfg.m_data_push_agent_cfg.agent_type = PushAgent;
cfg.m_data_push_agent_cfg.if_mode = cfg.if_mode;
diff --git a/hw/dv/sv/kmac_app_agent/kmac_app_agent_cfg.sv b/hw/dv/sv/kmac_app_agent/kmac_app_agent_cfg.sv
index 9c71d95..7ea0363 100644
--- a/hw/dv/sv/kmac_app_agent/kmac_app_agent_cfg.sv
+++ b/hw/dv/sv/kmac_app_agent/kmac_app_agent_cfg.sv
@@ -23,14 +23,15 @@
// Knob to enable percentage of error response in auto-response sequence
int unsigned error_rsp_pct = 0;
+ rand push_pull_agent_cfg#(`CONNECT_DATA_WIDTH) m_data_push_agent_cfg;
+
// Bias randomization in favor of enabling zero delays less often.
constraint zero_delays_c {
zero_delays dist { 0 := 8,
1 := 2 };
+ m_data_push_agent_cfg.zero_delays == zero_delays;
}
- push_pull_agent_cfg#(`CONNECT_DATA_WIDTH) m_data_push_agent_cfg;
-
`uvm_object_utils_begin(kmac_app_agent_cfg)
`uvm_field_int(rsp_delay_min, UVM_DEFAULT)
`uvm_field_int(rsp_delay_max, UVM_DEFAULT)
@@ -38,6 +39,10 @@
`uvm_field_int(start_default_device_seq, UVM_DEFAULT)
`uvm_object_utils_end
- `uvm_object_new
+ function new (string name = "");
+ super.new(name);
+ m_data_push_agent_cfg = push_pull_agent_cfg#(`CONNECT_DATA_WIDTH)::type_id::create(
+ "m_data_push_agent_cfg");
+ endfunction : new
endclass
diff --git a/hw/dv/sv/kmac_app_agent/kmac_app_intf.sv b/hw/dv/sv/kmac_app_agent/kmac_app_intf.sv
index 67b1a88..c293017 100644
--- a/hw/dv/sv/kmac_app_agent/kmac_app_intf.sv
+++ b/hw/dv/sv/kmac_app_agent/kmac_app_intf.sv
@@ -47,7 +47,7 @@
assign kmac_data_req = (if_mode == dv_utils_pkg::Host) ?
{req_data_if.valid, req_data_if.h_data} : 'z;
assign {req_data_if.valid, req_data_if.h_data} = (if_mode == dv_utils_pkg::Device) ?
- kmac_data_req : 'z;
+ kmac_data_req : 'z;
assign {req_data_if.ready, rsp_done, rsp_digest_share0, rsp_digest_share1, rsp_error} =
(if_mode == dv_utils_pkg::Host) ? kmac_data_rsp : 'z;