mirror of
https://github.com/NawfalMotii79/PLFM_RADAR.git
synced 2026-06-08 22:47:16 +00:00
5c8cc8c96a
Replaces the in-house iterative fft_engine.v in the matched-filter chain
with the Pipelined Streaming Xilinx FFT IP, closing RX-NEW-3 (FFT chain
~11x too slow vs PRI budget).
Components:
* ip/xfft_2048_ip/xfft_2048_ip.xci — committed IP definition
(16-bit fixed point, BFP scaling, convergent rounding, natural order,
pipelined-streaming, BRAM data/reorder/phase factors). Vivado
regenerates .dcp / sim-netlist from this on each build.
* scripts/50t/gen_xfft_2048_ip.tcl — IP-Catalog generation script
* scripts/50t/run_xfft_xsim.sh — XSim batch runner for tb_xfft_2048_xsim
* xfft_2048.v — AXI-Stream wrapper. FFT_USE_XILINX_IP define routes to
real LogiCORE for synth/XSim; falls back to fft_engine batched
one-shot for iverilog (unit coverage only).
* fft_engine_axi_bridge.v — exposes legacy fft_engine port surface on
top of the xfft_2048 AXI wrapper, so the chain swap is a 1-line
module-name change.
* matched_filter_processing_chain.v — fft_engine -> fft_engine_axi_bridge
* scripts/50t/build_50t.tcl — read_ip + generate_target + synth_ip;
adds FFT_USE_XILINX_IP to verilog defines.
* tb/tb_xfft_2048_xsim.v — XSim verification (DC, impulse, tone bin 128).
All 5 assertions PASS on remote with the real IP; tuser=0x0a (BLK_EXP=10)
confirms BFP scaling working.
Local iverilog regression: 32/34 PASS — identical to baseline. Same two
RX-NEW-3 failures (Receiver Integration, Matched Filter Chain) — these
only resolve in remote XSim with the real IP, since iverilog uses the
fft_engine fallback inside xfft_2048 (~150K cycles/pass, not the
~2200-cycle Pipelined Streaming throughput). MF cosim 4/4 PASS confirms
bridge bit-exact in fallback mode.
Pending: remote XSim of tb_radar_receiver_final to demonstrate Doppler
frames produced within PRI budget; remote synth to confirm DSP/timing
post-IP.
26 lines
665 B
Plaintext
26 lines
665 B
Plaintext
# Simulation build artifacts
|
|
*.vvp
|
|
*.vcd
|
|
tb/*.vvp
|
|
tb/*.vcd
|
|
a.out
|
|
|
|
# Test-run outputs (written by testbenches, not oracles/stimulus).
|
|
# NOTE: golden references (.hex, .mem, doppler_golden_py_*.csv) ARE
|
|
# committed — they are load-bearing oracles for MF/Doppler/receiver
|
|
# cosim tests. Only TB-written CSV outputs are ignored here.
|
|
tb/cosim/rx_final_doppler_out.csv
|
|
|
|
# Vivado project files (managed separately)
|
|
*.jou
|
|
*.log
|
|
*.str
|
|
*.bit
|
|
*.ltx
|
|
|
|
# Vivado IP build artifacts (regenerated from .xci by gen_xfft_2048_ip.tcl).
|
|
# Only the .xci is committed — Vivado reproduces .dcp / sim-netlist / etc.
|
|
ip/xfft_2048_ip/*
|
|
!ip/xfft_2048_ip/xfft_2048_ip.xci
|
|
build_xsim_xfft/
|