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

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窗口下列出了当前设计中存在的所有 络节点,在其中选择需要调试的 络节点,进行调试。

图1 Netlist窗口

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

图2 Mark Debug

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

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

图4 Unmark Debug

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

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

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

图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配置,比如数据深度等

图7 打开Debug设置界面

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

图8 设置debug信

图9 未定义的时钟域

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

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

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

图11 设置总结

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

图12 保存debug设置

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

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

3.下载

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

工程设计综合

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

图14 工程综合

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

图15 完成综合

工程实现

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

图16 工程实现

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

图17 完成工程实现

生成*.bit文件

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

图18 生成*.bit文件

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

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

图19 Open Target

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

图20 Auto Connect

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

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

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

图22 Program Device

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

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

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

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

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

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

图24 hw_ila_1窗口

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

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

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

图26 设置LED_OBUF[7:0]

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

图27 设置trigger

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

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

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

单次触发

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

结束调试

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

图28 调试窗口

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

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

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

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

图31 修改 Trigger position in window到10

总结

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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

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

相关推荐