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
    +关注

    关注

    1664

    文章

    22571

    浏览量

    640756
  • Vivado
    +关注

    关注

    19

    文章

    860

    浏览量

    71511
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    BSP调试#08:Audio(RK3588)

    章节无关紧要。 硬件设计 软件配置 dts 配置 内核配置 调试过程 【问题描述】: 配置后,声卡已经正常生成,但发现无法正常播、录音。   【问题分析】: 开始时,我比较怀疑是声卡控件操作不对导致。结果再三确认不是,这下彻底没
    的头像 发表于 05-09 10:44 7319次阅读
    BSP<b class='flag-5'>调试</b>#08:Audio(RK3588)

    使用Vivado ILA进行复杂时序分析的完整流程

    在 HDL 代码中标记待观测信号,添加 (* mark_debug = "true" *) 属性(Verilog)或 keep 属性(VHDL)
    的头像 发表于 02-04 11:28 631次阅读

    如何在vivadoila进行debug调试

    其中1是添加几个观察信号,2是采样深度。1根据自己要观察的信号进行选择,2一般越大越好。
    的头像 发表于 01-15 14:25 964次阅读
    如何在<b class='flag-5'>vivado</b>用<b class='flag-5'>ila</b>进行<b class='flag-5'>debug</b><b class='flag-5'>调试</b>

    进迭时空 debug upstream | 取之于开源,贡献于开源

    Debug相关软件项目概览RISC-V调试所涉及的核心开源软件主要包括GDB和OpenOCD。GDB(GNUDebugger)是GNU项目下的功能强大的源码级调
    的头像 发表于 11-17 09:33 5852次阅读
    进迭时空 <b class='flag-5'>debug</b> upstream | 取之于开源,贡献于开源

    Vivado仿真之后没有出现仿真结果的解决方法

    ;Run Behavioral Simulation之后,会出现如下图界面,此时,在Tcl Console中并没有出现仿真结果。 没有出现仿真结果的原因是没有给Vivado时间进行仿真,解决方法
    发表于 10-31 06:24

    ILA 抓取MCU200T的内部信号

    我们在调BUG的过程中单纯利用引脚输出中间变量的方法可能比较困难,因此我们在实际的开发过程中使用了ILA内嵌式逻辑分析仪来进行内部信号的捕捉和观察。 1、在E203的 vivado工程中打开IP
    发表于 10-29 08:03

    将e203 例化AXI总线接口

    将系统外设总线内部axi接口引出给gpio,注意vivado中gpio地址分配应保证移植 Debug: 通过Xil_Out32函数给gpio的地址写1或者0,注意这里地址是gpio地址也就是核中给
    发表于 10-29 06:08

    VIVADO中对NICE进行波形仿真的小问题的解决

    分别如下图 可以看到,输出运算结果的pritnf函数被#ifdef所定义,所以我们如果想在VIVADO的控制台看到输出结果,要先在main.c中定义DEBUG_INFO,如下图
    发表于 10-27 06:41

    使用nuclei studio进行调试的一些方法和技巧

    首先是在进行处理器优化时,需要观察信号波形debug,那么就需要使用nuclei studio编译相关benchmark,产生.verilog文件在vivado中跑testbench。对于如何编译
    发表于 10-24 07:08

    如何在vivado上基于二进制码对指令运行状态进行判断

    vivado仿真运行判断状态是否正确。 获取二进制代码 在Nucleistudio中打开相关项目的Properties,按路径打开C/C++ Build -&gt;setting,找到
    发表于 10-24 06:46

    vivado上基于二进制码对指令运行状态进行判断

    a0 -8 为例 获取相应的二进制码将其转换为16进制导入vivado,方法就是将代码文件修改为.verilog文件并存入蜂鸟的tb文件夹,在vivado的tb中修改测试用例路径即可进行仿真。 得到结果
    发表于 10-24 06:31

    AMD Vivado ChipScope助力硬件调试

    许多硬件问题只有在整个集成系统实时运行的过程中才会显现出来。AMD Vivado ChipScope 提供了一套完整的调试流程,可在系统运行期间最大限度提升对可编程逻辑的观测能力,助力设计调试
    的头像 发表于 09-05 17:08 1365次阅读

    vivado仿真时GSR信号的影响

    利用vivado进行设计xilinx FPGA时,写完设计代码和仿真代码后,点击run simulation(启动modelsim进行仿真)。
    的头像 发表于 08-30 14:22 1696次阅读
    <b class='flag-5'>vivado</b>仿真时GSR信号的影响

    FPGA调试方式之VIO/ILA的使用

    Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口,使得用户可以轻松地与F
    的头像 发表于 06-09 09:32 4566次阅读
    FPGA<b class='flag-5'>调试</b>方式之VIO/<b class='flag-5'>ILA</b>的使用

    FPGA远程烧写bit文件和调试ILA指南

    在 FPGA 开发过程中,烧写bit文件和使用ILA进行调试是再常见不过的操作。但如果 FPGA 板卡被放在机房,或者通过PCIe插在服务器上,那么每次调试时我们都不得不带着笔记本电脑跑去机房或服务器旁,接上 JTAG 线后才能
    的头像 发表于 06-05 16:41 2928次阅读
    FPGA远程烧写bit文件和<b class='flag-5'>调试</b><b class='flag-5'>ILA</b>指南