VCS工具安装路径下,自带了一个UPF低功耗仿真的演示用例,本文主要介绍一下这个演示用例的使用,同时解决一些使用过程中的问题。
具体的路径在$VCS_HOME/doc/examples/NLP/MVSIM_NATIVE_DEMO。
将MVSIM_NATIVE_DEMO文件夹拷贝出来,在该路径下输入tree查看层次结构,如下所示,其中,LP、LP_DVE、LP_LPA文件夹分别存放的是仿真环境,REF文件夹是不带UPF的参考对比仿真环境,RTL和UPF文件夹分别用来存放设计代码和UPF文件。
.
├── LP
│ ├── clean.csh
│ ├── comp.csh
│ ├── filelist
│ ├── Makefile
│ ├── README
│ ├── run.csh
│ └── tb_ChipTop.v
├── LP_DVE
│ ├── clean.csh
│ ├── comp.csh
│ ├── filelist
│ ├── Makefile
│ ├── README
│ ├── run.csh
│ ├── run.do
│ └── tb_ChipTop.v
├── LP_LPA
│ ├── clean.csh
│ ├── comp.csh
│ ├── filelist
│ ├── Makefile
│ ├── README
│ ├── run.csh
│ └── tb_ChipTop.v
├── REF
│ ├── clean.csh
│ ├── comp.csh
│ ├── filelist
│ ├── Makefile
│ ├── README
│ ├── run.csh
│ └── tb_ChipTop.v
├── RTL
│ ├── addpp32.v
│ ├── ChipTop.v
│ ├── cla.v
│ ├── csa.v
│ ├── genpp32.v
│ ├── gpr.v
│ ├── InstDecode.v
│ ├── mult3232.v
│ └── tb_ChipTop.v
└── UPF
└── ChipTop.upf
进入MVSIM_NATIVE_DEMO/LP文件夹,打开Makefile文件如下所示。
all : clean comp run
clean:
\rm -rf csrc* simv* vc_hdrs.h vcs_command.log ucli.key mvsim_native_reports lp_fsm.config dump.txt comp.log run.log
comp:
vcs tb_ChipTop.v -f filelist -sverilog -upf UPF/ChipTop.upf -power_top ChipTop +define+UPF -l comp.log
run:
simv -l run.log
直接执行make,会报找不到UPF文件和RTL文件的错误,主要原因是当前的文件夹是LP,而RTL和UPF文件夹都在上层,这里通过做两个软链接来解决。
ln -s ../RTL RTL
ln -s ../UPF UPF
再执行make后,会发现报如下错误:
g++: /soft/eda/vcs/linux/lib/ctype-stubs_32.a: No such file or directory
make[1]: ***[product_timestamp] Error 1
这是因为vcs在编译的时候没有指定-full64选项,直接在vcs编译后边加上该选项即可。
解决工具兼容性问题后,想把波形记录下来,分析一下。于是在tb_ChipTop.v文件中,加入如下代码,实现波形记录。
initial
if($test$plusargs("DUMP_FSDB")) begin
$fsdbDumpfile("test.fsdb");
$fsdbDumpvars("+all");
end
与此同时,Makefile文件的comp编译选项中需要加入-fsdb选项,run仿真选项中需要加入+DUMP_FSDB选项,打开波形记录的开关,simv前面需要加上./用于执行仿真,为了方便verdi启动,可以加入verdi函数,用于快速启动verdi,最后的Makefile文件如下所示:
all : clean comp run
clean:
\rm -rf csrc* simv* vc_hdrs.h vcs_command.log ucli.key mvsim_native_reports lp_fsm.config dump.txt comp.log run.log
comp:
vcs -full64 -fsdb tb_ChipTop.v -f filelist -sverilog -upf UPF/ChipTop.upf -power_top ChipTop +define+UPF -l comp.log
run:
./simv +DUMP_FSDB -l run.log
verdi
verdi tb_ChipTop.v -f filelist -sverilog -upf UPF/ChipTop.upf -power_top ChipTop +define+UPF -ssf test.fsdb &
到此为止,就可以对照仿真波形以及UPF文件来学习和分析了。
1)打开UPF文件。File -> Import CPF/UPF Files,可以一次性导入多个文件。
2)查看power domain的开关状态。在Hierarchical Power Domain窗口中,可以层次化查看UPF文件的描述。
3)打开power map。Power -> New Power Map -> Full Power Map ,可以看到完整的power design结构。
本文主要记录一下,在使用VCS工具自带的UPF低功耗仿真demo过程中,遇到的一些问题和解决办法。