From 0642f4e9291f455459d4038804009350eece70e4 Mon Sep 17 00:00:00 2001 From: ananya-manduva Date: Tue, 12 May 2026 17:51:26 -0700 Subject: [PATCH 1/2] read logit_reg_0 directly; expand FLASH_WORDS to 1280 --- cocotb/sim/tb/tb_top_feature_ml_cpu_spi_flash.sv | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cocotb/sim/tb/tb_top_feature_ml_cpu_spi_flash.sv b/cocotb/sim/tb/tb_top_feature_ml_cpu_spi_flash.sv index afeb314..db7679b 100644 --- a/cocotb/sim/tb/tb_top_feature_ml_cpu_spi_flash.sv +++ b/cocotb/sim/tb/tb_top_feature_ml_cpu_spi_flash.sv @@ -18,7 +18,7 @@ localparam [31:0] FEAT_MOTION = FEATURE_BASE + 32'h08; localparam [31:0] FEAT_DHR = FEATURE_BASE + 32'h0C; localparam [31:0] FEAT_MSSD = FEATURE_BASE + 32'h10; -localparam int unsigned FLASH_WORDS = 1232; +localparam int unsigned FLASH_WORDS = 1280; // 1024 firmware + 256 weight slots (taketwo reads up to word 227, needing flash index 1251) localparam int unsigned TB_TIMEOUT_CYCLES = 10_000_000; localparam int unsigned TB_PROGRESS_EVERY = 10_000; // The top-level SPI pins are shared. spi_boot_ctrl owns them until firmware @@ -481,7 +481,7 @@ initial begin end if (dut.test_status == 32'hCAFE_BABE) begin - sampled_logit_word = {logit1[15:0], logit0[15:0]}; + sampled_logit_word = dut.u_weight_ram.logit_reg_0; raw_logit_word = sampled_logit_word; log0_s = $signed(sampled_logit_word[15:0]); log1_s = $signed(sampled_logit_word[31:16]); @@ -564,7 +564,7 @@ initial begin $display("FAIL: no AXI write activity from taketwo"); failures = failures + 1; end - if ({logit1[15:0], logit0[15:0]} === 32'hA5A55A5A) begin + if (sampled_logit_word === 32'hA5A55A5A) begin $display("FAIL: visible logit outputs kept sentinel value"); failures = failures + 1; end From 7d54102352c6fe599d1342f7ff4e997c80e51b79 Mon Sep 17 00:00:00 2001 From: ananya-manduva Date: Tue, 12 May 2026 17:52:23 -0700 Subject: [PATCH 2/2] wire SPI pads to flash_spi_* (not spi_* stub) --- src/chip_core.sv | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/chip_core.sv b/src/chip_core.sv index 251f193..e38af11 100644 --- a/src/chip_core.sv +++ b/src/chip_core.sv @@ -487,10 +487,22 @@ module chip_core #( .ml_update_gate_o (ml_update_gate_w), .invalid_reason_o (invalid_reason_w), - .spi_clk_o (spi_clk_w), - .spi_mosi_o (spi_mosi_w), - .spi_miso_i (bidir_in[4]), - .spi_cs_n_o (spi_cs_n_w), + .flash_spi_clk_o (spi_clk_w), + .flash_spi_mosi_o (spi_mosi_w), + .flash_spi_miso_i (bidir_in[4]), + .flash_spi_cs_n_o (spi_cs_n_w), + .boot_spi_clk_o (), + .boot_spi_mosi_o (), + .boot_spi_miso_i (1'b1), + .boot_spi_cs_n_o (), + .weight_spi_clk_o (), + .weight_spi_mosi_o(), + .weight_spi_miso_i(1'b1), + .weight_spi_cs_n_o(), + .spi_clk_o (), + .spi_mosi_o (), + .spi_miso_i (1'b1), + .spi_cs_n_o (), .epoch_end_o (epoch_end_w), .alarm_o (alarm_w),