Vivado软件 调试工具的使用初步

上一篇文章Vivado软件的使用中简单介绍了创建,编译,下载一个工程等基本开发流程,本文将在此基础上,初步介绍调试工具ILA(Integrated Logic Analyzer),集成内部逻辑分析仪的使用。相对于仿真而言,调试工具具有实时性,基于综合后的真实电路的特点。调试工具实际上增加了额外的电路,消耗FPGA资源。ISE中的调试工具为Chipscope,在Vivado中不再使用Chipscope,而是使用ILA替代了Chipscope相关功能。

本文用到的flow_led_top代码如下:

1.工程中加入调试信号(Debug Nets)

以下是两种常用的添加调试信号的方法:

在Verilog HDL文件中直接添加,特点是防止信号被优化,最大可能保留信号原本的名称

在综合后的网表(Netlist)中添加,特点是可以在任何层次结构中添加信号,十分灵活,但可能会被优化,并且不需要源HDL文件(即只有网表的情况)

实际上,在Vivado软件中,调试(debug)还可以使用Tcl命令,直接修改*.xdc文件,和添加ILA( Integrated Logic Analyzer) IP核完成,之后会在Vivado软件调试工具的使用进阶中介绍。

1.1 在Verilog HDL文件中直接添加

在Verilog代码中,可以直接将变量(wire或者reg)加进调试网络。方法是在声明变量前添加(* mark_debug = “true” *)。示例如下:

(* mark_debug = “true” *) wire done;

(* mark_debug = “true” *) reg cnt;

(* mark_debug = “true” *)也可以添加在input/output前,示例如下:

1.2 在综合后的网表中添加

在工程综合后,点击SYNTHESIS > Open Synthesized Design。并在右边打开的窗口中找到Netlist,如图1所示。Netlist窗口下列出了当前设计中存在的所有网络节点,在其中选择需要调试的网络节点,进行调试。

Vivado软件 调试工具的使用初步

图1 Netlist窗口

右键单击任意网络节点,点击Mark Debug,如图2所示。该网络节点会出现如图3所示的小甲虫标记。

Vivado软件 调试工具的使用初步

图2 Mark Debug

Vivado软件 调试工具的使用初步

图3 已经被Mark Debug过的网络节点前出现小甲虫图标。

对于已经选中Mark Debug的网络节点,也可以取消调试。右键单击该网络节点,选择Unmark Debug即可,如图4所示。

Vivado软件 调试工具的使用初步

图4 Unmark Debug

或者在综合后,Flow Navigator > SYNTHESIS > Open Synthesized Design > Schematic下打开的原理图(Schematic)中通过右键单击选中线路,添加Mark Debug信号,和Unmark Debug信号,如图5所示。

Vivado软件 调试工具的使用初步

图5 在原理图中加入调试信号

在打开SYNTHESIS后,点击 Windows > Debug,即可出现如图6所示的Debug窗口,在这里可以观察到已经mark debug的信号。

Vivado软件 调试工具的使用初步

图6 Debug窗口

2.创建 ILA  Debug Core

在完成综合后,点击Flow Navigator > SYNTHESIS > Open Synthesized Design > Set Up Debug,就会弹出如下所示Set Up Debug窗口,点击Next。设置(注意这里无法设置VIO,IBERT和JTAG-to-AXI-Master)主要体现在以下3个方面:

选中网络,并连接到debug core

将选中debug的网络关联到时钟域下

选择额外的debug core配置,比如数据深度等

Vivado软件 调试工具的使用初步

图7 打开Debug设置界面

图8所示设置debug信号,注意信号的时钟域(clock domain),可以通过右键单击信号设置时钟域(Select Clock Domain),设置完成后点击Next。图9所示为debug信号undefined的时钟域。

Vivado软件 调试工具的使用初步

图8 设置debug信号

Vivado软件 调试工具的使用初步

图9 未定义的时钟域

在图10所示窗口中设置数据采集深度,勾选Capture control和Advanced trigger,点击Next。Advance trigger(高级触发模式)下可以创建和使用复杂的触发序列。Capture control(捕获控制)支持基本触发(时间点捕获)外的捕获类型,比如信号变化的间歇捕获。

Vivado软件 调试工具的使用初步

图10 Debug设置数据深度,触发和捕获

图11所示是设置Debug的总结,如果发现需要修改处,可以点击Back返回到对应界面修改。检查后,点击Finish结束设置。

Vivado软件 调试工具的使用初步

图11 设置总结

注意:在设置完成后,需要点击图12中红框的图标,保存调试设置在约束文件中。

Vivado软件 调试工具的使用初步

图12 保存debug设置

保存后,再次查看在源文件的Constraints > constrs_1 可以看到flow_led_top.xdc文件中除了管脚约束外,还有关于debug的信息,如图13所示。

Vivado软件 调试工具的使用初步

图13 *.xdc文件中新增关于debug的信息

3.下载

按照之前在Vivado软件的使用中生成*.bit文件的步骤,进行工程的综合与实现。

工程设计综合

在Flow Navigator下,点击SYNTHESIS > Run Synthesis,进行综合,如图14所示。

Vivado软件 调试工具的使用初步

图14 工程综合

弹出如图15所示的窗口,表示已经成功综合。

Vivado软件 调试工具的使用初步

图15 完成综合

工程实现

点击 IMPLEMENTATION > Run Implementation,进行工程布局布线。

Vivado软件 调试工具的使用初步

图16 工程实现

出现图17所示窗口,说明工程成功实现。

Vivado软件 调试工具的使用初步

图17 完成工程实现

生成*.bit文件

点击PROGRAM AND DEBUG > Generate Bitstream,生成*.bit文件,如图18所示。

Vivado软件 调试工具的使用初步

图18 生成*.bit文件

下载*.bit文件和调试文件( debug probe file, *.ltx)

点击PROGRAM AND DEBUG > Open Hardware Manager,有1,2两种方法open target,如图19所示。

Vivado软件 调试工具的使用初步

图19 Open Target

点击Open Target,出现图20所示窗口,点击Auto Connect。

Vivado软件 调试工具的使用初步

图20 Auto Connect

Auto Connect后,Hardware Manager窗口会出现FII-PRX100-D芯片,xc7a100t,如图21所示。

Vivado软件 调试工具的使用初步

图21 连接到FII-PRX100-D芯片

如图22所示,点击xc7a100t,再点击Program Device。

Vivado软件 调试工具的使用初步

图22 Program Device

如图23所示,在弹出的窗口里选择正确的*.bit文件以及*.ltx文件(见图中绿色框内)。选择完后,点击Program,即可完成下载。

注意:这一步和之前*.bit文件的下载有区别,需要添加上*.ltx文件,否则无法完成调试。

*.ltx文件存放的路径与*.bit文件一致,都是在“ flow_led/flow_led.runs/impl_1/ ”下。

Vivado软件 调试工具的使用初步

图23 选择正确的*.bit文件和*.ltx文件

4.配置和使用ILA触发条件

成功下载后,可以看到 Vivado 的界面打开了一个新的 hw_ila_1 窗口,如图24所示。

Vivado软件 调试工具的使用初步

图24 hw_ila_1窗口

图25所示为设置hw_ila_1触发条件(trigger setup)和窗口抓取模式(capture mode)。Trigger Setup右边的窗口Capture Setup比较少用,在之后的调试工具使用进阶中再做介绍。

Vivado软件 调试工具的使用初步

图25 设置hw_ila_1窗口抓取模式和触发条件

在触发条件设置(trigger setup)窗口中,点击” + “,选择LED_OBUF[7:0],如图26所示。

Vivado软件 调试工具的使用初步

图26 设置LED_OBUF[7:0]

图27所示为设置触发的条件为LED_OBUF[7:0] == FE。即在operator上选择” == “,value上选择” FE “。那么预期触发的时刻应该是在LED0点亮时。如果选择多个信号,还可以点击红框中所示图标,将多个触发条件的组合逻辑作为最终触发条件,可选的逻辑有AND,OR,NAND,NOR。

Vivado软件 调试工具的使用初步

Vivado软件 调试工具的使用初步

图27 设置trigger

图28所示为ILA调试窗口,有以下几个比较重要的快捷图标:

添加观察信号,注意只有被添加到调试的信号才可以在ILA的窗口观察到

重复触发,一旦满足触发条件,会不断重新抓取信号,有时不便于观察信号

单次触发

立即触发(即使没有触发条件)

结束调试

这里,因为设置好了触发条件,点击3,选择单次触发,ILA抓取到的信号如图29所示。

Vivado软件 调试工具的使用初步

图28 调试窗口

从图29所示的窗口中可以看到抓到的波形中有一条红色竖线,红线后,LED_OBUF[7:0]的值是FE。

Vivado软件 调试工具的使用初步

图29 抓取LED_OBUF[7:0] == FE

红线的位置可以更改,通过修改Capture Mode Settings(抓取模式设置)中的 Trigger position in window。比较图29所示的设置为512/1024,基本上在捕捉信号的中心点,试着将Trigger position in window修改为10,即红线的位置应该是10/1024,比较靠前,修改后单次触发,其结果如图31所示。

Vivado软件 调试工具的使用初步

图30 抓取模式设置(Capture Mode Setting)

Vivado软件 调试工具的使用初步

图31 修改 Trigger position in window到10

总结

通过以上的步骤学习 Vivado调试工具的初步用法。ILA 一般是片上调试(on-chip debugging)工具的首选,因为ILA易于使用,并可以提供高级功能,实现复杂的调试,关于ILA工具的进阶内容,将在Vivado软件调试工具的使用进阶中详细描述。

来源:智芯融

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月27日
下一篇 2021年7月27日

相关推荐