SystemVerilog仿真

modelSim仿真出错

1. The interface port ‘infu’ must be passed an actual interface.

在调用接口连接TEST和DUT的时候,compilation通过了,但是simulation的时候出错了,报上面这个错。

解决:将编译命令改成:

1
2
vsim -voptargs="+acc" top -do "run -all"
#其中 top是顶层模块,其中例化了TEST,DUT

参考

SV仿真脚本

makefile中变量需要加上花括号{}。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cov_opt = line+tgl+fsm+cond
# vcs编译 urg生成覆盖率报告 dve观察覆盖率
run: vcs urg dve
vcs:
vcs -sverilog \
+v2k \
-f filelist \
+notimingcheck \
-debug_all \
-R \
-cm ${cov_opt}

sim:
./simv -cm ${cov_opt}
# simv_vdb文件夹下面包含覆盖率的内容,用urg命令将内容生成报告,便于查看。
# 报告有两种格式,网页和text,这里-report both是两种都生成。
urg:
urg -dir simv.vdb -report both
dve:
dve -covdir simv.vdb //在VCS中观察仿真结果
.PHONY:clean
clean:
rm -rf csrc simv ucli.key simv.daidir
rm -rf simv.vdb vc_hdrs.h

覆盖率仿真

1
2
3
4
% vcs -cm line+cond+fsm source.v
% simv -cm line+cond+fsm
% urg -dir simv.vdb // 生成覆盖率报告
% dve -covdir simv.vdb //在VCS中观察仿真结果

SV仿真脚本2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#############################################
# Verilog \ SystemVerilog simulation script #
# 2019-07-27 #
#############################################

files = filelist
comp_log = comp.log
sim_log = sim.log
defines =
cov_opt = line+tgl+fsm+cond

compile_options = -sverilog +v2k -f filelist \
-debug_all \
+vcs+vcdpluson -timescale="1ns/1ps" \
+define+${defines} \
-l ${comp_log}
runtime_options = \
-cm ${cov_opt} \
-l ${sim_log}

compile_option=-sverilog -f filelist
run: vcs sim

vcs:
vcs ${compile_options}


sim:
./simv ${runtime_options}

urg:
urg -dir simv.vdb -report both

.PHONY:clean
clean:
rm -rf csrc simv ucli.key simv.daidir
rm -rf simv.vdb vc_hdrs.h
rm -rf *.log
rm -rf *.vpd

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!