如何把FPGA调试中的数据给捕获出来并保存为文件

可编程逻辑

1340人已加入

描述

在FPGA调试过程中,经常遇到这样的情况:出现BUG时,想采用仿真环境把FPGA调试中遇到的BUG给重现出来,但无论怎样改变仿真环境中的激励,都无法重现FPGA上的出现BUG的情况。

此时,如果有一种方法,能够把FPGA正在运行时产生BUG前所有的输入变量状态给捕获下来,然后作为激励,添加到仿真环境中去,这样以来,就能够重现FPGA运行时出现的BUG,就可以在仿真环境中去解决这个BUG,调试的复杂度瞬间降低很多,也能大大的提高FPGA调试的效率。  

本文介绍一种利用Vivado进行FPGA调试时,如何把FPGA调试中的数据给“捕获”出来,并保存为文件,转换到仿真环境中进行仿真,“重现”FPGA调试运行场景的方法。    

1、背景

从一个RTL代码描述的电路到FPGA样机的过程可以分为两个阶段,第一阶段为仿真验证,第二阶段为FPGA验证。仿真验证是激励数据源常常由自己编写,往往与板级验证数据源(如TestCenter等网络测试仪产生的以太网数据包)存在较大区别,因此在这里介绍一种将板级验证数据导入仿真Testbench中的方法。使用这种方法,可以使仿真验证数据源最大限度地接近板级数据源,可以辅助排除绝大部分的逻辑错误。  

2、操作流程

这里我们还以Zedboard Debug数据导出到Testbench为例,对具体实施流程进行介绍,如图1所示,该流程可以分为3个步骤: (1) Zedboard,抓取感兴趣的数据,并通过jtag线传输到上位机; (2) 在上位机Vivado软件的Tcl Console中输入命令,将抓取的数据另存为wave.csv文件; (3) 将wave.csv文件中的数据导入Testbench中,最终输出波形。  

RTL  

图1 操作流程  

3、 操作实例

下面给出一个实例,针对图1的三个步骤,对操作流程进行详细介绍。

(1) 抓取感兴趣的数据,如图2所示。

    RTL

图2 抓取感兴趣的数据  

(2) 如图3所示,在tclconsole中输入命令,将抓取的数据转存为wave,csv,转存后的文件如图4所示。  

RTL

图3 tcl console输入命令  

  RTL

图4 wave.csv文件  

(3)将图4中的数据存入RAM中,并在Testbench中循环读取,获得波形数据,如图5所示。  

  RTL

图5 波形数据

通过这样的方法,就可以把FPGA运行时的输入激励数据捕获到文件中,进而转换到仿真环境中进行调试。

按照惯例,我们给出上述过程的源码。

FPGA工程源代码

RTL

Zedboard开发板约束文件

RTL

仿真环境TESTBENCH文件

RTL






审核编辑:刘清

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分