赞
踩
摘要:介绍ILA必须掌握的两种使用,ILA的高级使用Capture Control和Advanced Trigger(懂了后再来补)
Number of Probes添加要观察的信号数量;
Sample Data Depth指的是调试的时候能够观察到的调试图的大小、数据的多少,1K选择1024,16K选择16384;
Number of Comparators,我一般选择默认2
Capture Control和Advanced Trigger可以默认勾选,暂时还不太清楚怎么用。
Probe_Ports里面设置每个信号的比特位宽。其余的地方默认就好了。
比较好用的一种方法,可以在打开了Synthesis之后在网表里面右键然后Mark Debug,也可以在右边的图里面对线右键然后Mark Debug。
但是呢,有的信号比特在综合的时候会被优化掉,这个时候可以用另一种方法;在要观察的信号前面添加mark_debug(在reg、wire或者logic信号前面添加)
- (* mark_debug = "true" *)
-
- 或者
-
- (* dont_touch = "true" *)
-
- 场景1:保留等效寄存器
- 最典型的场合是为降低扇出,对高扇出的寄存器进行复制,之后对复制的寄存器和原始寄存器添加DONT_TOUCH属性。因为这些寄存器是等效寄存器,这样做可以保证在综合阶段哲学等效寄存器不会被合并。
-
- 场景2:保留观测寄存器
- 为了观测某一个信号(需要将其添加到ILA中),可能会出现在综合后的网表中无法找到的情况。这时候有些工程师会选择用DONT_TOUCH,使得该寄存器可以被保留在综合后的网表中。
-
- 场景3:保留冗余逻辑
- 举一个简单的例子,两个LUT级联,每个LUT的功能都是取反,这样最后一级LUT的输出与第一级LUT的输入是完全一样的,差别在于延迟。而这种延迟又是设计刻意为之(暂且不管什么原因)。抛开延迟而言,这两个LUT其实是冗余逻辑,可以被优化掉的。一旦使用了DONT_TOUCH就可以保证它们不会被移除。
类似这样:
无论是netlist还是mark_debug添加好了之后,可以在"open synthesis design" 下 "set up debug"
基本可以按照默认一直Next,这里注意加的信号对应的时钟是否正确(clock domain)
下面两个用到了就要勾选
添加ila的时候到时候可能需要在XDC里面写点东西,一般按照提示默认写进去就行。
两种加ILA的方法在调试的时候是一样的,至于Capture Control和Advanced Trigger怎么用,以后再来补。
生成比特后,导入bit和ila;
右下角的框里面可以添加要变化的信号(可以多个信号组合在一起观察),对他的数值、上升沿、下降沿、高电平、低电平进行选取;选取完成了之后点击左下角三角形图标运行;如果界面刷新,表明状态被获取到了,如果一直抓不到,说明该信号没有此数值;
这里面需要知道的是,ILA也是可以抓数据,导出数据,然后用python或者matlab进行分析的。
工具篇_Vivado软件的硬件调试与仿真(ILA集成逻辑分析仪、Simulator使用)_哔哩哔哩_bilibili
VIVADO学习笔记之--DONT_TOUCH_有钱挣的地方就是江湖的博客-CSDN博客_vivado防止寄存器被优化掉
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。