Fix multi-seg/chain handshake deadlock + add radar_receiver_final integration test (10/10 PASS)

RTL fix: matched_filter_multi_segment.v ST_WAIT_FFT now waits for
processing chain to complete ALL 1024 outputs and return to IDLE
before advancing to next segment. Previously, it transitioned on the
first fft_pc_valid edge, causing the chain to still be outputting
while multi-seg started collecting data for the next segment. This
broke the handshake and caused permanent deadlock after segment 0.

Also fixes forward reference of sample_addr_from_chain in
radar_receiver_final.v (declaration moved before first use).

New files:
- tb/tb_radar_receiver_final.v: P0 integration test for full RX
  pipeline (ADC->DDC->MF->range_bin_decimator->doppler), 10 checks
- tb/ad9484_interface_400m_stub.v: behavioral ADC stub for iverilog

All existing tests still pass: multi-seg 32/32, MF co-sim 3/3,
Doppler co-sim 14/14.
This commit is contained in:
Jason
2026-03-16 18:51:08 +02:00
parent a5a5e96a57
commit e76925391c
5 changed files with 2590 additions and 30 deletions
+1 -1
View File
@@ -170,6 +170,7 @@ ddc_input_interface ddc_if (
);
// 3. Dual Chirp Memory Loader
wire [9:0] sample_addr_from_chain;
chirp_memory_loader_param chirp_mem (
.clk(clk),
@@ -219,7 +220,6 @@ assign short_chirp_real = delayed_ref_i;
assign short_chirp_imag = delayed_ref_q;
// 5. Dual Chirp Matched Filter
wire [9:0] sample_addr_from_chain;
wire signed [15:0] range_profile_i;
wire signed [15:0] range_profile_q;