Merge "Fix kelvin fpga_tests"
diff --git a/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c b/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c
index 197f259..2c8cf63 100644
--- a/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c
+++ b/sw/device/tests/kelvin/fpga_tests/kelvin_test_smc.c
@@ -68,6 +68,11 @@
       mmio_region_t base_addr =
           mmio_region_from_addr(TOP_MATCHA_ML_TOP_CORE_BASE_ADDR);
       // Reset and halt Kelvin
+      // NB: Kelvin needs a few cycles in reset with a clock,
+      // so set the reset bit and the gate in two transactions.
+      mmio_region_write32(
+          base_addr, ML_TOP_CTRL_REG_OFFSET,
+          ML_TOP_CTRL_REG_RESVAL);
       mmio_region_write32(
           base_addr, ML_TOP_CTRL_REG_OFFSET,
           ML_TOP_CTRL_REG_RESVAL | (1 << ML_TOP_CTRL_FREEZE_BIT));