Artifacts
Published Reports and Visuals
Central access point for antenna simulations, implementation summaries, timing baselines, and board-day artifact references.
Current FPGA implementation status
- Build 24 is the current production baseline for the XC7A200T target. All timing constraints met. Includes CA-CFAR detector integration with pipelined noise computation.
- Build 24 reports are available on the remote Vivado host at
~/PLFM_RADAR_work/vivado_project/reports_build24/.
- Build 21 (v0.1.4-build21) retained as pre-CFAR reference at
reports_build21/.
Build 24 — 15-Point Engineering Report
Status: PASS — Production-safe bitstream generated
Date: 2026-03-20 | Commit: 0745cc4 | Device: XC7A200T-2FBG484I | Vivado 2025.2
1. Timing Summary
| Clock Domain | Period (ns) | WNS (ns) | WHS (ns) | WPWS (ns) | Status |
| clk_100m | 10.000 | +0.287 | +0.056 | +3.870 | PASS |
| clk_mmcm_out0 (400 MHz) | 2.500 | +0.179 | +0.092 | +0.684 | PASS |
| adc_dco_p | — | +0.904 | — | +0.361 | PASS |
| ft601_clk_in | 10.000 | +0.347 | +0.094 | +4.500 | PASS |
| clk_120m_dac | — | +1.755 | +0.056 | +3.666 | PASS |
TNS = 0.000 ns, THS = 0.000 ns across all domains. Zero failing endpoints.
2. Utilization (Post-Route)
| Resource | Build 21 (baseline) | Build 24 | Available | Util% | Delta |
| Slice LUTs | 6,192 | 8,558 | 134,600 | 6.36% | +2,366 (+38%) |
| Slice Registers (FFs) | 9,064 | 10,384 | 269,200 | 3.86% | +1,320 (+15%) |
| Block RAM Tiles | 16 | 17 | 365 | 4.66% | +1 |
| RAMB36E1 | — | 12 | 365 | 3.29% | — |
| RAMB18E1 | — | 10 | 730 | 1.37% | — |
| DSP48E1 | 139 | 142 | 740 | 19.19% | +3 |
| Bonded IOBs | — | 178 | 285 | 62.46% | — |
| BUFGCTRL | — | 5 | 32 | 15.63% | — |
| MMCME2_ADV | — | 1 | 10 | 10.00% | — |
CFAR added +1 BRAM18 (magnitude buffer, 2048×17), +3 DSP48E1 (alpha multiply + cross-multiply for GO/SO), +2,366 LUTs (sliding window logic, state machine, mode mux), +1,320 FFs (pipeline registers, counters, window sums).
3. DSP48E1 Breakdown by Module
| Module | DSP48E1 | Notes |
| DDC (FIR I + FIR Q + CIC + NCO) | 117 | Dominant consumer: 47+47 FIR taps + 10+10 CIC + 2 DDC + 1 NCO |
| Matched Filter Processing Chain | 12 | 8 FFT butterflies + 4 freq-domain multiply |
| Doppler Processor + FFT | 10 | 8 FFT butterflies + 2 magnitude |
| CFAR Detector | 3 | alpha*noise multiply + GO/SO cross-multiply (pipelined) |
| System Top + Other | 0 | — |
| Total | 142 | 19.19% of 740 available |
4. BRAM Breakdown by Module
| Module | RAMB36 | RAMB18 | Tiles | Notes |
| Doppler Processor | 4 | 0 | 4 | Range-Doppler accumulation buffers |
| Matched Filter (mf_dual) | 2 | 10 | 7 | Coefficient + I/Q data BRAMs |
| CFAR Detector | 1 | 0 | 1 | Magnitude buffer (2048×17 bits) |
| Transmitter (chirp mem) | 1 | 0 | 1 | Chirp waveform storage |
| FFT Engines (2×) | 4 | 0 | 4 | Twiddle factor + butterfly BRAMs |
| Total | 12 | 10 | 17 | 4.66% of 365 tiles |
5. Power Estimate
| Category | Build 21 | Build 24 |
| Dynamic Power | — | 0.591 W |
| Device Static | — | 0.163 W |
| Total On-Chip | 0.732 W | 0.754 W |
| Junction Temperature | — | 26.9°C |
| Max Ambient (TJA) | — | 83.1°C |
+22 mW (+3%) from CFAR logic. Well within thermal budget.
6. Critical Path Analysis
The tightest path (WNS = +0.179 ns) is in the clk_mmcm_out0 (400 MHz) domain: NCO sine LUT index register → LUT6 → sin_abs_reg. This is the same path that was critical in Build 21 and is unrelated to CFAR.
The clk_100m domain (where CFAR operates) has +0.287 ns slack. The Build 23 critical path (cfar_inst/leading_sum → cross-multiply → alpha*noise DSP, WNS = -0.309 ns) has been completely eliminated by the pipeline fix.
7. Post-Synthesis vs Post-Route Comparison
| Metric | Post-Synth | Post-Route (final) |
| WNS (setup) | +0.123 ns | +0.179 ns |
| WHS (hold) | -0.076 ns (29 violations) | +0.056 ns (0 violations) |
| LUTs | 8,671 | 8,558 |
| FFs | 10,433 | 10,384 |
Post-route phys_opt resolved all 29 hold violations and improved setup slack by 56 ps. LUT/FF count reduced slightly by optimization passes.
8. DRC (Design Rule Checks)
184 checks performed. 0 errors, 0 critical warnings. Advisory/warning breakdown:
- DPIP-1 (input pipelining advisory): 68 — DSP input pipeline suggestions, acceptable for our architecture
- DPOP-1/2 (output pipelining): 18 + 19 — DSP PREG/MREG advisory, non-critical
- REQP-1839/1840 (BRAM async control): 20 + 20 — expected with async-reset BRAMs
- RPBF-3 (IO buffering): 8 — intentional for differential pairs
- CHECK-3 (report rule limit): 2 — tool display limit, not design issue
- IOSR-1 (IOB set/reset sharing): 1 — non-critical
9. Methodology Report
- DPIR-1 (async driver): 91 — known from async-reset architecture, mitigated by CDC modules
- HPDR-1 (port direction inconsistency): 8 — bidir USB data bus, expected
- LUTAR-1 (LUT drives async reset): 1 — watchdog reset path, intentional
- PDRC-190 (suboptimal sync register placement): 3 — minor, does not affect timing
- SYNTH-6 (RAM timing sub-optimal): 18 — inferred RAMs, all meeting timing
- TIMING-9 (unknown CDC logic): 1 — covered by explicit CDC synchronizers
- TIMING-28 (auto-derived clock in constraint): 8 — expected with MMCM-derived clocks
- TIMING-47 (false path between sync clocks): 4 — intentional XDC false_path constraints
10. Congestion
No congestion windows found above level 5. The design is well-placed with no routing pressure. XC7A200T provides ample routing resources at 6.36% LUT utilization.
11. Route Status
- Total logical nets: 31,136
- Routable nets: 22,026 — 22,026 fully routed (100%)
- Nets with routing errors: 0
12. Logic Level Distribution (Top 1000 Worst Paths)
| Clock | Period | Lvl 0 | Lvl 1 | Lvl 2 | Lvl 3 | Lvl 4 | Lvl 5 |
| clk_100m | 10.000 ns | 25 | 0 | 0 | 0 | 0 | 0 |
| clk_mmcm_out0 | 2.500 ns | 808 | 108 | 3 | 19 | 8 | 3 |
| ft601_clk_in | 10.000 ns | 0 | 0 | 0 | 2 | 1 | 23 |
The clk_100m domain has only level-0 paths in the top-1000 worst — CFAR pipeline fix reduced logic depth to register-to-register transfers. The 400 MHz DDC domain remains the most timing-critical area.
13. Build-Over-Build Comparison
| Metric | Build 21 (baseline) | Build 23 (CFAR, failed) | Build 24 (CFAR + pipeline) |
| WNS (ns) | +0.156 | -0.309 | +0.179 |
| WHS (ns) | +0.064 | — | +0.056 |
| LUTs | 6,192 | 8,668 (post-synth) | 8,558 |
| FFs | 9,064 | 10,411 (post-synth) | 10,384 |
| BRAM Tiles | 16 | 17 (post-synth) | 17 |
| DSP48E1 | 139 | — | 142 |
| Power (W) | 0.732 | — | 0.754 |
| Bitstream | Safe | Unsafe (timing fail) | Safe |
14. CFAR Integration Resource Cost
| Resource | CFAR Module Only | % of Device | Notes |
| LUTs | 2,229 | 1.66% | Sliding window sums, GO/SO cross-multiply, state machine, mode mux |
| FFs | 1,281 | 0.48% | Pipeline registers, window counters, sum accumulators, noise_sum_reg |
| RAMB36E1 | 1 | 0.27% | Magnitude buffer: 2048 entries × 17 bits |
| DSP48E1 | 3 | 0.41% | alpha×noise, leading cross-multiply, lagging cross-multiply |
Total CFAR cost: 2.82% of device LUTs, 0.48% of FFs, 0.27% of BRAM, 0.41% of DSPs. Minimal impact on headroom.
15. Verification Summary
| Test Suite | Tests | Checks | Status |
| FPGA regression (run_regression.sh) | 22 | — | 22/22 PASS |
| CFAR standalone (tb_cfar_ca.v) | 14 | 23 | 23/23 PASS |
| Digital gain (tb_rx_gain_control.v) | — | 32 | 32/32 PASS |
| Threshold fallback (tb_threshold_detector.v) | — | 22 | 22/22 PASS |
| System E2E (tb_system_e2e.v, Group 14) | 13 | 67 | 67/67 PASS |
| Real-data co-sim: Range FFT | 1 | 1,024 | 1024/1024 exact |
| Real-data co-sim: Doppler | 1 | 2,056 | 2056/2056 exact |
| Real-data co-sim: Full-chain | 1 | 2,057 | 2057/2057 exact |
| MCU regression | 20 | — | 20/20 PASS |
5,281 individual data checks across all RTL test suites. Zero failures. Real-data co-simulation confirms bit-exact match with Python golden reference across the entire signal processing chain.
Build 24 Artifacts
- Bitstream:
~/PLFM_RADAR_work/vivado_project/bitstream/radar_system_top_build24.bit (9.7 MB)
- Reports:
~/PLFM_RADAR_work/vivado_project/reports_build24/ (21 report files)
- Build log:
~/PLFM_RADAR_work/build24.log
- TCL script:
~/PLFM_RADAR_work/vivado_project/build24_cfar.tcl
Note: TCL crashed at step 13/15 (extract_files missing parameter) after all reports were generated. Non-critical scripting bug; all implementation, optimization, and bitstream generation completed successfully.
Board-day artifact inventory
| Artifact |
Source path |
Day-0 use |
Status / note |
| Production-target XDC | 9_Firmware/9_2_FPGA/constraints/xc7a200t_fbg484.xdc | Constraint source of truth for the production FPGA target | Tracked and validated after Build 16 cleanup port |
| FPGA programming flow | 9_Firmware/9_2_FPGA/scripts/program_fpga.tcl | Programs the device and reports DONE / INIT_COMPLETE / probes presence | Primary operator-facing programming script |
| Debug probe insertion flow | 9_Firmware/9_2_FPGA/scripts/insert_ila_probes.tcl | Used when generating or refreshing debug-capable images | Keep matched with the selected debug bitstream |
| FPGA regression runner | 9_Firmware/9_2_FPGA/run_regression.sh | Pre-arrival regression evidence for the tracked FPGA baseline | 22 / 22 passing on the current tracked branch (includes CFAR + E2E tests) |
| MCU regression harness | 9_Firmware/9_1_Microcontroller/tests/Makefile | Pre-arrival firmware regression evidence before flashing hardware | 20 / 20 passing on the current tracked branch |
| Bring-up logging macros | 9_Firmware/9_1_Microcontroller/9_1_1_C_Cpp_Libraries/diag_log.h | Defines the main first-power-on log vocabulary used over USART3 | Observation-only instrumentation layer |
| Board-day worksheet | docs/board-day-worksheet.html | Record pass/fail, measurements, and blockers during first sessions | Use with this page and the bring-up plan |
| Bring-up execution plan | docs/bring-up.html | Operator checklist, abort criteria, observability targets, and open risks | Primary readiness document |
Antenna Simulation Report
Status: Mostly current (historical Phase-0 context)
File: AERIS_Antenna_Report.pdf
Notes: Valid for 10.5 GHz patch-element simulation and array projection context. Treat as element-level evidence, not full current hardware bring-up sign-off.
Open PDF
Download
Python Simulation Report
Status: Legacy (needs refresh)
File: AERIS_Simulation_Report.pdf
Notes: Contains older architecture assumptions (e.g., XC7A100T-centric narrative). Use as historical reference only until Simulation Report v2 is published.
Open PDF
Download
FPGA implementation analysis
Status: Current engineering baseline — Build 24 (CFAR + pipeline fix)
Build 24 is the current production baseline. Includes CA-CFAR detector integration (CA/GO/SO modes) with pipelined noise computation for timing closure. Full 15-point report above. WNS +0.179 ns (improved from Build 21's +0.156 ns due to phys_opt improvements). DSP count 142 (+3 for CFAR alpha and cross-multiply). BRAM 17 (+1 for CFAR magnitude buffer).
Build 23 failed timing (WNS -0.309 ns) due to combinational critical path in CFAR noise computation. Root-caused and fixed by pipelining noise_sum_comb into a registered intermediate (noise_sum_reg), splitting the path across two clock cycles.
Build 21 (v0.1.4-build21) retained as pre-CFAR reference. Build 20 (v0.1.3-build20) and earlier retained for historical reference.
Latest Simulation Report (Recommended)
Status: Current baseline (v2)
File: AERIS_Simulation_Report_v2.pdf
Aligned to the active project baseline: XC7A200T target, firmware regression closure, FPGA regression/timing gates, USB range-profile integration, and TE0712/TE0713 split-target flow.
Open PDF
Download
Report Currency Notice
- The current routed production-target baseline is Build 24 with all timing constraints met. WNS +0.179 ns, WHS +0.056 ns, 142 DSP48E1, 17 BRAM, 0.754 W.
- All architectural gaps are closed: Gap 1 (CFAR) integrated as CA-CFAR detector with CA/GO/SO modes. Gaps 2–7 were closed prior to Build 21.
- FPGA regression: 22/22 pass (includes CFAR standalone + E2E CFAR config tests). MCU regression: 20/20 pass. Real-data co-sim: 3/3 exact match (5,137 data checks).
- CFAR integration cost: +2,229 LUTs, +1,281 FFs, +1 BRAM, +3 DSPs. Backward-compatible:
host_cfar_enable defaults to disabled.
- Detailed Build 24 engineering reports are on the remote Vivado host at
~/PLFM_RADAR_work/vivado_project/reports_build24/.
- The artifact inventory above is intended to stabilize day-0 execution even when detailed internal engineering reports stay outside the public docs site.
Antenna concept snapshot