当前位置:文档之家› FPGA常用调试技术

FPGA常用调试技术

FPGA常用调试技术

?查看综合报告

?仿真测试

?在线调试

?其他工具

在FPGA 的开发过程中,对于设计中的问题,我们经常采用如下方法来定位错误。

查看综合报告

综合工具在分析代码时,对于可能出问题的

地方,会予以警告。

很多警告是无关紧要的,而某些警告则是需

要根据具体情况来确定它的严重程度的。

设计者可以通过某些警告发现工程中潜在的

错误。

这些潜在的错误往往是由于较差的coding

style或是人为疏忽导致的。

XST综合工具中几种常见的warning

1.未用端口

WARNING:Xst:1306 -Output

is never assigned.

这个warning表示一个称为

输出端口没有被赋值。

WARNING:Xst:647 -Input is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.

这个warning表示一个称为的输入端口没有在模块中使用,这个输入端口将

会被保留。

2.赋值与使用缺其一

WARNING:Xst:646 -Signal is

assigned but never used. This unconnected

signal will be trimmed during the optimization

process.

这个warning表示一个称为< clk12M_buf >

的信号在模块中被赋值,但是没有用于其它

逻辑的驱动,这个信号将会在optimization

环节中被优化掉。

WARNING:Xst:653 -Signal is used but never assigned. This sourceless signal will be automatically connected to value 00000000.

这个warning表示一个称为的信号在模块中被使用,但是它却没有被赋值。那么这个信号将被自动地把00000000做为驱动源。

3.存在latch

WARNING:Xst:737 -Found 1-bit latch for

signal . Latches may be generated

from incomplete case or if statements. We

do not recommend the use of latches in

FPGA/CPLD designs, as they may lead to

timing problems.

这个warning表示一个称为< clk6M >的信号

可能存在latch,这个latch可能是由于一个

不完整的case分支语句或是不完整的条件语

句而导致的。这个latch不会被优化,可能会

导致某些时序问题。

4.信号被优化为固定值

WARNING:Xst:1710 -FF/Latch

(without init value) has a

constant value of 0 in block

. This FF/Latch will be

trimmed during the optimization process.

这个warning表示一个称为< data_E_buf_7

>的信号在这个模块中拥

有一个固定值0。这个信号将会optimization

环节中被优化掉。

4.组合逻辑回环

WARNING:Xst:2170 -Unit debug_warning:

the following signal(s) form a combinatorial

loop: sum_AB<8>.

这个warning表示在debug_warning单元中

,有一个称为sum_AB<8>的信号导致了组

合逻辑回环现象。

综合器报告warning的情况有很多种。以上只列举了一些。建议大家根据具体的情况酌情考虑warning的严重程度。

debug_warning工程是一个具体的例子。大家可以把它放在XST下综合,根据综合的报告,检查电路中的错误,并尝试修正。

仿真测试

FPGA电路的仿真分为两种。一种是门级仿真,有的地方也称为行为仿真(Behavior Simulation );另一种是时序仿真,有的地方也称为布线后仿真(Post-Route Simulation )。

行为仿真是对综合所生成的门级电路模型仿真,由于它不包含各元件的时延信息,仿真的结果是一种理想的情况。

布线后仿真则针对布线后生成的具体电路,加入了各元件的时延信息,仿真的结果更趋近于实际情况。

门级仿真

下面介绍在ISE里,使用其自带的ISim仿真工具对设计做门级仿真。

1. 在打开的ISE工程中,找到

“Design”窗口,在工程所

对应的目标器件上右击,

单击“Design Properties”

选项。

2. 将其中的

simulator属性修

改成“ISim(

VHDL/Verilog)

”。

3. 点击“OK”,退出

此对话框。

4. 在工程中添加或新建源文件。这里,一共有两

种类型的文件,一种用于综合生成电路网表,另一种用于TestBench激励。

5. 选择“Design”窗口中的“Source for”属性,将

“Simulation”前面的圆圈点为实心,并且在其后的下拉列表中选用“Behavior”。因为我们将要进行的是行为仿真(门级仿真)。

6. 在“Design”窗口中,选中TestBench激励源文件。然

后在“Process”一栏中,双击“Simulate Behavior

Model”。如果源代码无误,则会弹出如下界面;否则将报告响应的错误,可根据错误提示修改代码后再试。

7. 默认情况下,ISim在自动加载时,会将激励文件运行

1us,并将被仿真文件中的端口信号的波形图写入

“Default.wcfg”文件中,并予以显示。

8. 如果需要添加观测信号,可以在最左侧的“Instance

and Processes”窗口中,选中信号所处的模块,然后在其右侧的“Object”窗口中选中待添加的信号并右击,点击“Add to Wave Window”。

9. 在波形界面中,波形的值是以二进制的形式显示的(

ISE11.3是这样的)。我们可以在某些信号上右击,设置“Radix”的属性,以选择合适的显示形式。

10. 为了方便查看和管理,我们可以将一些信号归为一组

。方法是同时选中这些信号,右击选择“New Group”

,还可以为这个组重命名。

11. 下面是工具栏中部分图标的作用。

图标用于放大波形的视图。

图标用于缩小波形的视图。

图标可以将波形调整为最佳视图。

图标可以复位波形图。

图标可以运行激励直至停止。

图标可以运行激励一段指定的时间,时间参数

在其后的方格中指定。

12. 我们可以将激励得到的波形图存储,以便于下次运行或查看。在菜单栏中选择“File”->“Save As”,将文件重新命名。下次在打开Isim 的时候,可以选择“Flies”->“Open”此文件查看波形或是重新运行激励。

在线调试

FPGA的在线调试,一般是在FPGA中嵌入一个类似于逻辑分析仪的模块,在满足触发条件时,对需观测的信号进行采集,并通过JTAG线缆将存储的波形上传至计算机,供调试人员检查。

这种技术的优势在于,它能帮助设计人员观测FPGA内部的信号状态,对定位错误非常有用。

目前的两大FPGA生产厂商就有均有其在线调试工具。Xilinx称之为ChipScope,Altera称之为SignalTap。

相关主题
文本预览