当前位置:   article > 正文

ILA的使用_ila使用

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信号前面添加)

  1. (* mark_debug = "true" *)
  2. 或者
  3. (* dont_touch = "true" *)
  4. 场景1:保留等效寄存器
  5. 最典型的场合是为降低扇出,对高扇出的寄存器进行复制,之后对复制的寄存器和原始寄存器添加DONT_TOUCH属性。因为这些寄存器是等效寄存器,这样做可以保证在综合阶段哲学等效寄存器不会被合并。
  6. 场景2:保留观测寄存器
  7. 为了观测某一个信号(需要将其添加到ILA中),可能会出现在综合后的网表中无法找到的情况。这时候有些工程师会选择用DONT_TOUCH,使得该寄存器可以被保留在综合后的网表中。
  8. 场景3:保留冗余逻辑
  9. 举一个简单的例子,两个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防止寄存器被优化掉

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/508970
推荐阅读
相关标签
  

闽ICP备14008679号