数字IC学习:makefile

摘要

  • 学习makefile的基本格式
  • 了解在芯片设计中makefile的使用
  • xrun+simvision与vcs+verdi的简单应用

        在IC设计和验证中,脚本的使用会大大提高办公效率,Makefile主要用于实现“仿真验证自动化”。Makefile可以根据指定的依赖规则和文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。

1.makefile的基本格式

目标:依赖
    命令

        目标是要生成的结果,依赖是生成结果需要的源文件和上一步骤的结果,命令是当目标不存在或者依赖更新时执行的命令。注意命令前必须使用Tab来缩进,不可以使用空格。

        伪目标:Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)。

1.1 基本语法

        在书写时,一个较长行可以使用反斜线(\)分解为多行,这样做可以使Makefile清晰、容易 阅读。注意:反斜线之后不能有空格(这也是大家最容易犯的错误,而且错误比较隐蔽)。 

1.2 makefile的工作原理

        ①在默认方式下,输入make命令后,make会在当前目录下找名字叫makefile或Makefile的文件;②若找到,则会找文件中的第一个目标,如果目标不存在,或者目标后面的依赖文件的修改时间比目标文件新,则会执行后面所定义的命令来生成目标文件;③如果目标后面的依赖文件也存在,则会在当前文件中一层又一层去找文件的依赖关系,直到最终编译出第一个目标。

2.makefile在数字IC中的应用

        工程中的源文件数量较多时,makefile能极大的提高软件开发的效率,实现“自动化编译”,一旦写好,只需要一个make命令,整个工程就能自动编译。

        关于程序的编译和链接的概念:编译就是将源文件编译成中间代码文件的动作(编译器关注语法、函数和变量的正确);链接就是将中间代码文件合成可执行文件的动作(链接器关注链接程序,在中间代码文件中找寻函数的实现)。

        仿真脚本Makefile的目标一般为以下几种:

  • 编译compile:编译设计、验证环境、验证用例
  • 仿真run:执行仿真
  • 调试debug:查看波形
  • 回归regression:批量执行仿真用例
  • 清空clean:清空工作目录、临时文件
//xrun+simvision仿真环境搭建的makefile示例
LIB_DIR=/home/name/personal/design
DFILES=${LAB_DIR}/*.v
help:
	@echo “make help”
	@echo “make compile to compile”
	@echo “make run to run simulation”
	@echo “make sv to observe the waveform”
	@echo “make clean to delete temporary files”
#compile: clean
    
run:
	@echo "======Sim XXX========="
    @xrun -64bit -nowarn DLCPTH:ILLPDX:NONPRT -sv -nocopyright ${DFILES} -work work ./filelist.v \
    -access +rwc -DELAY_MODE Distr -NOTIMINGCHECKS -nocopyright -nospecify -update -top tb \
    -run -exit 
	
run_gui:
	@echo "======Sim_gui XXX========="
    @xrun -64bit -nowarn DLCPTH:ILLPDX:NONPRT -sv -nocopyright ${DFILES} -work work ./filelist.v \
    -access +rwc -DELAY_MODE Distr -NOTIMINGCHECKS -nocopyright -nospecify -update -top tb \
    -gui -run -exit 
	
sv:
	simvision 
clean:
	rm -rf Xcelium.d *.shm xrun.*
//vcs+verdi仿真环境搭建的makefile示例
LIB_DIR=/home/name/personal/design
DFILES=${LAB_DIR}/*.v
help:
	@echo “make help”
	@echo “make compile to compile”
	@echo “make run to run simulation”
	@echo “make verdi to observe the waveform”
	@echo “make clean to delete temporary files”
compile:
	vcs -full64 -debug_all -l compile.log ${DFILES}
run:
	./simv -l run.log
run_gui:
	./simv -gui -l run.log
verdi:
	verdi ${DFILES} -ssf ./*.fsdb &
clean:
	rm -rf *.fsdb *.log csrc simv.* 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值