最近在做本科毕业设计,内容是关于存储器自修复的。在验证的时候觉得用Matlab模拟随机过程,再改写verilog文件,再编译、仿真实在是太麻烦了,无法做很多次的仿真,而且发现错误的概率也大大降低了,在Windows操作系统中想利用Matlab和Modelsim联合仿真到底有没有什么好方法?我前几天也是在百度上苦苦搜寻,但是并没有发现什么好的方法。(也可能是我看的不是很认真)有几篇文章讲了利用输出文件和读取文件的方法,但是也无法解决自动编译、仿真的问题。
由于本人接触过tcl和perl等脚本语言和simvision仿真软件,知道在linux操作系统下这些是很容易实现的。由此我想到了windows自带的命令提示符,以及Matlab中可以调用DOS命令。于是我尝试了在命令提示符中输入和linux中启动Modelsim相同的命令
vsim
果然奏效。
于是思路就来了,可以利用Matlab的fopen和fwrite函数实现故障注入后verilog文件的修改。再用Matlab的dos函数执行Modelsim的脚本:vsim -c -do sim.do
至于verilog仿真结果的分析,可以通过verilog的$fopen和$fdisplay函数将需要的结果输出到文本文件当中,再通过Matlab中的fread函数读取文件中的内容,即可实现整个联合仿真。
伪代码如下:
Matlab产生随机数;
随机故障注入(用Matlab产生的随机数改写verilog文件);
运行vsim脚本(dos("vsim -c -do sim,do")-)
sim.do内容下:
vlib work
vmap work
vlog -incr *.v
vsim work.测试平台名 -novopt -L
run
exit
利用matlab的fread或者DOS的type命令读取输出变量的;
将输出变量值与理想值比较;