VCS使用总结

VCS总结

简单来讲VCS有两个步骤:编译和仿真;两个模式:optimized mode(设计后期,批处理,编译和运行上有优势)和debug mode(纠错常用)。

VCS自带的说明文档非常管用。在$(VCS_HOME)里面的doc文件夹下面。里面还有一些简单的示例,不止VSC_UG, Ucli,Coverage, UVM也都在里面。

这里记录一下我用过的各个命令和功能。给出几个简单的例子应该会更容易理解。

首先是如何实现最基本的编译和仿真:
vcs -full64 \
-sverilog \
+v2k \
-R \
-nc \
-debug_pp \
-LDFLAGS \
-rdynamic \
-P ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab \
${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a *.sv

这里逐一分析一下每个命令的功能。

full64: 需要查看$(PLATFORM),若运行平台为64位x86,加上这个选项;
sverilog: SV程序
R: 这里没有运行./simv就是因为加上了这个选项,意为编译后直接仿真。
nc: no copyright,不显示Synopsys版权信息
debug_pp: 专门用于debug模式的选项。另外还有debug(partial debug mode), bebug_all(full debug mode), debug_acess(加上特定的选项)等选项。
这里没有在手册里找到debug_pp的具体解释,只找到debug_access+pp选项,有待研究。
LDFLAGS:把标志选项传给linker(编译中的一步)。仅适用于增量编译模式,是个默认值。
rdynamic: 指示需要加载的动态库
P 为了使用verdi产生fsdb波形,需要将这两个文件加入(
${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab:加载表格文件;
${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab:加载静态库)

然后是如何利用vcs进行uvm环境下的编译和仿真。

.PHONEY: comp_msg
comp_msg:
	echo "Starting compiling..."

#VPATH = src
#vpath %sv src

uvm_home = ${VCS_HOME}/etc/uvm-1.1

PRACTICE_ENV_DIR = /home/xinyihuang/Documents/practice/verilog/uvm 

PRACTICE_INC = \
							 +incdir+vl \
               +incdir+spi_include.sv \
							 +incdir+sv

PRACTICE_USERVCSBUILDFLAGS = \
														 $(PRACTICE_INC) 

PRACTICE_TB_SV_FILES = \
								 sv/test_if.sv \
								 spi_include.sv \

PRACTICE_TB_VR_FILES = \
								 vl/test_top.v

PRACTICE_DUT_FILES = \
								 vl/spimgr_erom.sv 

PRACTICE_SIMV_FILES = \
											$(PRACTICE_TB_SV_FILES) \
											$(PRACTICE_TB_VR_FILES) \
											$(PRACTICE_DUT_FILES) 
											
#obj = $(PRACTICE_SIMV_FILES)

#m_uvm_home = /home/xinyihuang/Documents/practice/verilog/uvm
#PRACTICE_ENV_DIR = /home/xinyihuang/Documents/practice/verilog/uvm 

uvm_opts   = \
		   -ntb_opts uvm-1.1 \
           $(PRACTICE_USERVCSBUILDFLAGS) \
           +incdir+$(uvm_home)/src \
           +incdir+$(uvm_home)/uvm.sv \
		   +incdir+$(uvm_home)/dpi/uvm_dpi.cc \
		   +define+UVM_VCS_RECORD \
			-CFLAGS \
			-DVCS

comp: comp_msg $(PRACTICE_SIMV_FILES) 
	vcs \
	         -full64 \
	         $(uvm_opts) \
			-timescale=1ns/1ps \
	         -sverilog $(PRACTICE_SIMV_FILES) \
	         +v2k \
			  -R \
			  -lca \
			  -debug_all \
			  -P ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab ${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a \
              -l comp.log \
	         +UVM_OBJECTION_TRACE
			  #+UVM_VERDI_TRACE="UVM_AWARE+RAL+TLM+MSG+HIER+PRINT" \
			  #+UVM_TR_RECORD \
			  #+UVM_LOG_RECORD 

#simv:
#  ./simv \
		       +fsdbfile+test.fsdb \
					 
waveform: 
	verdi \
	            -2001 \
                -sv $(PRACTICE_SIMV_FILES) \
				-nologo \
				$(PRACTICE_INC) \
				-ssf test.fsdb

clean: 
	rm -rf csrc simv* novas* ucli.key vc*

这是我对于uvm环境编译和仿真的一份makefile。
针对vcs部分的命令:
lca:必须打开,否则会在debug的时候报错,具体什么错忘了。
这里指定uvm1.1。
+incdir+:设置includewen文件后缀
+define+:字面意思,设置define值
+libext+:设置库文件后缀,比如.v,.sv什么的

  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值