隔离
FPGA 设计中错误的解决办法
如果您的
FPGA 设计无法综合或者没能按预期在开发板上正常工作,原因往往不明,
要想在数以千计的
RTL 和约束源文件中找出故障根源相当困难,而且很多这些文件还可能
是其他设计人员编写的。考虑到
FPGA 设计迭代和运行时间的延长,设计人员应该在设计流
程的早期阶段就找出可能存在的诸多错误,并想方设法重点对设计在开发板上进行验证。
在特定条件下采用更智能的技术来隔离特定错误,找到问题电路的源头并渐进式修复
错误,这很重要。为了节省时间,您可以对时钟、约束和模块级接口进行初步设置检查以确
保符合设计规范,这样就不必在综合与布局布线
(P
Synopsys 公司的 Synplify Premier 和 Synplify Pro FPGA 设计工具以及 Identify
RTLDebugger 等产品能帮助设计人员完成上述工作。这些工具的特性使得设计人员能快速隔
离错误,有效缩短运行时间,并减少开发板启动所需的迭代次数。
精确找到开发板上的问题
如果开发板出现明显的功能性错误,要缩小查找问题根源的范围可能会相当困难。为了
进行设计调试,我们应当创建附加电路并保留某些节点,以便我们对设计运行时得到的数
据进行探测、检查和分析。下面我们就看看如何用板级调试软件来查找错误。
按下列四步法并利用
RTL 调试器,您能精确查找问题,并对信号和关注的条件采样,
然后将观察结果关联至原始
RTL,从而将问题锁定在 RTL 规范或约束设置范围内。
第一步:指定探测。在
RTL 中明确要监控哪些信号和条件。在此要声明您所感兴趣的观
察点
(要观察的信号或节点)和断点(RTL 控制流程声明,如 IF、THEN 和 CASE 等)。
第二步:通过探测构建设计。利用附加的监控电路
——即用于根据您的监控要求捕捉并
导出调试数据的智能内部电路仿真器
(IICE)——对 FPGA 设计进行综合。
第三步:分析和调试。设计综合完成之后,运行设计并用
RTL 调试器观察数据。在开发
板上运行测试时,观察点和断点共同触发数据采样,使您能在您所关注的非常明确的条件
下观察并调试特定节点的电路的行为。您可将观察到的采样数据写入
VCD 文件并将其关联
到
RTL.
第四步:渐进性修复错误
(incrementaLfix)。一旦找到了错误所在,就可以通过分级、渐
进式流程在
RTL 或约束中渐进地进行修复。
时序和功能性错误的可视检查
FPGA 设计和调试工具还有一大优点,就是能显示 RTL 和网表级原理图。举例来说,具
有互动调试功能的原理图查看器能够显示设计的
RTL 和网表原理图,便于您进行观察并将
时序报告和
VCD 数据(设计在开发板上运行时产生)关联至 RTL 源文件。查看器包含一个
RTL 视图,用来以图示的方式描述设计。该视图在综合 RTL 编译阶段后提供,由技术独立
的加法器、寄存器、大型多路选择器和状态机等组件构成。通过
RTL 原理图,您可以交叉探
测原始
RTL,对不符合预定规范的设计进行调整,同时也可以探测到约束编辑器,从而更
简便地更新和指定约束
(图 1)。