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",