一个icc2使用的makefile文件

1 篇文章 0 订阅

这里我贴一个icc2使用的makefile文件。
方便我自己学习和使用。


##############################################################################
##generate by gen_Makefile.pl
##Tool: IC Compiler II (vesion:1603sp4)
##############################################################################
ICC2_EXEC = /hdd/edatools/eda_tools/icc2_vP-2019.03-SP5_cracked/bin/icc2_shell
LOGS_DIR = logs_icc2
OPTIONS = -64bit
DESIGN_LIB = 
DATE = `date +"%m%d"`
DESIGN = ca53_cpu
VERSION = r0f6p2c5z3e17
SPEF_DIR = spef
NETLIST_DIR = verilog
UPF_DIR = upf
RELEASE_DIR  = /hdd/prj/project/a53_t28/impl/release/backend/ca53_cpu/$(VERSION)
BACKUP  = ca53_cpu_`date "+%m_%d_%H_%M"`
console:
	$(ICC2_EXEC)
setup:
	test -d $(LOGS_DIR)	|| mkdir $(LOGS_DIR)
	date > setup
init_design: setup
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/init_design.tcl | tee -i $(LOGS_DIR)/init_design.log
place_opt:   init_design 
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/place_opt.tcl | tee -i $(LOGS_DIR)/place_opt.log
clock_opt_cts:  place_opt
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/clock_opt_cts.tcl | tee -i $(LOGS_DIR)/clock_opt_cts.log
clock_opt_opto:  clock_opt_cts
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/clock_opt_opto.tcl | tee -i $(LOGS_DIR)/clock_opt_opto.log
route_auto:  clock_opt_opto
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/route_auto.tcl | tee -i $(LOGS_DIR)/route_auto.log
route_opt:  route_auto
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/route_opt.tcl | tee -i $(LOGS_DIR)/route_opt.log
chip_finish:  
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/chip_finish.tcl | tee -i $(LOGS_DIR)/chip_finish.log
pt_eco:  route_opt
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/pt_eco.tcl | tee -i $(LOGS_DIR)/pt_eco.log-`date +"%Y.%m.%d_%H-%M"`
#write_data: route_opt
write_data: pt_eco
	$(ICC2_EXEC) $(OPTIONS) -f ./rm_icc2_pnr_scripts/write_data.tcl | tee -i $(LOGS_DIR)/write_data.log
	mkdir -p $(RELEASE_DIR)/$(SPEF_DIR) $(RELEASE_DIR)/$(NETLIST_DIR) $(RELEASE_DIR)/$(UPF_DIR) $(RELEASE_DIR)/def $(RELEASE_DIR)/lef
	cp -rf ./outputs_icc2/$(DESIGN).pt.v.gz $(RELEASE_DIR)/$(NETLIST_DIR)/$(DESIGN).pt.v.gz
	cp -rf ./outputs_icc2/$(DESIGN).fm.v.gz $(RELEASE_DIR)/$(NETLIST_DIR)/$(DESIGN).fm.v.gz
	cp -rf ./outputs_icc2/$(DESIGN).lvs.v.gz $(RELEASE_DIR)/$(NETLIST_DIR)/$(DESIGN).lvs.v.gz
	cp -rf ./outputs_icc2/$(DESIGN).lef $(RELEASE_DIR)/lef/$(DESIGN).lef
	cp -rf ./outputs_icc2/$(DESIGN).def.gz $(RELEASE_DIR)/def/$(DESIGN).def.gz
	cp -rf ./outputs_icc2/$(DESIGN).upf $(RELEASE_DIR)/upf/$(DESIGN).upf
	#cp -rf /NX3610/project/euht2p0soc/impl/backend/junfeng.liu/ca53_cpu/STARRC/results/$(DESIGN)*spef.gz $(RELEASE_DIR)/$(SPEF_DIR)
	date > $(RELEASE_DIR)/$(SPEF_DIR)/spef_ok
	date > outputs
################################################################################################################
# RC Extraction
################################################################################################################
dummyfill:  write_data
	cd /hdd/prj/project/a53_t28/impl/backend/etuser22/ca53_cpu/CALIBRE/Dummy && go
	date > dummyfill
#rc: dummyfill
rc: dummyfill
	perl /hdd/prj/project/a53_t28/impl/backend/etuser22/ca53_cpu/STARRC/extract_rc_all.pl | tee /hdd/prj/project/a53_t28/impl/backend/etuser22/ca53_cpu/STARRC/run_star_all_corners.log
	cp -rf /hdd/prj/project/a53_t28/impl/backend/etuser22/ca53_cpu/STARRC/results/$(DESIGN)*spef.gz $(RELEASE_DIR)/$(SPEF_DIR)
	date > rc
rc1: rc
	perl /NX3610/project/euht2p0soc/impl/backend/junfeng.liu/ca53_cpu/STARRC/extract_rc1.pl | tee /NX3610/project/euht2p0soc/impl/backend/junfeng.liu/ca53_cpu/STARRC/run_star_all_corners1.log
	date > rc1
rc2: rc1
	perl /NX3610/project/euht2p0soc/impl/backend/junfeng.liu/ca53_cpu/STARRC/extract_rc2.pl | tee /NX3610/project/euht2p0soc/impl/backend/junfeng.liu/ca53_cpu/STARRC/run_star_all_corners2.log
	date > rc2
release_rc: rc2
	mkdir -p $(RELEASE_DIR)/$(SPEF_DIR) $(RELEASE_DIR)/$(NETLIST_DIR) $(RELEASE_DIR)/$(UPF_DIR) $(RELEASE_DIR)/def $(RELEASE_DIR)/lef
	cp -rf ./outputs_icc2/$(DESIGN).pt.v.gz $(RELEASE_DIR)/$(NETLIST_DIR)/$(DESIGN).pt.v.gz
	cp -rf ./outputs_icc2/$(DESIGN).fm.v.gz $(RELEASE_DIR)/$(NETLIST_DIR)/$(DESIGN).fm.v.gz
	#cp -rf ./outputs_icc2/$(DESIGN).lvs.v.gz $(RELEASE_DIR)/$(NETLIST_DIR)/$(DESIGN).lvs.v.gz
	cp -rf ./outputs_icc2/$(DESIGN).lef $(RELEASE_DIR)/lef/$(DESIGN).lef
	cp -rf ./outputs_icc2/$(DESIGN).def.gz $(RELEASE_DIR)/def/$(DESIGN).def.gz
	cp -rf ./outputs_icc2/$(DESIGN).upf $(RELEASE_DIR)/upf/$(DESIGN).upf
	cp -rf /NX3610/project/euht2p0soc/impl/backend/junfeng.liu/ca53_cpu/STARRC/results/$(DESIGN)*spef.gz $(RELEASE_DIR)/$(SPEF_DIR)
	date > $(RELEASE_DIR)/$(SPEF_DIR)/spef_ok
	date > release_rc
##############
##PV
##############
lvs: 
	cd /NX3610/project/cap01soc/impl/backend/weiwei.jin/euht1cap/CALIBRE/LVS && ./run_lvs.csh

drc: 
	cd /NX3610/project/cap01soc/impl/backend/weiwei.jin/euht1cap/CALIBRE/DRC && ./run_drc.csh

##############
##VOLTUS
##############
voltus:
	cd /NX3610/project/cap01soc/impl/backend/weiwei.jin/euht1cap/VOLTUS && ./run_voltus

backup:
	rm -rf $(BACKUP)
	mkdir -p $(BACKUP)
	cp -rf $(DESIGN_LIB) $(LOGS_DIR) $(BACKUP)
clean:
	rm  -f setup init_design place_opt clock_opt_cts clock_opt_opto route_auto route_opt signoff_drc chip_finish outputs all pt_eco
clean_all: clean
	rm -rf $(LOGS_DIR) $(DESIGN_LIB)


简单说下,这是我目前在使用的icc2flow的makefile文件。
在使用的时侯,需要执行到哪一步直接make就行。比如如果我需要执行到cts,(即执行init_design place_opt clock_opt_cts三个步骤。)那么我输入
make clock_opt_cts
即可
在执行完成后会生成3个标志位,
init_design place_opt clock_opt_cts
当其中删除掉clock_opt_cts后,再次执行
make clock_opt_cts
这时只执行第三步clock_opt_cts,大致使用方法就是这样。

关于makefile的知识。
makefile的语法规则
目标(target):依赖文件1 依赖文件2 …

command

在makefile当中的#代表批注;
需要在命令行的第一个字符(例如上面gcc这个编译程序命令);
目标(target)与相关文件(就是目标文件)之间需要以“:”隔开。
程序会自动检查需要哪些依赖文件,自动执行需要生成依赖文件的步骤。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值