[dv] Minor tb modification to handle assertions

- if the translation units are not reset, they can trigger
  known assertion failrues if a random register write happens
  to turn on address translation.

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/top_earlgrey/dv/tb/tb.sv b/hw/top_earlgrey/dv/tb/tb.sv
index 78477d8..ce96884 100644
--- a/hw/top_earlgrey/dv/tb/tb.sv
+++ b/hw/top_earlgrey/dv/tb/tb.sv
@@ -359,7 +359,16 @@
   initial begin
     void'($value$plusargs("stub_cpu=%0b", stub_cpu));
     if (stub_cpu) begin
-     force `CPU_CORE_HIER.clk_i = 1'b0;
+      // silence the main cpu clock to ensure there are no transactions.
+      // also silence the translation modules as they contain arbiters
+      // that are unhappy with X's, which can happen if csr_rw happens to
+      // hit the right register during testing.
+      // We cannot kill all clocks to CPU_CORE because the DV hijack point
+      // is in front of a FIFO, so potentially this can kill transactions
+      // being buffered.
+      force `CPU_CORE_HIER.clk_i = 1'b0;
+      force `CPU_HIER.u_ibus_trans.rst_ni = 1'b0;
+      force `CPU_HIER.u_dbus_trans.rst_ni = 1'b0;
       // tl type is used to calculate ECC and we use DataType for cpu data interface
       force cpu_d_tl_if.h2d.a_user.tl_type = tlul_pkg::DataType;
       force `CPU_TL_ADAPT_D_HIER.tl_out = cpu_d_tl_if.h2d;