ILA的使用

摘要:介绍ILA必须掌握的两种使用,ILA的高级使用Capture Control和Advanced Trigger(懂了后再来补)

1.添加IP ILA

Number of Probes添加要观察的信号数量;

Sample Data Depth指的是调试的时候能够观察到的调试图的大小、数据的多少,1K选择1024,16K选择16384;

Number of Comparators,我一般选择默认2

Capture Control和Advanced Trigger可以默认勾选,暂时还不太清楚怎么用。

Probe_Ports里面设置每个信号的比特位宽。其余的地方默认就好了。

2.NetList里添加 ILA

比较好用的一种方法,可以在打开了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里面写点东西,一般按照提示默认写进去就行。

3.调试

两种加ILA的方法在调试的时候是一样的,至于Capture Control和Advanced Trigger怎么用,以后再来补。

生成比特后,导入bit和ila;

 右下角的框里面可以添加要变化的信号(可以多个信号组合在一起观察),对他的数值、上升沿、下降沿、高电平、低电平进行选取;选取完成了之后点击左下角三角形图标运行;如果界面刷新,表明状态被获取到了,如果一直抓不到,说明该信号没有此数值;

这里面需要知道的是,ILA也是可以抓数据,导出数据,然后用python或者matlab进行分析的。 

参考:

工具篇_Vivado软件的硬件调试与仿真(ILA集成逻辑分析仪、Simulator使用)_哔哩哔哩_bilibili

VIVADO学习笔记之--DONT_TOUCH_有钱挣的地方就是江湖的博客-CSDN博客_vivado防止寄存器被优化掉

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值