-
released this
2026-04-18 14:49:52 +00:00 | 13 commits to main since this release📅 Originally published on GitHub: Sun, 19 Apr 2026 10:37:48 GMT
🏷️ Git tag created: Sat, 18 Apr 2026 14:49:52 GMTAERIS-10 400 MHz Reset Fan-Out Fix + ADAR1000 Channel Indexing
Hotfix rebuild of the xc7a50t-ftg256-2 production bitstream resolving a 400 MHz clk_dco setup violation (WNS = −0.626 ns) introduced by the reset topology change in v2.0.0-fft2048. Also carries a 1-based channel indexing correction in the ADAR1000 MCU driver (issue #90) that silently wrote the wrong SPI register for channel 1.
Timing (2026-04-18, commit
d0b3a4c)Clock Period WNS Failing Endpoints Previous (v2.0.0) clk_mmcm_out0 (400 MHz) 2.5 ns +0.020 ns 0 +0.068 ns clk_100m (100 MHz) 10.0 ns +0.156 ns 0 +0.156 ns clk_120m_dac (120 MHz) 8.333 ns +0.627 ns 0 +0.627 ns ft_clkout (60 MHz) 16.667 ns +9.887 ns 0 +9.887 ns adc_dco_p (400 MHz) 2.5 ns +0.020 ns 0 +0.920 ns Hold (WHS) — +0.035 ns 0 +0.046 ns Pulse width (WPWS) — +0.361 ns 0 +0.361 ns All constraints met Yes Yes Utilization (xc7a50tftg256-2)
Resource Used Available Util% Previous (v2.0.0) LUTs 21,735 32,600 66.67% 21,735 (66.67%) Flip-Flops ~14,610 65,200 ~22.41% 14,579 (22.36%) BRAM 55.5 75 74.00% 55.5 (74.00%) DSP48E1 112 120 93.33% 112 (93.33%) F7 Muxes 7,849 16,300 48.15% 7,849 (48.15%) F8 Muxes 3,336 8,150 40.93% 3,336 (40.93%) FF count increases by ~30 due to reset register replication; dedicated utilization report not generated for this hotfix build.
What Changed (from v2.0.0-fft2048)
400 MHz Reset Fan-Out Fix
nco_400m_enhanced.v,cic_decimator_4x_enhanced.v,ddc_400m.v: Registered active-high resetreset_hwith(* max_fanout=50 *). Prior single-LUT1 inverter drove 700+ loads causing setup violation on the DSP48E1 RSTP path. Vivado now replicates into regional copies (≤50 loads each), meeting setup with +0.020 ns margin.radar_system_top.v: DefaultUSB_MODEchanged from 0 (FT601) to 1 (FT2232H). FT601 path remains selectable via explicit parameter override for the 200T premium board.
MCU — ADAR1000 Channel Indexing (issue #90)
ADAR1000_Manager.cpp: Corrected 1-based channel indexing in all phase/gain setters. Prior off-by-one silently addressed the wrong physical SPI register when the caller passed channel 1.test_cross_layer_contract.py: 416-line cross-layer contract test added covering register stride, round-trip correctness for all four setters (adarSetRxPhase,adarSetTxPhase,adarSetRxVgaGain,adarSetTxVgaGain), and caller-site 1-based convention enforcement. Prevents future indexing drift.
Test Suite
Layer Tests Status Python (GUI) 171 pass, 3 skip Pass MCU (C/C++) 88 Pass FPGA (iverilog) 27 Pass Cross-layer 54 Pass Total 340 pass, 3 skip All pass Assets
xc7a50t-ftg256-prod-2026-04-18.bit— Production bitstream (2,140 KB, program via Vivado/xsdb)xc7a50t-ftg256-prod-timing-2026-04-18.rpt— Post-route timing reportxc7a50t-ftg256-prod-2026-04-18.md— Build report and programming instructions
Build Environment
- Vivado 2025.2 (lin64)
- Device: xc7a50tftg256-2 (speed grade -2, PRODUCTION)
- Top module:
radar_system_top_50t(USB_MODE=1, FT2232H) - Synth: 152s, Impl: 416s, Bit: ~38s
Downloads
mirror of
https://github.com/NawfalMotii79/PLFM_RADAR.git
synced 2026-04-19 11:36:01 +00:00