[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;