Merge "Revert "I2S Add to Pinmux""
diff --git a/hw/top_matcha/dv/env/chip_if.sv b/hw/top_matcha/dv/env/chip_if.sv
index 3b8af19..5b576bc 100644
--- a/hw/top_matcha/dv/env/chip_if.sv
+++ b/hw/top_matcha/dv/env/chip_if.sv
@@ -45,6 +45,9 @@
 `define CPU_HIER            `TOP_HIER.u_rv_core_ibex_sec
 `define CPU_CORE_HIER       `CPU_HIER.u_core
 `define CPU_TL_ADAPT_D_HIER `CPU_HIER.tl_adapter_host_d_ibex
+`define SMC_CPU_HIER            `TOP_HIER.u_rv_core_ibex_smc
+`define SMC_CPU_CORE_HIER       `SMC_CPU_HIER.u_core
+`define SMC_CPU_TL_ADAPT_D_HIER `SMC_CPU_HIER.tl_adapter_host_d_ibex
 `define CSRNG_HIER          `TOP_HIER.u_csrng
 `define ENTROPY_SRC_HIER    `TOP_HIER.u_entropy_src
 `define EDN_HIER(i)         `TOP_HIER.u_edn``i
@@ -401,22 +404,22 @@
   // hw/top_matcha/rtl/chip_matcha_verilator.sv and
   // sw/device/lib/testing/pinmux_testutils.c
   pins_if #(.Width(NUM_GPIOS), .PullStrength("Weak")) gpios_if(
-    .pins({mios[top_matcha_pkg::MioPadIoa0], mios[top_matcha_pkg::MioPadIoa1],
-           mios[top_matcha_pkg::MioPadIoa2], mios[top_matcha_pkg::MioPadIoa3],
-           mios[top_matcha_pkg::MioPadIoa4], mios[top_matcha_pkg::MioPadIoa5],
-           mios[top_matcha_pkg::MioPadIoa6], mios[top_matcha_pkg::MioPadIoa7],
-           mios[top_matcha_pkg::MioPadIoa8], mios[top_matcha_pkg::MioPadIob0],
-           mios[top_matcha_pkg::MioPadIob1], mios[top_matcha_pkg::MioPadIob2],
-           mios[top_matcha_pkg::MioPadIob3], mios[top_matcha_pkg::MioPadIob4],
-           mios[top_matcha_pkg::MioPadIob5], mios[top_matcha_pkg::MioPadIob6],
-           mios[top_matcha_pkg::MioPadIob7], mios[top_matcha_pkg::MioPadIob8],
-           mios[top_matcha_pkg::MioPadIob10], mios[top_matcha_pkg::MioPadIob11],
-           mios[top_matcha_pkg::MioPadIob12], mios[top_matcha_pkg::MioPadIoc6],
-           mios[top_matcha_pkg::MioPadIoc0], mios[top_matcha_pkg::MioPadIoc1],
-           mios[top_matcha_pkg::MioPadIoc2], mios[top_matcha_pkg::MioPadIoc7],
-           mios[top_matcha_pkg::MioPadIoc9], mios[top_matcha_pkg::MioPadIoc5],
-           mios[top_matcha_pkg::MioPadIor6], mios[top_matcha_pkg::MioPadIor7],
-           mios[top_matcha_pkg::MioPadIoc8], mios[top_matcha_pkg::MioPadIor10]})
+    .pins({mios[top_matcha_pkg::MioPadIor10], mios[top_matcha_pkg::MioPadIoc8],
+           mios[top_matcha_pkg::MioPadIor7], mios[top_matcha_pkg::MioPadIor6],
+           mios[top_matcha_pkg::MioPadIoc5], mios[top_matcha_pkg::MioPadIoc9],
+           mios[top_matcha_pkg::MioPadIoc7], mios[top_matcha_pkg::MioPadIoc2],
+           mios[top_matcha_pkg::MioPadIoc1], mios[top_matcha_pkg::MioPadIoc0],
+           mios[top_matcha_pkg::MioPadIoc6], mios[top_matcha_pkg::MioPadIob12],
+           mios[top_matcha_pkg::MioPadIob11], mios[top_matcha_pkg::MioPadIob10],
+           mios[top_matcha_pkg::MioPadIob8], mios[top_matcha_pkg::MioPadIob7],
+           mios[top_matcha_pkg::MioPadIob6], mios[top_matcha_pkg::MioPadIob5],
+           mios[top_matcha_pkg::MioPadIob4], mios[top_matcha_pkg::MioPadIob3],
+           mios[top_matcha_pkg::MioPadIob2], mios[top_matcha_pkg::MioPadIob1],
+           mios[top_matcha_pkg::MioPadIob0], mios[top_matcha_pkg::MioPadIoa8],
+           mios[top_matcha_pkg::MioPadIoa7], mios[top_matcha_pkg::MioPadIoa6],
+           mios[top_matcha_pkg::MioPadIoa5], mios[top_matcha_pkg::MioPadIoa4],
+           mios[top_matcha_pkg::MioPadIoa3], mios[top_matcha_pkg::MioPadIoa2],
+           mios[top_matcha_pkg::MioPadIoa1], mios[top_matcha_pkg::MioPadIoa0]})
   );
 
   // Functional (muxed) interface: JTAG (valid during debug enabled LC state only).
diff --git a/hw/top_matcha/dv/env/seq_lib/chip_sw_base_vseq.sv b/hw/top_matcha/dv/env/seq_lib/chip_sw_base_vseq.sv
index f2cc535..264736d 100644
--- a/hw/top_matcha/dv/env/seq_lib/chip_sw_base_vseq.sv
+++ b/hw/top_matcha/dv/env/seq_lib/chip_sw_base_vseq.sv
@@ -17,6 +17,11 @@
     set_and_release_sw_strap_nonblocking();
     // Disable mem checks in scoreboard - it does not factor in memory scrambling.
     cfg.en_scb_mem_chk = 1'b0;
+
+    // Undriven gpio pins will cause x values in u_gpio.data_in when connected
+    // with MIO pads in pinmux
+    // TODO(b/287479608): Add more X checkers and report error immediately
+    cfg.chip_vif.gpios_if.set_pulldown_en({32{1'b1}});
   endtask
 
   // Drive sw_strap pins only when the ROM / test ROM code is active
diff --git a/hw/top_matcha/dv/env/seq_lib/chip_sw_i2c_host_tx_rx_vseq.sv b/hw/top_matcha/dv/env/seq_lib/chip_sw_i2c_host_tx_rx_vseq.sv
index 7f30698..e2e3d74 100644
--- a/hw/top_matcha/dv/env/seq_lib/chip_sw_i2c_host_tx_rx_vseq.sv
+++ b/hw/top_matcha/dv/env/seq_lib/chip_sw_i2c_host_tx_rx_vseq.sv
@@ -38,6 +38,23 @@
     cfg.m_i2c_agent_cfgs[i2c_idx].if_mode = Device;
 
     // Enbale appropriate interface
+    case(i2c_idx)
+      0: begin
+        cfg.chip_vif.gpios_if.set_pulldown_en_pin(7, 1'b0);
+        cfg.chip_vif.gpios_if.set_pulldown_en_pin(8, 1'b0);
+      end
+      1: begin
+        cfg.chip_vif.gpios_if.set_pulldown_en_pin(18, 1'b0);
+      end
+      2: begin
+        cfg.chip_vif.gpios_if.set_pulldown_en_pin(19, 1'b0);
+        cfg.chip_vif.gpios_if.set_pulldown_en_pin(20, 1'b0);
+      end
+      default: begin
+        `uvm_error(`gfn, $sformatf("Unexpected i2c index: %0d", i2c_idx))
+      end
+    endcase
+
     cfg.chip_vif.enable_i2c(.inst_num(i2c_idx), .enable(1));
 
     `uvm_info(`gfn, $sformatf("Full period cycle: %d", clock_period_cycles), UVM_MEDIUM)
diff --git a/hw/top_matcha/dv/tb/tb.sv b/hw/top_matcha/dv/tb/tb.sv
index 5134392..43341e4 100644
--- a/hw/top_matcha/dv/tb/tb.sv
+++ b/hw/top_matcha/dv/tb/tb.sv
@@ -569,9 +569,6 @@
       force `SMC_CPU_HIER.u_ibus_trans.rst_ni = 1'b0;
       force `SMC_CPU_HIER.u_dbus_trans.rst_ni = 1'b0;
     end
-
-    // force the inputs to gpio to be 0
-    force `CHIP_HIER.u_gpio.cio_gpio_i = 32'h00000000;
   end
 
   `include "../autogen/tb__xbar_connect.sv"
diff --git a/sw/device/tests/BUILD b/sw/device/tests/BUILD
index ebd5f27..50fbf06 100644
--- a/sw/device/tests/BUILD
+++ b/sw/device/tests/BUILD
@@ -616,6 +616,7 @@
         "verilator",
     ],
     tests = [
+        "verilator_atomics_test",
         "verilator_cam_ctrl_test",
         "verilator_cam_irq_test",
         "verilator_crt_test",