From 2763b4be91c2fe1bddda343c6b413f1ad8b2bd99 Mon Sep 17 00:00:00 2001 From: Jason <83615043+JJassonn69@users.noreply.github.com> Date: Thu, 19 Mar 2026 13:22:15 +0200 Subject: [PATCH] Fix CFAR blocking assignment (= to <=) in clocked block, add Build 15 analysis report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CFAR magnitude computation in radar_system_top.v used blocking assignment (=) inside posedge-clocked always block, creating sim/synth mismatch risk. Changed to non-blocking (<=). Threshold check now reads previous cycle's magnitude, which is correct sequential behavior. Regression: 15/15 quick + system TB pass. Build 15 analysis written to 10_docs/reports/ (not tracked — gitignored). --- 9_Firmware/9_2_FPGA/radar_system_top.v | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/9_Firmware/9_2_FPGA/radar_system_top.v b/9_Firmware/9_2_FPGA/radar_system_top.v index 7a5c6d5..e004145 100644 --- a/9_Firmware/9_2_FPGA/radar_system_top.v +++ b/9_Firmware/9_2_FPGA/radar_system_top.v @@ -436,8 +436,8 @@ always @(posedge clk_100m_buf or negedge sys_reset_n) begin // Simple threshold detection on doppler magnitude if (rx_doppler_valid) begin // Calculate approximate magnitude (|I| + |Q|) - cfar_mag = (rx_doppler_real[15] ? -rx_doppler_real : rx_doppler_real) + - (rx_doppler_imag[15] ? -rx_doppler_imag : rx_doppler_imag); + cfar_mag <= (rx_doppler_real[15] ? -rx_doppler_real : rx_doppler_real) + + (rx_doppler_imag[15] ? -rx_doppler_imag : rx_doppler_imag); // Threshold detection if (cfar_mag > 17'd10000) begin