Commit Graph

224 Commits

Author SHA1 Message Date
Jason 8d7b6e04a0 fix(rtl): force FIR adder tree to fabric to free 30 DSPs for FFT butterfly on 50T
Add (* USE_DSP = "no" *) attribute to FIR lowpass adder tree registers
(add_l1, add_l2, add_l3, accumulator_reg) to prevent Vivado from
inferring DSP48E1 slices for pure addition operations.

Each fir_lowpass_parallel_enhanced instance was using 47 DSPs (32 for
multiply + 15 for the adder tree). The 15 adder-tree DSPs per instance
(30 total for I/Q pair) performed only PCIN+A:B additions with no
multiplier usage. On the XC7A50T with only 120 DSP48E1 slices, this
caused 100% DSP utilization and forced FFT butterfly complex multipliers
to spill into 18-level fabric carry chains (WNS=-1.103ns).

Moving these 36-bit additions to fabric CARRY4 chains (~9 CARRY4 per
add, ~2ns propagation) is well within the 10ns clock period and frees
~30 DSPs for the FFT engine to use native DSP48E1 multipliers.

Regression: 23/23 FPGA tests PASS (attribute is synthesis-only).
2026-04-07 14:45:47 +03:00
Jason d1927f150a fix(rtl): add DONT_TOUCH attribute to prevent opt_design from gutting 50T wrapper
Build attempt 10 produced a valid bitstream but with only 315 LUTs and
15 DSPs — opt_design removed all logic feeding unconnected _nc wires.
Adding (* DONT_TOUCH = "TRUE" *) on the u_core instance prevents
Vivado from optimizing away the internal radar pipeline logic.
2026-04-07 06:46:30 +03:00
Jason a0469cf1a0 feat(rtl): add radar_system_top_50t wrapper to solve IO pin overflow
The XC7A50T-FTG256 has only 69 usable IO pins but radar_system_top
declares 182 port bits. Previous attempts to remove unconstrained
ports via TCL caused opt_design to cascade-remove all driving logic.

New approach: radar_system_top_50t.v is a thin wrapper that:
- Exposes only the 64 physically-connected ports (ADC, DAC, SPI, clocks)
- Instantiates radar_system_top internally with full logic preserved
- Ties off unused inputs (FT601 bus, ext trigger) to safe defaults
- Leaves unused outputs internally connected (no IOBs created)

Updated build_50t_test.tcl to use radar_system_top_50t as top module
and removed the now-unnecessary port removal TCL code.
2026-04-07 06:37:04 +03:00
Jason 802dca2a73 fix(scripts): disconnect nets before removing unconstrained ports
remove_port fails on connected ports with [Coretcl 2-28]. Add
disconnect_net step before remove_port to properly detach the
port from its driving/driven nets in the synthesized netlist.
2026-04-07 06:23:31 +03:00
Jason 23eb88c6c7 fix(scripts): switch 50T build to non-project-mode impl + remove unconstrained ports
The 50T FTG256 has only 69 usable IO pins but the RTL declares 182 port
bits. launch_runs spawns a child process that cannot remove ports.
Switch to direct opt_design/place_design/route_design flow so we can
remove 118 unconstrained ports (FT601 USB, dac_clk, status/debug) from
the netlist before placement, avoiding [Place 30-58] IO overflow.
2026-04-07 06:17:03 +03:00
Jason 44460e7443 fix(constraints): change adc_pwdn from LVCMOS33 to LVCMOS25 for Bank 14 compatibility
The placer enforces a single VCCO per bank. LVDS_25 forces Bank 14
to VCCO=2.5V, which conflicts with LVCMOS33 (needs 3.3V). Changing
adc_pwdn to LVCMOS25 resolves [Place 30-372] bank incompatibility.
The AD9484 PWDN pin has CMOS-level thresholds (~0.8V), so 2.5V
output drives it correctly.
2026-04-07 06:07:47 +03:00
Jason 96856c42e0 fix(scripts): inject DRC waivers via TCL.PRE hook for impl_1 child process
set_property SEVERITY in the parent Vivado process does not propagate
to the child process spawned by launch_runs. Write a drc_waivers_50t.tcl
hook and attach it via STEPS.OPT_DESIGN.TCL.PRE so BIVC-1, NSTD-1,
and UCIO-1 are demoted to warnings inside the impl_1 run context.
2026-04-07 05:59:51 +03:00
Jason 7d90e5e7d6 fix(constraints,scripts): resolve 50T build failures — LVDS_25 + DRC waivers + unconstrained ports
Three issues prevented the 50T (FTG256) build from completing:

1. LVDS standard: LVDS_33 and LVDS do not exist on 7-series HR banks.
   Changed to LVDS_25 (the only valid differential input standard).
   IBUFDS inputs are VCCO-independent, so LVDS_25 works correctly even
   with Bank 14 VCCO=3.3V.

2. BIVC-1 DRC: Bank 14 has LVDS_25 (needs 2.5V) and LVCMOS33 adc_pwdn
   (needs 3.3V). Since all LVDS ports are inputs (IBUFDS only), the
   voltage conflict does not affect functionality. Demoted to warning.

3. Pin overflow: 113 ports vs 69 available FTG256 pins. The 118
   unconstrained port bits (FT601 unwired, status/debug unrouted,
   dac_clk unconnected) cause NSTD-1/UCIO-1 DRC errors. Demoted to
   warnings since these ports have no physical connections on this board.

Also added: CFGBVS/CONFIG_VOLTAGE settings, build_50t_test.tcl to repo.
2026-04-07 05:48:35 +03:00
Jason 30f56f3089 fix(constraints): use LVDS (not LVDS_33) for 50T Bank 14 ADC inputs
LVDS_33 is not a valid I/O standard on 7-series FPGAs. The correct
standard for LVDS inputs in HR banks with VCCO != 2.5V is LVDS, which
works with any VCCO for input-only buffers (IBUFDS). LVDS_25 requires
VCCO=2.5V exactly.

Note: the 50T FTG256 build still fails at placement due to pin overflow
(113 ports vs 69 available pins) — this is a pre-existing package
limitation unrelated to this fix.
2026-04-07 05:31:48 +03:00
Jason d50e51ada6 fix(rtl,constraints): change IBUFDS to IOSTANDARD DEFAULT for multi-target bank voltage compatibility
The IBUFDS primitives in ad9484_interface_400m.v hardcoded LVDS_25 and
DIFF_TERM TRUE, which overrode XDC constraints. On the XC7A50T (Bank 14
VCCO=3.3V), this caused a BIVC-1 DRC error: LVDS_25 requires VCCO=2.5V,
conflicting with adc_pwdn (LVCMOS33, VCCO=3.3V) in the same bank.

Changes:
- ad9484_interface_400m.v: IBUFDS parameters changed from LVDS_25/DIFF_TERM
  TRUE to DEFAULT/DIFF_TERM FALSE, delegating control to XDC per target
- xc7a50t_ftg256.xdc: Re-enable DIFF_TERM TRUE (safe now that RTL does not
  hardcode LVDS_25), update DRC Fix History with correct root cause
2026-04-07 05:17:11 +03:00
Jason 1f315a62c8 fix(scripts,constraints): handle empty STATS properties in build summaries, fix 50T XDC DRC errors
Build scripts (17-21): STATS.WNS/TNS/WHS/THS/TPWS from get_property can
return empty strings in Vivado 2025.2 after write_bitstream auto-launch.
Wrap in catch with N/A fallback. Guard all expr delta calculations and
signoff comparisons with [string is double -strict] checks.

XDC (xc7a50t_ftg256): Fix PLIO-9 by moving clk_120m_dac from C13 (N-type)
to D13 (P-type MRCC) — clock inputs require P-type MRCC pin. Fix BIVC-1 by
disabling DIFF_TERM on Bank 14 LVDS pairs to resolve VCCO conflict with
single-ended adc_pwdn (LVCMOS33) on T5 — requires external termination.
2026-04-07 05:07:14 +03:00
Jason 6657e117d6 fix(scripts): fix TCL command substitution and impl status race in all 5 build scripts
- Escape [extra] → \[extra\] to prevent TCL interpreting it as a command
  (Vivado resolved 'extra' to 'extract_files' causing ERROR [Common 17-163])
- Fix implementation status check: accept 'write_bitstream' status as success
  (Vivado auto-proceeds to write_bitstream, making status != '*Complete*')
- Wrap bitstream launch_runs in catch{} to handle already-running case

Fixes applied to: build17, build18, build19, build20, build21
2026-04-07 04:07:07 +03:00
Jason 1e284767cd fix(test,docs): remove dead xfft_32 files, update test infra for dual-16 FFT, add regression guide
- Remove xfft_32.v, tb_xfft_32.v, and fft_twiddle_32.mem (dead code
  since PR #33 moved Doppler to dual 16-pt FFT architecture)
- Update run_regression.sh: xfft_16 in PROD_RTL, remove xfft_32 from
  EXTRA_RTL and all compile commands
- Update tb_fft_engine.v to test with N=16 / fft_twiddle_16.mem
- Update validate_mem_files.py: validate fft_twiddle_16.mem instead of 32
- Update testbenches and golden data from main_cleanup branch to match
  dual-16 architecture (tb_doppler_cosim, tb_doppler_realdata,
  tb_fullchain_realdata, tb_fullchain_mti_cfar_realdata, tb_system_e2e,
  radar_receiver_final, golden_doppler.mem)
- Update CONTRIBUTING.md with full regression test instructions covering
  FPGA, MCU, GUI, co-simulation, and formal verification

Regression: 23/23 FPGA, 20/20 MCU, 57/58 GUI, 56/56 mem validation,
all co-sim scenarios PASS.
2026-04-07 02:51:48 +03:00
NawfalMotii79 04982a3176 Merge pull request #41 from joyshmitz/fix/tcl-portability
fix(scripts): make Vivado TCL scripts portable and update RTL file lists
2026-04-06 21:21:37 +01:00
NawfalMotii79 9b383fcb70 Merge pull request #42 from joyshmitz/fix/dual-subframe-consistency
fix(rtl,gui,cosim,formal): adapt surrounding files for dual 16-pt FFT
2026-04-06 21:21:11 +01:00
Serhii ffc89f0bbd fix(rtl,gui,cosim,formal): adapt surrounding files for dual 16-pt FFT (follow-up to PR #33)
- radar_system_top.v: DC notch now masks to dop_bin[3:0] per sub-frame so both sub-frames get their DC zeroed correctly; rename DOPPLER_FFT_SIZE → DOPPLER_FRAME_CHIRPS to avoid confusion with the per-FFT size (now 16)
- radar_dashboard.py: remove fftshift (crosses sub-frame boundary), display raw Doppler bins, remove dead velocity constants
- golden_reference.py: model dual 16-pt FFT with per-sub-frame Hamming window, update DC notch and CFAR to match RTL
- fv_doppler_processor.sby: reference xfft_16.v / fft_twiddle_16.mem, raise BMC depth to 512 and cover to 1024
- fv_radar_mode_controller.sby: raise cover depth to 600
- fv_radar_mode_controller.v: pin cfg_* to reduced constants (documented as single-config proof), fix Property 5 mode guard, strengthen Cover 1
- STALE_NOTICE.md: document that real-data hex files are stale and need regeneration with external dataset

Closes #39
2026-04-06 23:15:50 +03:00
Serhii 48b3847256 fix(scripts): make Vivado TCL scripts portable and update RTL file lists
- Replace hardcoded /home/jason-stone/ paths with [info script]-relative
  path resolution in all 9 scripts (build17-21, insert_ila_probes,
  program_fpga, ila_capture, run_cdc_and_netlist)
- Point constraint references at tracked XDC files instead of
  untracked synth_only.xdc
- Remove six phantom RTL entries (chirp_lut_init.v, fft_1024_forward.v,
  fft_1024_inverse.v, level_shifter_interface.v, lvds_to_cmos_400m.v,
  usb_packet_analyzer.v)
- Add six existing modules to file lists (rx_gain_control.v,
  mti_canceller.v, cfar_ca.v, fpga_self_test.v, xfft_16.v,
  adc_clk_mmcm.v)

Closes #38
2026-04-06 22:53:42 +03:00
NawfalMotii79 22758fa370 Merge pull request #40 from joyshmitz/docs/readme-contributing
docs: fix FPGA part number, dead paths, and add CONTRIBUTING.md
2026-04-06 18:09:39 +01:00
Serhii 7eb81668e0 docs: fix FPGA part number, dead paths, and add CONTRIBUTING.md
- README: XC7A100T → XC7A50T to match the XDC correction note
  (constraints/xc7a50t_ftg256.xdc lines 9-11)
- README: replace dead /10_docs/ paths with tracked locations
- README: update contributing section to reference CONTRIBUTING.md
- Add minimal CONTRIBUTING.md with repo layout and PR checklist

Closes #37
2026-04-06 20:06:56 +03:00
NawfalMotii79 73d6d9b80a Add files via upload 2026-04-05 11:44:10 +01:00
NawfalMotii79 0f5a04f8a7 Delete 4_Schematics and Boards Layout/4_7_Production Files directory 2026-04-05 11:39:13 +01:00
NawfalMotii79 8e0a90fcf5 Add files via upload 2026-04-05 05:05:10 +01:00
NawfalMotii79 10e0914d60 Delete docs/assets/img/Nawfal.png 2026-04-04 21:04:42 +01:00
NawfalMotii79 168b9b2ae0 Revise index.html for AERIS-10 documentation site
Updated the HTML structure and content for the AERIS-10 documentation site, including new sections for engineering documentation and navigation links.
2026-04-02 01:42:50 +01:00
NawfalMotii79 a343c856e3 Update image links to use raw GitHub URLs 2026-04-02 01:35:17 +01:00
NawfalMotii79 7ffd1f6b10 Revise README for clarity and image updates
Updated images and text for clarity and consistency in the README.
2026-04-02 01:31:23 +01:00
NawfalMotii79 f12405e90e Add files via upload 2026-04-02 01:24:58 +01:00
NawfalMotii79 72411006ab Add files via upload 2026-04-02 01:23:36 +01:00
NawfalMotii79 1beb7dc1ad Revise index.html with new images and metadata
Updated metadata and added new images for the AERIS-10 project. Adjusted GitHub links and footer information.
2026-04-02 01:14:06 +01:00
NawfalMotii79 49e22b8bc9 Add files via upload 2026-04-02 01:12:19 +01:00
NawfalMotii79 c7fa099293 Add files via upload 2026-04-02 01:04:55 +01:00
NawfalMotii79 81bf4cabbb Delete 8_Utils directory 2026-04-02 01:03:40 +01:00
NawfalMotii79 cfbe6d2bd4 Fix image paths in README.md
Updated image paths in README.md to use absolute paths.
2026-04-02 00:58:22 +01:00
NawfalMotii79 e4fa118b50 Refactor index.html for improved layout and SEO
Updated the HTML structure and styles for the AERIS-10 documentation page, enhancing the layout and adding meta tags for better SEO.
2026-04-02 00:57:10 +01:00
NawfalMotii79 c91e4b4252 Delete index.html 2026-04-02 00:56:29 +01:00
NawfalMotii79 b7f40445a4 Add files via upload 2026-04-02 00:40:14 +01:00
NawfalMotii79 2ec636ef58 Update index.html for absolute paths and styles
Updated links to use absolute paths and added fallback inline styles for the documentation site.
2026-04-02 00:32:41 +01:00
NawfalMotii79 a6205bd768 Add initial HTML structure for AERIS-10 project
Initial commit of the AERIS-10 project website, including HTML structure, styling, and content for radar system overview, specifications, architecture, and documentation.
2026-04-02 00:01:44 +01:00
NawfalMotii79 bbd0556200 Delete index.html 2026-04-01 23:53:26 +01:00
NawfalMotii79 86681127b0 Add index.html for AERIS-10 documentation
Initial commit of the AERIS-10 Engineering Documentation site.
2026-04-01 22:38:42 +01:00
NawfalMotii79 d8d1d34a35 Add files via upload 2026-03-31 03:21:54 +01:00
NawfalMotii79 484bf0907c Delete 4_Schematics and Boards Layout/4_6_Schematics/PowerBoard/PowerBoard.brd 2026-03-31 03:21:09 +01:00
NawfalMotii79 f5d89fd710 Fix badge syntax in README.md 2026-03-29 10:50:46 +01:00
NawfalMotii79 a3d0d3fb0c Fix image formatting in README.md 2026-03-29 08:47:06 +01:00
NawfalMotii79 46c37e17d4 Merge pull request #33 from JJassonn69/fix/staggered-prf-dual16-doppler
Fix staggered-PRF Doppler path using dual 16-point FFT sub-frames
2026-03-27 22:09:08 +01:00
Jason a577b7628b Fix staggered-PRF Doppler processing with dual 16-point FFTs 2026-03-27 23:05:28 +02:00
NawfalMotii79 2a89713c21 Add sponsors section to README 2026-03-27 03:40:34 +01:00
NawfalMotii79 f5765f6c2c Add files via upload 2026-03-27 03:36:05 +01:00
NawfalMotii79 02eb0b99cf Delete 14_RADAR_Old_version directory 2026-03-22 01:32:49 +00:00
NawfalMotii79 93c75d19df Merge pull request #30 from JJassonn69/main
FPGA file on Original Repository
2026-03-21 20:02:05 +00:00