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