0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vivado调试ILA debug结果也许不对

汽车玩家 来源:科学计算technomania 作者:猫叔 2020-03-08 17:35 次阅读

FPGA的调试是个很蛋疼的事,即便Vivado已经比ISE好用了很多,但调试起来依旧蛋疼。即便是同一个程序,FPGA每次重新综合、实现后结果都多多少少会有所不同。而且加入到ila中的数据会占用RAM资源,影响布局布线的结果。

尤其是在时序紧张的情况下,ila占的资源越多,布线的难度就会越大。当时序不收敛时,就可能会导致一个问题,我们从ila中看到的信号可能不是真实的。

下面说一下今天在调试中碰到的现象:

场景还原:

1. 程序中有4个主时钟,而且一直处于在时序收敛的边缘状态,也就是说有时候Implementation后时序收敛,有时时序违规,但我没有去管,因为报时序违规的地方并不是我当时调试的代码处。

2. 数据的位宽较大,为256bit,要对该数据做一系列的处理,比如原始数据为A[255:0],在数据处理过程中需要将A赋值给B[255:0],再将B赋值给C[255:0]。

3. 数据C最后通过PCIe传给了上位机,在上位机中看到C波形有时会有毛刺,但不确定是哪一步出了问题,于是将A、B和C都引入到ila中,又多抓了几个相关的信号,加起来总共有800多bits。

4. 总的BARM占用率不超过40%,LUT RAM没超过10%,LUT和FF都没有超过30%,BUFG用了47%。

出现的问题:

1. 在没有加这么多的debug信号前,偶尔时序会报违规,但都是个别的一两处报的setup违规。但加了这些信号后,所有时钟的Intra-Clock Paths的Hold-up Time都违规。如果是建立时间不过,解决办法有很多,但保持时间不过,就有点麻烦了。但这肯定是增加了这么多的debug导致的,所以不用去理会。

2. 由于看到上位机中的波形有毛刺,首先确定C的数据是否有问题,排除PCIe传输中的错误。对比发现C和上位机的数据完全一样,因此毛刺肯定是出现在前面的逻辑中。

3. 发现A、B和C的数据都是不一致的,可能会出现下面的现象:

A的数据是xxxx10101010xxxx
B的数据是xxxx00101010xxxx
C的数据是xxxx10101011xxxx

也就是说,在B中发现数据出现了误码,1->0,但C中该bit依然是对的,跟原始数据的A是一样的,由于我们的 赋值过程是A->B->C。

说明可能有两种原因:

1. 从B到C的传输过程中,刚好在这个bit处产生了误码
2. 数据B的这个bit其实是正确的,只是抓出来的数据有问题

由于程序中在很多地方都会出现这种情况,所以认为第二种可能性更大一些。

总结:

在时序不收敛的情况下,我们通过ila抓出来的数据可能并不是真实的,在碰到这种问题时,可能需要我们先把时序调整后再进行后续调试。

最后,碰到这种问题怎么解决呢?最根本的解决办法当然是修改设计,使时序能够收敛。还有一种笨办法,由于程序Implementation后有时能收敛有时不能收敛,那我们就把时序收敛时的bit作Release即可,再对这个bit程序做详细测试。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21302

    浏览量

    593107
  • Vivado
    +关注

    关注

    18

    文章

    789

    浏览量

    65092
收藏 人收藏

    评论

    相关推荐

    如何在下载Bitstream后自动触发ILA采集

    在硬件调试时,经常需要用 ILA 采集一些 FPGA 内部或者对外的初始化信号,然而在下载完 Bitstream 后立即采集这些变化稍纵即逝的信号,比如在 1uS 内手动触发 ILA 采集信号
    的头像 发表于 02-23 09:45 438次阅读
    如何在下载Bitstream后自动触发<b class='flag-5'>ILA</b>采集

    详解Java DEBUG的基本原理

    Debug 的时候,都遇到过手速太快,直接跳过了自己想调试的方法、代码的时候吧……
    的头像 发表于 01-05 10:10 540次阅读
    详解Java <b class='flag-5'>DEBUG</b>的基本原理

    用CPLD接收AD7986数据,转换结果总是读取不对怎么解决?

    小弟目前在调试使用CPLD接收AD7986数据,转换结果总是读取不对。使用的VHDL语言,速率已经降得很低了,还是读不对。请大侠指点。
    发表于 12-22 08:09

    如何实现ILA Cross Trigger

    ILA Cross Triggering功能使得ILA核心之间、以及ILA核心与处理器(例如,AMD Zynq 7000 SoC)之间可以进行Cross Trigger。这个功能在你需要在不同时钟域的两个
    的头像 发表于 11-30 10:17 658次阅读
    如何实现<b class='flag-5'>ILA</b> Cross Trigger

    Vivado Design Suite 用户指南:编程和调试

    Vivado Design Suite 用户指南:编程和调试》 文档涵盖了以下设计进程: 硬件、IP 和平台开发 : 为硬件平台创建 PL IP 块、创建 PL 内核、功能仿真以及评估 AMD
    的头像 发表于 10-25 16:15 436次阅读
    <b class='flag-5'>Vivado</b> Design Suite 用户指南:编程和<b class='flag-5'>调试</b>

    集成逻辑分析仪(ILA)的使用方法

    两大主流厂商的软件集成逻辑分析仪供使用,Altera的Quartus自带SignalTap、Xilinx的Vivado自带ILA逻辑调试工具。
    的头像 发表于 10-01 17:08 1805次阅读
    集成逻辑分析仪(<b class='flag-5'>ILA</b>)的使用方法

    Vivado Design Suite用户指南:编程和调试

    电子发烧友网站提供《Vivado Design Suite用户指南:编程和调试.pdf》资料免费下载
    发表于 09-13 14:47 0次下载
    <b class='flag-5'>Vivado</b> Design Suite用户指南:编程和<b class='flag-5'>调试</b>

    Vivado设计套件用户指南:编程和调试

    电子发烧友网站提供《Vivado设计套件用户指南:编程和调试.pdf》资料免费下载
    发表于 09-13 11:37 0次下载
    <b class='flag-5'>Vivado</b>设计套件用户指南:编程和<b class='flag-5'>调试</b>

    08 6_工具篇_Vivado软件的硬件调试ILA的使用(第一讲) - 第6节

    软件函数代码Vivado
    充八万
    发布于 :2023年08月18日 04:27:45

    求助,如何解决J-Link调试蜂鸟E203失败的问题?

    /u_e203_subsys_top/sysfio_icb_cmd_addr,它仿真结果和上版后ila抓取的结果不太一样,其中仿真结果一开始一直为0x1004,后面有一些其他的变化(没
    发表于 08-16 08:23

    如何利用ila(逻辑分析仪)调试nice?

    仿真和生成mcs文件后运行的结果如下(仿真的结果和实际传回的数据结果不同,并且相同的c程序前后两次传回的结果都不同),目前想用ila
    发表于 08-16 06:37

    E203移植到自己开发板之后,ila抓取信号,IFU模块输出的ir和pc不对应的原因?

    为mcs文件,load进去,在串口也打印出了相应的输出内容。当用ila查看IFU模块的两个关键输出信号时,发现和之前用testbench进行verilog仿真的输出波形有差异。 按照官网给出的ppt上上解
    发表于 08-12 07:26

    如何对传统的非DFX设计进行调试呢?

    对传统的非DFX设计进行调试时,一个重要环节是插入ILA(Integrated Logic Analyzer,集成逻辑分析仪)。
    的头像 发表于 08-10 09:07 615次阅读
    如何对传统的非DFX设计进行<b class='flag-5'>调试</b>呢?

    如何使用Python脚本调试赛灵思PCIe设计?

    现在,您不仅可以使用 Python 脚本执行调试分析,更重要的是,借由 Vivado ILA 所生成的 ILA 文件可以进一步简化此操作。通过将 *.
    的头像 发表于 06-26 09:20 691次阅读
    如何使用Python脚本<b class='flag-5'>调试</b>赛灵思PCIe设计?

    IAR中 Debug 和 Release有何区别

    两个版本到底有什么区别?   下面就来讲讲Debug 和 Release版本区别,及其相关的内容。   关于Debug 和 Release版本   Debug, 顾名思义,就是调试版本
    的头像 发表于 05-22 10:54 962次阅读
    IAR中 <b class='flag-5'>Debug</b> 和 Release有何区别