[DV] dv updates to enable AST integration simulation

Signed-off-by: Timothy Chen <timothytim@google.com>

[DV] updates for grabbing reset signal

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/top_earlgrey/dv/env/chip_env.sv b/hw/top_earlgrey/dv/env/chip_env.sv
index c6d91ec..0cfaccf 100644
--- a/hw/top_earlgrey/dv/env/chip_env.sv
+++ b/hw/top_earlgrey/dv/env/chip_env.sv
@@ -43,6 +43,11 @@
       `uvm_fatal(`gfn, "failed to get bootstrap_vif from uvm_config_db")
     end
 
+    if (!uvm_config_db#(virtual pins_if#(1))::get(this, "", "rst_n_mon_vif",
+        cfg.rst_n_mon_vif)) begin
+      `uvm_fatal(`gfn, "failed to get rst_n_mon_vif from uvm_config_db")
+    end
+
     foreach (cfg.mem_bkdr_vifs[mem]) begin
       if (!uvm_config_db#(mem_bkdr_vif)::get(this, "", $sformatf("mem_bkdr_vifs[%0s]", mem.name),
                                              cfg.mem_bkdr_vifs[mem])) begin
diff --git a/hw/top_earlgrey/dv/env/chip_env_cfg.sv b/hw/top_earlgrey/dv/env/chip_env_cfg.sv
index 84fce8d..e004273 100644
--- a/hw/top_earlgrey/dv/env/chip_env_cfg.sv
+++ b/hw/top_earlgrey/dv/env/chip_env_cfg.sv
@@ -21,6 +21,7 @@
   virtual pins_if#(1) srst_n_vif;
   virtual pins_if#(1) jtag_spi_n_vif;
   virtual pins_if#(1) bootstrap_vif;
+  virtual pins_if#(1) rst_n_mon_vif;
 
   // sw logger related
   string sw_types[]         = '{"rom", "sw"};
diff --git a/hw/top_earlgrey/dv/env/seq_lib/chip_common_vseq.sv b/hw/top_earlgrey/dv/env/seq_lib/chip_common_vseq.sv
index e4f5bec..390b358 100644
--- a/hw/top_earlgrey/dv/env/seq_lib/chip_common_vseq.sv
+++ b/hw/top_earlgrey/dv/env/seq_lib/chip_common_vseq.sv
@@ -19,8 +19,7 @@
 
   virtual task apply_reset(string kind = "HARD");
     super.apply_reset(kind);
-    // TODO rstmgr takes some time to release reset for IPs. Need to find a better way to know when
-    // reset is released by rstmgr
+    wait (cfg.rst_n_mon_vif.pins[0] === 1);
     cfg.clk_rst_vif.wait_clks(100);
   endtask
 
diff --git a/hw/top_earlgrey/dv/tb/chip_hier_macros.svh b/hw/top_earlgrey/dv/tb/chip_hier_macros.svh
index 9735b74..a036f40 100644
--- a/hw/top_earlgrey/dv/tb/chip_hier_macros.svh
+++ b/hw/top_earlgrey/dv/tb/chip_hier_macros.svh
@@ -12,6 +12,8 @@
 `define RAM_MAIN_SUB_HIER `CHIP_HIER.u_ram1p_ram_main.u_mem
 `define ROM_HIER          `CHIP_HIER.u_rom_rom.u_prim_rom
 `define FLASH_HIER        `CHIP_HIER.u_flash_eflash
+`define RSTMGR_HIER       `CHIP_HIER.u_rstmgr
+`define CLKMGR_HIER       `CHIP_HIER.u_clkmgr
 `define USBDEV_HIER       `CHIP_HIER.u_usbdev
 `define FLASH0_MEM_HIER   `FLASH_HIER.gen_flash_banks[0].i_core.i_flash.gen_generic.u_impl_generic.u_mem
 `define FLASH1_MEM_HIER   `FLASH_HIER.gen_flash_banks[1].i_core.i_flash.gen_generic.u_impl_generic.u_mem
diff --git a/hw/top_earlgrey/dv/tb/tb.sv b/hw/top_earlgrey/dv/tb/tb.sv
index 06d1a4d..8f9fede 100644
--- a/hw/top_earlgrey/dv/tb/tb.sv
+++ b/hw/top_earlgrey/dv/tb/tb.sv
@@ -44,6 +44,11 @@
 
   bit stub_cpu;
 
+  // internal clocks and resets
+  // cpu clock cannot reference cpu_hier since cpu clocks are forced off in stub_cpu mode
+  wire cpu_clk = `CLKMGR_HIER.clocks_o.clk_proc_main;
+  wire cpu_rst_n = `CPU_HIER.rst_ni;
+
   // interfaces
   clk_rst_if clk_rst_if(.clk, .rst_n);
   clk_rst_if usb_clk_rst_if(.clk(usb_clk), .rst_n(usb_rst_n));
@@ -51,8 +56,9 @@
   pins_if #(1) srst_n_if(.pins(srst_n));
   pins_if #(1) jtag_spi_n_if(.pins(jtag_spi_n));
   pins_if #(1) bootstrap_if(.pins(bootstrap));
+  pins_if #(1) rst_n_mon_if(.pins(cpu_rst_n));
   spi_if spi_if(.rst_n);
-  tl_if cpu_d_tl_if(.clk, .rst_n);
+  tl_if cpu_d_tl_if(.clk(cpu_clk), .rst_n(cpu_rst_n));
   uart_if uart_if();
   jtag_if jtag_if();
 
@@ -167,7 +173,8 @@
 
   initial begin
     // Set clk_rst_vifs
-    // drive clk and rst_n from clk_if
+    // drive rst_n from clk_if
+    // clk_rst_if references internal clock created by ast
     clk_rst_if.set_active();
     usb_clk_rst_if.set_active(.drive_clk_val(1'b1), .drive_rst_n_val(1'b0));
     // clk_rst_if will be gotten by env and env.scoreboard (for xbar)
@@ -188,6 +195,8 @@
         null, "*.env", "jtag_spi_n_vif", jtag_spi_n_if);
     uvm_config_db#(virtual pins_if #(1))::set(
         null, "*.env", "bootstrap_vif", bootstrap_if);
+    uvm_config_db#(virtual pins_if #(1))::set(
+        null, "*.env", "rst_n_mon_vif", rst_n_mon_if);
 
     // Backdoors
     uvm_config_db#(virtual mem_bkdr_if)::set(