[dv/chip] Fix chip_level alert scb error

This PR:
1). Fix alert_esc_agent in chip_level still driving alert_rx when the
  drivers are inactive.
2). Disable individual alert checking in chip-level scb.

Signed-off-by: Cindy Chen <chencindy@opentitan.org>
diff --git a/hw/dv/sv/alert_esc_agent/alert_esc_agent.sv b/hw/dv/sv/alert_esc_agent/alert_esc_agent.sv
index 3df0965..318da30 100644
--- a/hw/dv/sv/alert_esc_agent/alert_esc_agent.sv
+++ b/hw/dv/sv/alert_esc_agent/alert_esc_agent.sv
@@ -65,6 +65,7 @@
     // set variables to alert_esc interface
     cfg.vif.is_async = cfg.is_async;
     cfg.vif.is_alert = cfg.is_alert;
+    cfg.vif.is_active = cfg.is_active;
     cfg.vif.if_mode  = cfg.if_mode;
     // set async alert clock frequency
     if (cfg.is_alert && cfg.is_async) begin
diff --git a/hw/dv/sv/alert_esc_agent/alert_esc_if.sv b/hw/dv/sv/alert_esc_agent/alert_esc_if.sv
index 73c38a7..60ff9ca 100644
--- a/hw/dv/sv/alert_esc_agent/alert_esc_if.sv
+++ b/hw/dv/sv/alert_esc_agent/alert_esc_if.sv
@@ -27,7 +27,7 @@
   prim_esc_pkg::esc_rx_t     esc_rx_int;   // internal esc_rx
 
   wire                    async_clk;
-  bit                     is_async, is_alert;
+  bit                     is_async, is_alert, is_active;
   dv_utils_pkg::if_mode_e if_mode;
   clk_rst_if              clk_rst_async_if(.clk(async_clk), .rst_n(rst_n));
 
@@ -79,10 +79,10 @@
     input esc_rx;
   endclocking
 
-  assign alert_tx = (if_mode == dv_utils_pkg::Host && is_alert)    ? alert_tx_int : 'z;
-  assign alert_rx = (if_mode == dv_utils_pkg::Device && is_alert)  ? alert_rx_int : 'z;
-  assign esc_tx   = (if_mode == dv_utils_pkg::Host && !is_alert)   ? esc_tx_int   : 'z;
-  assign esc_rx   = (if_mode == dv_utils_pkg::Device && !is_alert) ? esc_rx_int   : 'z;
+  assign alert_tx = (if_mode == dv_utils_pkg::Host && is_alert && is_active)   ? alert_tx_int : 'z;
+  assign alert_rx = (if_mode == dv_utils_pkg::Device && is_alert && is_active) ? alert_rx_int : 'z;
+  assign esc_tx = (if_mode == dv_utils_pkg::Host && !is_alert && is_active)   ? esc_tx_int   : 'z;
+  assign esc_rx = (if_mode == dv_utils_pkg::Device && !is_alert && is_active) ? esc_rx_int   : 'z;
 
   task automatic wait_ack_complete();
     while (alert_tx_final.alert_p === 1'b1) @(monitor_cb);
diff --git a/hw/top_earlgrey/dv/env/chip_scoreboard.sv b/hw/top_earlgrey/dv/env/chip_scoreboard.sv
index 0a883bb..a8782e8 100644
--- a/hw/top_earlgrey/dv/env/chip_scoreboard.sv
+++ b/hw/top_earlgrey/dv/env/chip_scoreboard.sv
@@ -34,6 +34,8 @@
     // Disable alert signal integrity check to avoid false alert on low_power_group_en or
     // alert_init. Alert signal integrity can be checked by assertions.
     check_alert_sig_int_err = 0;
+    // Disable individual alert checking in scb. Alerts should be checked in SW or DV sequence.
+    do_alert_check = 0;
     super.run_phase(phase);
     fork
       process_jtag_fifo();