执行matlab后进行RTL功能仿真check
1 背景简介
最近在做算法的RTL实现,算法是通过matlab来写的,但RTL设计做完了还需要进行多场景仿真,和算法进行一一比对,由于功能case较多,每跑一次仿真都要先手动跑一次算法,然后再跑一次功能仿真,效率很低,想着能不能一个命令算法和功能仿真一起执行了,因此就有了这个笔记整理,写记录一下,后续进步了再来修改。
2 整理思路
仿真命令是通过makefile来实现的,因此也想通过makefile来之行matlab,同时并将需要配置的参数传递给matlab,让matlab根据具体的配置来执行。
因此以前的RTL功能仿真的命令不变,只需要在makefile里加一个matlab的命令即可。下面记录一种方法,肯定还有其他更好的方法,以后找到了再补充修改吧……
3 脚本简记
makefile中的命令如下:
reg1 = 32
reg2 = 10
reg3 = crc_on
reg4 = 1matlab:@matlab_test.csh "$(reg1)" "$(reg2)" "'$(reg3)'" "$(reg4)"
说明一下,matlab_test.csh是用shell写的一个脚本文件,用来执行matlab,reg1/reg2/'reg3'/reg4都是要传参给matlab的参数,传递的参数可能是纯数字,也可能是字符串,如果是字符或者字符串需要加上单引号,如'reg3'一样。
执行matlab时只需要把需要的参数通过make命令传递则可以,如下所示。
make matlab reg1=9+reg2=10+reg3=crc_off+reg4=0
matlab_test.csh这个文件比较关键,不仅要接收外面传进来的参数,还需要带参数运行matlab,该文件的大致内容如下:
#!/bin/cshset v1 = “$1”
set v2 = “$2”
set v3 = “$3”
set v4 = “$4”echo "===========config data============="
echo " v1: $v1 "
echo " v2: $v2 "
echo " v3: $v3 "
echo " v4: $v4 "
echo "==================================="matlab -nojvm -noFigureWindows -nodisplay -nodesktop -nosplash -batch "matlab_main $v1 $v2 $v3 $v4;exit"
需要注意的是此处提到的matlab_main是一个matlab的函数,后面跟的$v1/$v2/$v3/$v4分别指的是参数reg1/reg2/'reg3'/reg4,都是需要传递给matlab的参数。把我们之前执行的matlab主函数改写成matlab函数即可,但需要注意的是在打印输出相关的数据文件时需要把打开文件、写入文件、关闭文件的都行在同一行,这是由shell语法决定的。
4 写在最后
简单整理到这里,后面有机会再做修改补充……