Makefile的基本格式

本文介绍了Makefile的基本格式和使用,包括目标与依赖、伪目标、默认目标、变量定义、shell命令的调用以及条件语句的应用。通过示例展示了如何编写Makefile来自动化编译和运行仿真。同时提到了目录递归和命令行选项的控制,为软件构建过程提供高效管理。
摘要由CSDN通过智能技术生成

Makefile的基本格式

  • 目标:依赖
    命令

目标是要生成的结果,依赖是生成结果需要的源文件,命令是当目标不存在或依赖更新时执行的命令。

示例一

simv:tb.sv dut.v
	vcs -full64 -sverilog +v2k -debug_all +notimingcheck +nospecity tb.sv dut.v
  • 伪目标

示例二

.PHONY sim
sim:sim.v
	./simv -xxx

.PHONY 显示指明伪目标,sim不是要生成的目标文件,只是给操作起的一个名字。由于伪目标总是不存在,所以命令一定会重新执行。

  • 默认目标

示例三

.PHONY help sim
help:
	@echo"make help"
	@echo"make simv to compile"
	@echo"make sim to run simulation"
simv:tb.sv dut.v
	vcs -full64 -sverilog tb.sv dut.v
sim:
	./simv -xxx
  • makefile内部定义变量

示例四

 tbfile:=tb.sv env_pkg.sv test_pkg.sv
 rtlfile:=dut.v a.v b.v c.v
 simv:$(tbfile) $(rtlfile)
 	vcs -full64 -sverilog $(tbfile) $(rtlfile)
  • 调用shell命令

示例五

tbfile:=$(shell ls *.sv)
rtlfile:=$(shell find rtl -name "*.v")
simv:$(tbfile) $(rtlfile)
	vcs -full64 -sverilog $(tbfile) $(rtlfile)

$@ 表示目标, $^ 表示依赖

tbfile:=$(shell ls *.sv)
rtlfile:=$(shell find rtl -name "*.v")
simv:$(tbfile) $(rtlfile)
	vcs -full64 -sverilog $^
  • 增加选项

示例六

ifeq($(POST),1)
SRC:="netlist.v"
else
SRC:="rtl.v"
endif

ifeq($(DUMP),1)
DUMP_DEF:="+define+DUMP"
else
DUMP_DEF:=""
endif

sim:
@echo"vcs -full64 -sverilog $(SRC) $(DUMP_DEF) +UVM_TESTNAME=$(TC)"

命令行控制选项开关
make sim POST=1 DUMP=1

  • 目录递归
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jealky

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

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

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

打赏作者

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

抵扣说明:

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

余额充值