参考狗蛋大佬。
目录
1.脚本文件说明
本质上是生成shell命令。
共包含两个文件,一个是脚本主体文件,一个是包含文件,用来初始化proj的信息,比如文件路径、循环次数和一些配置等信息。
使用包含文件的方法,在主体文件中,require 包含文件,引用定义在包含文件的sub函数。
require(文件名);
包含文件的定义:
正常函数写法,但最后一行需要有个"1;"
关于require的详细用法:
perl--require(@INC)_奔跑的羚羊的技术博客_51CTO博客
2.命令行传参 use Getopt::Long
Getopt::Long::GetOptions(
'help|h' => \$cmd_help,
'case|c' => \$cmd_case,
'analyse|ana' => \$cmd_analyse,
) or usage();
3.case : 跑case。脚本:
- 在终端显式testcase目录下的所有"*test.sv",并创建testname的仿真文件夹。
- 输入testcase number;
- run_tc:
对输入的test序号(类似all、1-2,3-5 、7、1-5)进行调整,将序号计入数组tc_num中。
3.1 生成编译命令
-o path/simv //生成可执行文件simv 和simv_daidir
-l path/testname_sim_dir/comp_testname_seed.log
-f filelist
-sverilog -ntb_opts uvm-1.2 -debug_access+all
+nospecify +notimingcheck
-timescale=1ns/1ns +vcs+lic+wait -full64
+vcsd +memcbk +vpi -kdb
+fsdb+region //查看delta
在config文件中有 是否有覆盖率的设置选项,如果有则有命令:
-cm line+cond+fsm+branch+tgl+assert
-cm_dir /cov_dir/simv_seed.vdb //指定vdb路径
-cm_hier ./file //一个文件,指明统计覆盖率的层次 module tree
vcs ...
3.2 生成仿真命令
+ntb_random_seed=seed
-l path/testname_sim_dir/sim_testname_seed.log
+UVM_TESTNAME=testname
+fsdb+delta +UVM_VERBOSITY=UVM_MEDIUM
+fsdb+sva_success //verdi中查看sva tb中也要dump
如果收集覆盖率,则有
-cm +...
-cm_dir cov_dir/sim_testname_seed.vdb
-cm_name testname_seed
./simv 上述
3.3 生成终端命令
将上两个命令的字符串内容存放至终端$terminal_cmd数组中。
如果在一次以上生成连续运行,那就不必生成编译指令。
3.4 运行
system("gnome-terminal --window --$terminal_cmd[x] ")