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时序约束教程:

ila数据导入matlab,Vivado调试小结:ILA debug中的数据也许并不可信相关推荐

  1. 将ANSYS里的数据导入MATLAB的步骤

    将ANSYS里的数据导入MATLAB的步骤: 1.在ansys中定义一个矩阵用来存储数据 *get,NodeNum,NODE,0,COUNT !得到模型的所有节点数 *get,nd,NODE,0,NU ...

  2. matlab打开矩阵表,如何将Excel数据导入MATLAB中?:EXCLE中通过矩阵表输出选项

    怎么把matlab中处理的数据存入到excel中 可以直接xlswrite命令. data=randn(100,1); % data为需要存储的数 xlswrite('D:\write2Excel.x ...

  3. 将Excel数据导入Matlab+Matlab二次曲线拟合

    将Excel数据导入MATLAB 文件类型是.xls,对应命令: xlsread('文件路径\文件名.xls') 文件类型是.xlsx,对应命令: xlsread('文件路径\文件名.xlsx') d ...

  4. matlab导入word数据,如何将Excel数据导入MATLAB中?/excel数据导入word模板

    如何将Excel数据导入MATLAB中? 从excel中导入,可以用xlsread()函数. 例如: A=xlsread('C:\Users\Administrator\Desktop\07-29预. ...

  5. 如何将excel表格导入matlab,将Excel数据导入MATLAB中的方法

    在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.那么下面小编教你怎么将Excel数据导入MATLAB中. 将 ...

  6. adams数据导出matlab,adams数据导入matlab

    Matlab 数据导入方法在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文 件.MATLAB 使用多种格式打开和保存数据.本章将要介绍 MATLAB 中文件...... adam ...

  7. 示波器数据用matlab进行fft,示波器CSV波形数据导入Matlab进行FFT分析.doc

    示波器CSV波形数据导入Matlab进行FFT分析 1,将CSV文件拖到workspace窗口,弹出的Import Wizard窗口中,点选"Next",新窗口中选第二项" ...

  8. matlab示波器导出csv数据,示波器CSV波形数据导入Matlab进行FFT分析

    示波器CSV波形数据导入Matlab进行FFT分析 1,将CSV文件拖到workspace窗口,弹出的Import Wizard窗口中,点选"Next",新窗口中选第二项" ...

  9. 将示波器信号完整数据导入Matlab进行分析

    学习如何将麦科信示波器信号的完整数据导入matlab进行分析,我们先要学习如何完整导出示波器的信号数据.示波器可将模拟通道或数学通道波形保存到本地或者U盘,文件类型可选择WAV.CSV或BIN. WA ...

最新文章

  1. 华人博士生首次尝试用两个Transformer构建一个GAN
  2. 「AI初识境」什么是深度学习成功的开始?参数初始化
  3. scikit_image
  4. python的工作方向-python工作方向,发展方向?
  5. 中国六个漂亮的古镇风景名胜区网站欣赏
  6. boost::iostreams模块实现大文件偏移量使用 file_descriptor 进行测试
  7. piovt table python_python – Pandas:pivot和pivot_table之间的区别...
  8. 迎.NET6,今日先送200P全新视频教程 / 源码
  9. Java 8————Collectors中的中的joining 方法和mapping方法
  10. SqlServer2008 R2删除数据库时报数据库正在使用的错误
  11. linux 增量升级包,应用增量Linux补丁
  12. 如何实现多列对比去重
  13. 【JWT】JWT JWS JWE | 在线JWS解析工具
  14. 图匹配(Graph Matching)入门学习笔记——以《Factorized Graph Matching》为例(二)
  15. java写一个文件浏览器_【Java】 实现一个简单文件浏览器(2)
  16. 全国计算机等级考试二级Java模拟试卷
  17. canvas实现刻度尺
  18. SQL Server profile使用技巧
  19. 学期作品-考勤信息管理系统文档之《立项报告》
  20. 省常中集训Day6 2022.8.8

热门文章

  1. linux系统添加路由
  2. Red Hat6 Linux镜像文件,如何下载红帽企业版Linux的ISO镜像文件,如何开始安装红帽企业版Linux?...
  3. java经典笔试题大全(50道含答案)
  4. 王者荣耀3月31日服务器维护,王者荣耀3月31日体验服停机更新公告 新增派对大作战玩法...
  5. MySQL 共享排他锁_mysql 共享排他锁
  6. 淘宝用户行为---用户行为转化分析
  7. proxyTable配置
  8. 基于5G/4G无线通信的银行ATM无线通信联网方案
  9. Wine开源项目第一关--编译源码
  10. 创建项目Conda executable is not found