VCS自带的UPF低功耗仿真demo介绍

文章目录

  • 前言
  • 1、demo所在的位置
  • 2、demo的介绍
  • 3、启动demo仿真
  • 4、利用verdi来分析UPF文件
  • 总结


前言

VCS工具安装路径下,自带了一个UPF低功耗仿真的演示用例,本文主要介绍一下这个演示用例的使用,同时解决一些使用过程中的问题。


1、demo所在的位置

具体的路径在$VCS_HOME/doc/examples/NLP/MVSIM_NATIVE_DEMO。

2、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

3、启动demo仿真

进入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文件来学习和分析了。

4、利用verdi来分析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过程中,遇到的一些问题和解决办法。

你可能感兴趣的:(随笔,UPF,低功耗仿真,demo)