IC设计中Makefile的应用
结合自己理解并参考: 芯片设计中的Makefile简明教程与 Makefile文件中包含哪些规则
1. Makefile作用?
- 编写makefile文件本质上是帮组make如何一键编译,进行批处理,makefile文件包含的规则命令使我们不需要繁琐的操作,提高了开发效率。
- Makefile可以根据指定的依赖规则和文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。
2. Makefile应用
- 利用Makefile 实现简单的前端设计流程,包括VCS编译,Verdi仿真,DC综合,后续流程待补充。
- 目录结构
- 其中dc_script 为dc综合脚本, 参考以前博客DC脚本学习,需要修改set_env.tcl中RTL_FILE的路径为自己的设计文件(.v)保存路径。
- RTL为自己的设计(.v)文件,flist.f包含所有文件的路径。
- Makefile文件如下,参考以前博客VCS和Verdi学习。
#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 删除所有子目录下的临时生成文件