FPGA仿真波形数据提取

使用专用仿真软件ModelSim实现FPGA仿真波形数据提取

提取FPGA的仿真波形数据的两种方法:(1)使用Verilog系统函数,但速度较慢。(2)使用专用仿真软件,速度较快。

在硬件系统设计过程中,需要进行功能仿真或时序仿真,在观测信号和数据量都较少时,可直接手动查看各信号的变化情况。但是在需要对大量数据进行分析时,则经常会使用的一个操作是:

  • 将Vivado或Quartus的仿真结果,与MATLAB仿真结果做对比,或是将仿真波形数据放到matlab上面进行处理、分析以及作图,这时就需要将仿真波形数据以文本的格式保存下来。

本文介绍如何使用专用仿真器Modelsim,并使用指令语言来完成仿真数据的提取,做下笔记如下。
脚本代码如下:

proc write_sim_data {env name radix cycle file} {set fid [open $file w]for {set i 0} {$i <= $::now} {incr i [expr $cycle * 1000]} {set str [exa -env $env -radix $radix -time ${i}ps {*}$name]puts $fid $str}close $fid 
}  

上述代码直接通过 Modelsim 指令输入区输入后,通过如下语句进行调用:

write_sim_data tb_FFT/FFT {s_ifft_i s_ifft_q} decimal 4 data.txt   

其中

参数说明
write_sim_data为调用函数的名字
tb_FFT/FFT为需要提取的变量列表
{s_ifft_i s_ifft_q}为该列表内的需要提取的变量名
decimal表示以 10 进制的格式将波形数据保存,以其他格式保存可更改为(ascii,binary, decimal,hexadecimal,unsigned)
4表示每隔多长时间间隔采样一次数据,一般设为时钟的周期,单位为 ns
data.txt表示保存到文本的文件名

波形数据的保存路径为:…\PRJ\FFT\FFT\FFT.sim\sim_1\behav\modelsim\data.txt
保存时长为:从初始至波形all run已运行时间
例如:
testbench中的时钟设置如下:

always #2 clk = ~clk ;

即时钟周期为4ns,即每隔4ns,将变量s_ifft_i 和 s_ifft_q 的瞬时数据写入data_txt文件。

  • 参考优质博客

Modelsim导出数据的两种方法


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部