数字IC设计——Makefile脚本(示例)

 示例一:

#************parameter input*************
#※prepare the source list file  and then make add the soucefile name 
#for example ,the Verilog source file's name is vlog_list.f then :make norsim src_list=file_list
src_list =  sim
simv_name = simv
vpdpluse_name = vcdpluse
cov_file_name = coverage
vdb_name = $(simv_name)
#************constant command************
#compile
NOR_VCS = vcs -full64 -sverilog +v2k -timescale=1ns/1ns            \
      -debug_all                               \
      +notimingcheck                                   \
      +nospecify                                       \
      +vcs+flush+all                                   \
      -o $(simv_name)   \
      -l compile.log	\
	  -f $(src_list).f 

#coverage compile switch 
COV_SW = -cm line+cond+fsm+branch+tgl

#verdi dump wave compile option 
VERDI_SW = -P /opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/novas.tab \
	/opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/pli.a

#run option
RUN_GUI = -R -gui -l run.log
RUN_VPD = -R +vpdfile+$(vpdpluse_name).vpd -l run.log
RUN_COV = -R $(COV_SW) -cm_name $(vdb_name) -cm_dir ./$(cov_file_name) -l run.log
RUN_VER = -R +fsdb+autoflush -l run.log
#************command************
#normally sim
norsim: 
	$(NOR_VCS) $(RUN_GUI) 

#post-process
postsim:
	$(NOR_VCS)  $(RUN_VPD) 
	dve -vpd $(vpdpluse_name).vpd

#coverage
covsim:
	$(NOR_VCS) $(COV_SW) $(RUN_COV) 
	dve -covdir $(cov_file_name).vdb

#verdi
versim:
	$(NOR_VCS) $(VERDI_SW) $(RUN_VER)
	verdi -sv -f $(src_list).f -ssf *.fsdb -nologo


#rm 
clr:
	rm -rf *csrc ./*.daidir $(simv_name) *simv* DVE* ucli* *.vpd *.vdb *.log *.fsdb *novas* *.dat *Log *rc *conf

 示例二:

.PHONY:comp	run_dve	run_verdi	clean

VCS = vcs -sverilog -timescale=1ns/1ns +vpi -l build.log -debug_pp	+v2k	-fsdb	-full64 \
			-ucli -i ucli_dump_fsdb.tcl \
			-LDFLAGS -rdynamic	\
			-vcs+lic+wait	\
			-P /opt/Synopsys/Verdi2015/share/PLI/VCS/LINUX64/novas.tab	\
			/opt/Synopsys/Verdi2015/share/PLI/VCS/LINUX64/pli.a	\
			-Mupdate -R

ifndef TB_SEED
TB_SEED = 500
endif




all:comp run_dve run_verdi

comp:
	$(VCS) +define+TB_SEED=$(TB_SEED) +incdir+. \
		adder8.v \
		tb_adder8.v

run_dve:
	dve	-vpd	vcdplus.vpd	&

run_verdi:
	verdi -f file.f -ssf top.fsdb -nologo -sv &

示例三: 

vcs:
	vcs -sverilog\
		+incdir+../dv\
		+incdir+../de\
		-f filelist/filelist_dv.sv\
		-debug_pp\
		-full64\
		-timescale=1ns/1ns \
		+define+CASE_FILE=\"case0.sv\"\
		-l compile.log\
		+define+CASE_INST="case0"\
		-Mupdate -R	\
		+v2k\
		-LDFLAGS -rdynamic	\
		-ucli -i ucli_sramc.tcl\
		-fsdb	\
		-l	sim.log

verdi:
	verdi -top tb_top\
		  +incdir+../dv\
		  +incdir+../de\
		  -sverilog\
		  +define+CASE_FILE=\"case0.sv\"\
		  +define+CASE_INST="case0"\
		  -ssf sramc_tb.fsdb\
		  -f filelist/filelist_dv.sv\
			-nologo \
		  &
clean:
	ls \
	| grep -v makefile \
	| grep -v spyglass \
	| grep -v filelist \
	| grep -v ucli_sramc.tcl \
	| xargs -I {} rm {} -r

示例四:

 

#-----------------------------------------------------------------------#
#※prepare the source list file  and then make add the soucefile name 
#for example ,the Verilog source file's name is vlog_list.f then :make norsim src_list=file_list
.PHONY: verdi	clean	covsim	norsim	postsim	mkdir	default
#-----------------------------------------------------------------------#
rtl_list := ./file
simv_name := simv
vpdpulse_name := vcdpulse
cov_file_name = coverage
vdb_name = $(simv_name)
date = $(shell date '+%Y-%m-%d_%H:%M:%S')
#************constant command************
#compile
VCS_OPTION = vcs -full64 							\
	  -sverilog +v2k 								\
	  -timescale=1ns/1ps     		       			\
      -debug_pp                               		\
      +notimingcheck                                \
      +nospecify                                    \
      +vcs+flush+all                                \
      -o $(simv_name)   															\
	  -f $(rtl_list).f 																\
	  -LDFLAGS	-rdynamic															\
	  -l ./output/$(date)/$@_compile.log																	
#----------------------------------------------------------------------#
#coverage compile switch 
COV_SW = -cm line+cond+fsm+branch+tgl
VERDI_LIB = -P /opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/novas.tab \
							 /opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/pli.a
#run option
RUN_GUI = -R -gui -l ./output/$(date)/$@_run.log
RUN_VPD = -R +vpdfile+$(vpdpulse_name).vpd -l ./output/$(date)/$@_run.log
RUN_COV = -R $(COV_SW) -cm_name $(vdb_name) -cm_dir ./output/$@_$(cov_file_name) -l ./output/$(date)/$@_run.log
RUN_VER = -R +fsdb+autoflush -l ./output/$(date)/$@_run.log

#----------------------------------------------------------------------#
default:	mkdir	$(sort $(strip $(tc)))
#----------------------------------------------------------------------#
#normally sim
norsim: 
	$(VCS_OPTION) $(RUN_GUI) 
#----------------------------------------------------------------------#
#post-process
postsim:
	$(VCS_OPTION)  $(RUN_VPD) 
	dve -vpd $(vpdpulse_name).vpd	-full64 &
#----------------------------------------------------------------------#
#coverage
covsim:
	$(VCS_OPTION) $(COV_SW) $(RUN_COV) 
	dve -covdir $(cov_file_name).vdb
#----------------------------------------------------------------------#
#dve
$(sort $(strip $(tc))):
	$(VCS_OPTION)	$(RUN_VPD)
	dve -vpd $(vpdpulse_name).vpd -full64 &
#----------------------------------------------------------------------#
#verdi
verdi:
	$(VCS_OPTION) $(VERDI_LIB) $(RUN_VER)
	verdi -sv -f $(rtl_list).f -ssf *.fsdb -nologo &
#mkdir
mkdir:
	-mkdir ./output/$(date)
#----------------------------------------------------------------------#
#rm 
clean:
	rm -rf *csrc ./*.daidir $(simv_name) *simv* DVE* ucli* *.vpd *.vdb *.log *.fsdb *novas* *.dat *Log *rc *conf
#	-mkdir ./output/$(date)
#----------------------------------------------------------------------#

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜻蜓队长c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值