一个icc2使用的makefile文件

tech2025-12-20  7

这里我贴一个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)与相关文件(就是目标文件)之间需要以“:”隔开。 程序会自动检查需要哪些依赖文件,自动执行需要生成依赖文件的步骤。

最新回复(0)