这一篇在干嘛?

总览三连的最后一篇,覆盖原书第 6~9 章:编译通过只是”代码不亏心”,还要仿真验证、下载上板、在线调试三连击才能真正交付。这一篇同时给你一张”报错地图”——TD 海量报错消息的前缀分类法,让你出问题时知道去哪查。前两篇:工程管理与 IP 生成器约束、编译流程与时序报告

仿真与下载:从波形验证到板上运行

片上调试工具集:看清芯片内部

信号完整性:HXT Margin Analysis 与眼图

报错排查:按前缀定位问题

仿真与下载:从波形验证到板上运行

仿真是下载前的最后一道工序:写 testbench 激励你的 RTL,在波形里核对每个信号的行为。TD 支持对接第三方仿真器跑功能仿真与时序仿真,工程 Simulation 分组下的文件就是干这个的。竞赛节奏下建议养成”先仿真后上板”的习惯——板上调试一轮的时间,往往够仿真排错十轮。

下载在 Tools → Programmer 里完成。流程是:连接下载器与开发板 JTAG 口 → Programmer 自动识别出 EG4S20 → 选择编译产出的 .bit 位流文件 → 点 Program。下载分两种模式,一定分清:

模式目标特点
JTAG 直接下载FPGA 片内 SRAM秒级生效,掉电即丢,调试期用
固化到 Flash外部配置芯片上电自动加载,需先生成/转换固化文件再烧写,交付前用

Programmer 编程下载界面

常见坑:

① 调试时忘了自己只是 JTAG 下载、没固化 → 第二天上电”代码没了”,其实是正常现象; ② 下载器驱动没装好 → Programmer 识别不到器件,先解决连接再谈下载; ③ 下载成功但板子行为不对 → 按第 2 篇的思路查约束(引脚/时钟),而不是反复重下位流。

片上调试工具集:看清芯片内部

TD 的工具集菜单(Tools)下挂着一排”透视镜”,按用途分四类:

看结构:Schematic Viewer

综合优化的每个中间过程都能生成对应逻辑电路图:Tools → Schematic Viewer 菜单里按当前流程进度选择 Read Design Schematic / Gate Schematic / Place&Route Schematic——分别对应”与器件无关的门级视图”、“按 EG4S20 结构优化后的 LUT/BRAM/PLL 视图”和”布局布线后的物理视图”。用它核对”我写的 RTL 被综合成了什么”,尤其是怀疑逻辑被优化掉的时候。

Tools 菜单打开 Schematic Viewer

看物理:Chip Viewer

Chip Viewer 展示布局布线后的全貌:资源使用率、每个单元摆在哪、全局布线走向、关键时序路径落在哪个物理区域。排查布线拥塞、分析关键路径为什么长时非常有用。

Chip Viewer 查看布局布线后的物理实现

在线抓信号:ChipProbe + ChipWatcher

这是 TD 版的”片上逻辑分析仪”。工作流程:在综合选项里对要观测的信号设置 Keep(防优化)→ ChipProbe 选中信号插入探针 → 重新编译下载 → ChipWatcher 在板上实时采样,设触发条件抓波形。相当于把示波器探头插进了芯片内部。

ChipWatcher 在线调试工作流程

运行时改数据:Eram Editor

Eram Editor 可以在 FPGA 运行中通过 JTAG 直接读出、修改片上 ERAM 的内容——调试查找表、系数表、缓存初值时,不用改 RTL 重新编译,当场改当场生效验证。

Eram Editor 在线读写片上存储

此外工具集里还有 I/O State Editor(运行时读写引脚电平,硬件排查利器)和 Encrypt Tool(位流加密,交付场景用),按需取用即可。

调试组合拳

典型排障顺序:Chip Viewer/设计报告定位”资源与路径” → ChipProbe+ChipWatcher 抓”信号波形” → Eram Editor 改”数据内容”验证猜想。三者合用能覆盖绝大多数板上问题。

信号完整性:HXT Margin Analysis 与眼图

高速接口(及高速时钟通道)的误码往往不是逻辑错误,而是信号质量问题:抖动、偏移让采样点落在危险区。HXT Margin Analysis 就是量化这份”余量”的工具:它沿两个维度扫描采样点——水平方向是采样时钟的相位偏移,垂直方向是电平判决阈值——统计每个采样位置的错误率,再画成图。

  • 眼图:横轴时间偏移 × 纵轴电平阈值的二维”误码地图”,中间张开的部分形如眼睛,眼睛张得越大,余量越足;
  • BATHTUB 曲线:沿单轴扫描得到的误码率剖面,形状像浴缸横截面,两边陡升代表信号建立/保持裕量不足。

眼图机理:采样偏移与电平阈值构成的误码地图

工具支持 Jtag Read(在线实时读链路统计)和 Raw Data(导出原始数据离线分析)两种工作模式,主界面选定通道与扫描范围后一键运行。

HXT Margin Analysis 主界面

竞赛阶段做普通逻辑设计用不到它,但如果你做多板高速互联、且板上出现”低概率误码”,这就是定位问题的正道。

报错排查:按前缀定位问题

TD 的 Message 窗口每天产出海量 Info/Warning/Error,全部消息都有统一格式的前缀编号,前缀本身就说明了”哪一环出的问题”。记住这张表,排查就有了导航:

前缀归属环节典型问题
USR用户工程源文件缺失、参数越界
HDL语言解析Verilog 语法/端口不匹配
RUN流程运行编译步骤执行失败
SYN综合RTL 无法推断、不支持结构
PHY物理优化/布局布线拥塞、无法布局
OPT逻辑优化优化过程冲突
TMR时序时序约束或违例相关
BIT位流生成位流生成/格式问题
PRG下载编程下载器连接、器件识别失败
ARC归档工程归档导出问题
KIT器件库器件支持包异常
UTL / GUI内部工具/界面软件自身异常,重启或查日志

排查心法:

1. Message 窗口从第一条 Error 往下读——后面的 Error 常是第一条的连带
2. 看前缀定位环节:SYN 问题改 RTL,PHY 问题看约束/策略包,PRG 问题查连接
3. 复制完整编号到《TD User Guide》第 9 章消息表检索,有逐条原因说明
4. 还不行:清编译结果从头全量重跑一遍,排除增量编译的陈旧状态

配合第 9 章的中间文件说明(工程目录里哪些是网表、哪些是报告、哪些是日志),你还能判断”该删哪些文件重跑”。至此,从建工程到调通板子的全部环节你都有地图了——剩下的就是动手把每一环跑通。

通关标准:

① 能完成”JTAG 下载验证 → 固化到 Flash”两种下载模式,并说清二者区别; ② 会用 ChipProbe+ChipWatcher 在线抓一组内部信号波形,至少用过一次 Schematic Viewer 或 Chip Viewer; ③ 遇到编译/下载报错,能按前缀表说出该去查 RTL、约束还是连接。