vcs-accelerate

介绍如何加速vcs仿真。

multi-core

第一种方法是使用-j选项,指定processer的个数,比如-j4

-jnumber_of_processesC-77 Feedback Compilation/Elaboration Options Specifies the number of processes that VCS forks for parallel compilation. There is no space between the “j” character and the number. You can use this option when generating intermediate C files (-gen_c) and their parallel compilation.

第二种是使用FGP (Fine-Grained Parallelism),使用方法是

1
2
% vcs -fgp -full64 <otherOptions>
% simv -fgp=num_threads:4,num_fsdb_threads:4

两种可以一起使用:

1
2
vcs -full64 +vcs+lic+wait +vcs+initreg+random +v2k -sverilog -j4 -fgp test.sv
./simv -fgp=num_threads:4,num_fsdb_threads:4

save/restore

在进行长时间仿真时,如果dump波形,仿真会变慢很多,但如果不dump,在出现问题之后,还需要重新仿真一次,导致时间变长。这时可以使用save/restore机制,在开始时不dump,每隔一段时间save一次,然后在出现问题后,restore最后一次sanpshot,再开始dump波形,从而加快了查问题的速度。

编译选项加-debug_access

save/restore是一条ucli命令,可以在仿真时加-ucli,然后操作,也可以写成脚本。

1
2
3
4
5
6
7
8
$ vcs -full64 +vcs+lic+wait +vcs+initreg+random +v2k -sverilog -j4 -fgp -debug_access test.sv
$ ./simv -ucli
Chronologic VCS simulator copyright 1991-2018
Contains Synopsys proprietary information.
Compiler version O-2018.09-SP2-4_Full64; Runtime version O-2018.09-SP2-4_Full64; Oct 11 10:16 2020
ucli% save snap0
ucli% restore snap0
ucli%

也可以写成脚本

1
2
3
4
5
6
7
8
9
$ cat save.tcl
for { set a 0} {$a<120} {incr a} {
puts "begin loop $a:"
run 20000000ns
puts "save snap$a"
save snap$a
}

$ ./simv -ucli -i save.tcl