
PLFM_RADAR 如何用 build_50t.tcl 构建 50T 生产板 bitstream 并理解其 DRC 豁免【免费下载链接】PLFM_RADAROpen-source, low-cost 10.5 GHz PLFM phased array RADAR system项目地址: https://gitcode.com/GitHub_Trending/pl/PLFM_RADAR本文针对一个具体任务为 AERIS-10 雷达的 50T 生产板XC7A50TFTG256 封装生成可烧录的 FPGA bitstream并弄明白 build_50t.tcl 里为什么要把四条 DRC 检查降级为 Warning。脚本入口是 scripts/50t/build_50t.tcl约束文件在 constraints/ 目录构建需要在 Vivado 的 batch 模式下运行。构建前脚本替你固定了哪些文件与配置build_50t.tcl开头的一组set决定整个构建的输入不需要手动改参数配置项值说明fpga_partxc7a50tftg256-250T 生产板器件top_moduleradar_system_top_50t50T 专用顶层 wrapperproject_dirbuild_50t/相对于9_Firmware/9_2_FPGA/由脚本自动创建约束文件constraints/xc7a50t_ftg256.xdcconstraints/adc_clk_mmcm.xdc主 XDC MMCM 补充约束verilog_defineFFT_XPM_BRAM设在 sources 上的编译宏文档未进一步解释其作用RTL 收集方式是取9_Firmware/9_2_FPGA/目录下的全部.v文件add_files -norecurse并跳过*_te0712_*和*_te0713_*两个 Trenz 开发板 wrapper避免误用 dev 顶层。radar_system_top_50t.v 是理解整个 50T 构建的关键文件。XC7A50T-FTG256 只有 69 个可用 IO而核心顶层radar_system_top声明了很多在 50T 板上没有物理连接的端口FT601 USB 3.0 相关、status/debug 输出等。这个 wrapper 只暴露板上实际连接的端口并把未用输入系到固定电平、未用输出接到_nc内部线完整雷达流水线仍然保留在网表中。它同时通过.USB_MODE(1)强制选择 FT2232H 8 位 USB 2.0 接口245 Synchronous FIFO 模式60 MHzCLKOUT。constraints/README.md 明确提醒USB_MODE 是编译期选项不能运行时切换50T 生产构建必须使用radar_system_top_50t作为顶层而不是直接使用radar_system_top。adc_clk_mmcm.xdc是补充约束文件头注明须在主生产 XDC 之后加入工程脚本里正是这个顺序它处理 MMCM ADC 时钟路径的 CDC 约束。执行构建在 FPGA 源码目录下运行脚本头注释给出的用法cd 9_Firmware/9_2_FPGA vivado -mode batch -source scripts/50t/build_50t.tcl 21 | tee build_50t/vivado.log需要注意的副作用脚本用create_project $project_name $project_dir -part $fpga_part -force建工程-force意味着已有的同名build_50t/工程会被覆盖重建write_bitstream -force会强制覆盖目标位置的旧 bitstream 文件。脚本的执行流程是launch_runs synth_1 -jobs 8综合 →open_run synth_1打开综合结果 →在当前进程直接执行opt_design -directive Explore、place_design -directive ExtraNetDelay_high、phys_opt_design -directive AggressiveExplore、route_design -directive AggressiveExplore再跟两遍phys_opt_design -directive AggressiveExplore→write_bitstream。实现阶段不走launch_runs/wait_on_run的 run 机制而是直接在父进程里下命令。脚本注释给出了原因DRC waiver 在父 Vivado 上下文中设置直接用命令跑实现步骤才能保证place_design等命令与 waiver 处于同一个 Vivado 上下文、豁免始终生效。这也是为什么脚本在open_run synth_1之后又重新执行了一遍四条set_property SEVERITY命令。理解四条 DRC 豁免脚本把以下检查从 Error 降级为 Warning每一条都对应 50T 硬件的具体特征DRC 检查触发原因为什么在 50T 上可以降级BIVC-1Bank 14 电压冲突Bank 14 的 LVDS_25 输入迫使 VCCO2.5Vadc_pwdn已改为 LVCMOS25 与之匹配。7 系列上 IBUFDS 输入缓冲与 VCCO 无关BIVC-1 主要针对 OBUFDS 输出而该 Bank 只有 LVDS 输入。脚本注释说明现在应不会再触发保留 waiver 是以防未来 XDC 修改重新引入冲突的安全网NSTD-1/UCIO-1端口未约束共享 RTL 里的 FT601 USB 端口USB_MODE1时被 generate 块停用、dac_clkDAC 时钟由 AD9523 直供不经 FPGA、以及全部 status/debug 输出在 FTG256 封装上没有物理引脚只能内部 tie-offPLIO-9时钟输入用了 MRCC 对的 N 型引脚FT2232H 的 60 MHzCLKOUT被原理图布到 C4IO_L12N_T1_MRCC_35是 MRCC 对的 N 型引脚时钟输入理想上应用 P 型引脚但 IBUFG 在两侧都能正确工作且原理图布线无法更改与PLIO-9配套还有一条直接命令脚本第 119 行set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets {ft_clkout_IBUF}]Vivado 的 Place 30-876 检查要求时钟输入走专用时钟布线资源时钟落在 N 型 MRCC 引脚时必须设置CLOCK_DEDICATED_ROUTE FALSE才能完成布局。这条属性只压制 DRC 检查本身时钟仍然经 IBUFG 进入时钟网络。xc7a50t_ftg256.xdc 头部的 DRC Fix History 记录了这些检查的来龙去脉clk_120m_dac曾从 C13N 型移到 D13P 型 MRCC来修 PLIO-9adc_pwdn从 LVCMOS33 改成 LVCMOS25 来修 BIVC-1/Place 30-372。也就是说 waiver 是先修硬件约束、再留降级兜底的组合策略而不是放任告警。结果验证与产物位置构建的成败可以直接从日志和文件判断综合失败会立即终止脚本读取synth_1的 STATUS若不含*Complete*打印CRITICAL: SYNTHESIS FAILED: ...并以exit 1退出不会继续到实现和 bitstream 阶段。bitstream 是否存在成功后输出Bitstream: path (NNN KB)路径固定为build_50t/bitstream/radar_system_top_50t.bit若文件不存在则打印WARNING: Bitstream not generated!脚本本身只打印警告不视为错误退出。末尾摘要打印 Synth/Impl/Bit 三个阶段耗时以及WNS/WHS单位 ns。WNS/WHS 读取失败时输出N/A——文档没有给出这两个指标必须达到的固定数值请结合 timing 报告自行核对不要只依赖终端打印。报告文件脚本把报告写到build_50t/reports_50t/包括01_timing_post_synth.rpt、01_utilization_post_synth.rpt综合后02_timing_summary.rpt、04_utilization.rpt最终时序与资源06_drc.rptDRC 结果确认四条检查以 Warning 形式出现而不是 Error07_io.rptIO 分配限制与冲突说明Bank 14 电压存在文档冲突xc7a50t_ftg256.xdc 头部注释和 build 脚本都按 LVDS_25 迫使 VCCO2.5V 描述 Bank 14而 constraints/README.md 的 Bank 电压表仍写 Bank 14 3.3VADC LVDS_33。两处描述不一致本文以 XDC 与 build 脚本的当前写法为准如果你要基于 Bank 电压做修改先确认哪份是最新的。status/debug 无读回通道50T 板上 FPGA→STM32 只有 DIG_5/6/7 三根状态输出。XDC 注释给出三条扩展路径在 DIG_5/6/7 上复用状态位、走 SPI 接口、或等 FT601 布线后走 USB。FT601 在 50T 上不可用FT601 端口在 wrapper 中被系到 inactive 状态50T 只有 FT2232H USB 2.0 数据通路这与 200T dev 板FT60132 位是两套构建路径不要混用。bitstream 生成并通过06_drc.rpt、02_timing_summary.rpt核对后仓库的 scripts/utils/ 目录还包含program_fpga.tcl、ila_capture.tcl等脚本可用于后续烧录与 ILA 抓取具体用法以这些文件自身注释为准。【免费下载链接】PLFM_RADAROpen-source, low-cost 10.5 GHz PLFM phased array RADAR system项目地址: https://gitcode.com/GitHub_Trending/pl/PLFM_RADAR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考