background image

隔离

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)。