IC设计中Makefile的应用


结合自己理解并参考: 与

1. Makefile作用?

    编写makefile文件本质上是帮组make如何一键编译,进行批处理,makefile文件包含的规则命令使我们不需要繁琐的操作,提高了开发效率。 Makefile可以根据指定的依赖规则和文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。

2. Makefile应用

    利用Makefile 实现简单的前端设计流程,包括VCS编译,Verdi仿真,DC综合,后续流程待补充。 目录结构
    其中dc_script 为dc综合脚本, 参考以前博客,需要修改set_env.tcl中RTL_FILE的路径为自己的设计文件(.v)保存路径。 RTL为自己的设计(.v)文件,flist.f包含所有文件的路径。 Makefile文件如下,参考以前博客。
#use "make" for help
help:
	@echo "make help"
	@echo "make com to compile" 
	@echo "make sim to run simulation"	
	@echo "make clean to delete temporary files" 

#need to midify design name
design_name = div_top
fsdb_name = $(design_name).fsdb

# use command "make com" to run vsc and product fsdb file
com: 
	cd RTL && vcs 
		-full64 
		-f flist.f 
	  -debug_all 
		-l com.log 
		+v2k 	-P ${
          
   Verdi_HOME}/share/PLI/VCS/LINUXAMD64/novas.tab	${
          
   Verdi_HOME}/share/PLI/VCS/LINUXAMD64/pli.a
	#	cd RTL && ./simv -l sim.log +fsdbfile+$(fsdb_name)
#simulation:product fsdb file and sim log
sim: ./RTL/simv 	  
	cd RTL && ./simv -l sim.log +fsdbfile+$(fsdb_name)  

# use verdi to observe the waveform
verdi:
	cd RTL && verdi 
	+v2k 
	-f flist.f 
	-ssf  $(fsdb_name) & #use fsdb file

# run dc for synthesize
syn:	
	cd dc_script && dc_shell -64bit -topographical -f top_syn.tcl | tee -i syn.log

#delete all files except .v and makefile
clean: 
	#rm -rf `ls | grep -v "Makefile"|grep -v "flist.f" | grep -v ".v" | grep -v "dc_script"`
	make -C RTL clean
	make -C dc_script clean

/RTL目录下MakeFile

#delete temporary files
clean: 
	rm -rf `ls | grep -v "Makefile"|grep -v "flist.f" | grep -v ".v"`

dc_script目录下Makefile

#delete temporary files
clean: 
	rm -rf `ls | grep -v "Makefile"|grep -v "script" | grep -v ".*.tcl"`

以下为实际效果:

    make make com :调用vcs编译 make sim:调用vcs仿真 make verdi 波形,shifrt+l可刷新重新编译结果 make clean 删除所有子目录下的临时生成文件
经验分享 程序员 微信小程序 职场和发展