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进行处理,非常感谢!