| VERSION=17.10-p003_1 | |
| VPATH=make | |
| TCLSH=/usr/bin/tclsh | |
| GEN_FLOW=SCRIPTS/gen_flow.tcl | |
| SETUP_PATH=. | |
| TOOL=innovus | |
| ARGS=-64 -nowin | |
| FSTEPS=init place cts postcts_hold route postroute signoff | |
| SCRIPTS=FF | |
| LOG=LOG | |
| BROWSER=netscape | |
| UPDATE=yes | |
| STEPS = version setup init place cts postcts_hold route postroute signoff do_cleanup | |
| FF_START = init | |
| FF_STOP = signoff | |
| all: version setup init place cts postcts_hold route postroute signoff do_cleanup | |
| version: | |
| @echo "# Foundation Flows Version $(VERSION)" | |
| help: | |
| @echo "===================================================" | |
| @echo " $(VERSION) Foundation Flows" | |
| @echo "===================================================" | |
| @echo " Makefile Targets" | |
| @echo "===================================================" | |
| @echo " setup : Setup Run Directory" | |
| @echo init : Design Import / Initialization | |
| @echo place : Cell Placement | |
| @echo cts : Clock Tree Synthesis | |
| @echo postcts_hold : PostCTS Hold Fixing | |
| @echo route : Global/Detail Route | |
| @echo postroute : PostRoute Optimization | |
| @echo signoff : Signoff Timing / Verify | |
| @echo "---------------------------------------------------" | |
| @echo " all : All design steps" | |
| @echo " simple : Single script (all steps in a single session) - no stop/start" | |
| @echo " single : Single script (all steps in a single session)" | |
| @echo "===================================================" | |
| @echo " Makefile Options" | |
| @echo "===================================================" | |
| @echo " VPATH : Make directory (default make)" | |
| @echo " TOOL : INNOVUS executable (default innovus)" | |
| @echo " ARGS : INNOVUS arguments (default -nowin -64)" | |
| @echo " UPDATE : Update scripts (default yes)" | |
| @echo " SCRIPTS : Script directory (default FF)" | |
| @echo " LOG : Logfile directory (default LOG)" | |
| @echo "===================================================" | |
| simple: setup | |
| FF_STOP=$(FF_STOP); VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_simple.tcl -log $(LOG)/simple.log $(ARGS) | |
| single: setup | |
| FF_STOP=$(FF_STOP); VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_all.tcl -log $(LOG)/single.log $(ARGS) | |
| setup: | |
| @/bin/mkdir -p $(VPATH) $(LOG) | |
| @/bin/touch $(VPATH)/$@ | |
| init: setup | |
| @mkdir -p $(LOG); | |
| @if [ "$(UPDATE)" = "yes" ] ; then \ | |
| /usr/bin/tclsh SCRIPTS/gen_flow.tcl -m flat -d FF -v 17.1.0 -s . -y none -n init ; \ | |
| fi | |
| VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_init.tcl -log $(LOG)/init.log -overwrite $(ARGS) | |
| place: init | |
| @mkdir -p $(LOG); | |
| @if [ "$(UPDATE)" = "yes" ] ; then \ | |
| /usr/bin/tclsh SCRIPTS/gen_flow.tcl -m flat -d FF -v 17.1.0 -s . -y none -n place ; \ | |
| fi | |
| VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_place.tcl -log $(LOG)/place.log -overwrite $(ARGS) | |
| cts: place | |
| @mkdir -p $(LOG); | |
| @if [ "$(UPDATE)" = "yes" ] ; then \ | |
| /usr/bin/tclsh SCRIPTS/gen_flow.tcl -m flat -d FF -v 17.1.0 -s . -y none -n cts ; \ | |
| fi | |
| VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_cts.tcl -log $(LOG)/cts.log -overwrite $(ARGS) | |
| postcts_hold: cts | |
| @mkdir -p $(LOG); | |
| @if [ "$(UPDATE)" = "yes" ] ; then \ | |
| /usr/bin/tclsh SCRIPTS/gen_flow.tcl -m flat -d FF -v 17.1.0 -s . -y none -n postcts_hold ; \ | |
| fi | |
| VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_postcts_hold.tcl -log $(LOG)/postcts_hold.log -overwrite $(ARGS) | |
| route: postcts_hold | |
| @mkdir -p $(LOG); | |
| @if [ "$(UPDATE)" = "yes" ] ; then \ | |
| /usr/bin/tclsh SCRIPTS/gen_flow.tcl -m flat -d FF -v 17.1.0 -s . -y none -n route ; \ | |
| fi | |
| VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_route.tcl -log $(LOG)/route.log -overwrite $(ARGS) | |
| postroute: route | |
| @mkdir -p $(LOG); | |
| @if [ "$(UPDATE)" = "yes" ] ; then \ | |
| /usr/bin/tclsh SCRIPTS/gen_flow.tcl -m flat -d FF -v 17.1.0 -s . -y none -n postroute ; \ | |
| fi | |
| VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_postroute.tcl -log $(LOG)/postroute.log -overwrite $(ARGS) | |
| signoff: postroute | |
| @mkdir -p $(LOG); | |
| @if [ "$(UPDATE)" = "yes" ] ; then \ | |
| /usr/bin/tclsh SCRIPTS/gen_flow.tcl -m flat -d FF -v 17.1.0 -s . -y none -n signoff ; \ | |
| fi | |
| VPATH=$(VPATH); export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_signoff.tcl -log $(LOG)/signoff.log -overwrite $(ARGS) | |
| debug_%: | |
| VPATH=$(VPATH); export STEP=$* ; export VPATH; $(TOOL) -init $(SCRIPTS)/INNOVUS/run_debug.tcl -log $(LOG)/$@.log -win $(ARGS:-nowin=) | |
| lec_%: | |
| export STEP=$* ; lec -64 -xl -Dofile $(SCRIPTS)/INNOVUS/run_lec.tcl -NOGui -LOGfile $(LOG)/$@.log | |
| help_%: | |
| /usr/bin/tclsh $(GEN_FLOW) -H $* | |
| .PHONY: clean | |
| clean: | |
| /bin/mv *.rpt RPT ;\ | |
| /bin/rm -fr extLogDir* __qrc.log *cts_trace *.rpt.old *delete* placementReports* *.rguide *_mmmc \ | |
| *_constr.pt .constr* .FE* .routing* .timing_file* .tdrlog* | |
| do_cleanup: signoff | |
| $(MAKE) clean | |
| /bin/touch $(VPATH)/$@ | |
| reset : version | |
| /bin/rm -fr $(VPATH)/* extLogDir* __qrc.log *cts_trace *.rpt.old *delete* placementReports* *.rguide *_mmmc | |
| @for file in $(STEPS) ; \ | |
| do \ | |
| if [ -r $(VPATH)/$$file ] ; then \ | |
| /bin/rm $(VPATH)/$$file ; \ | |
| fi \ | |
| done | |
| block_%: setup | |
| @if [ "x$*" = "xsingle" ] ; then \ | |
| ff_stop=$(FF_STOP); \ | |
| target="$@ (from: $(FF_START) to: $(FF_STOP))"; \ | |
| else \ | |
| ff_stop=$* ; \ | |
| target=$@; \ | |
| fi; \ | |
| if [ -r $(VPATH)/.RUNNING ] ; then \ | |
| echo "INFO: A build seems to be running already... check $(VPATH)/.RUNNING file and remove that file if the process is dead" ; \ | |
| /bin/head -1 $(VPATH)/.RUNNING ; \ | |
| exit -1 ; \ | |
| else \ | |
| /bin/rm -f $(VPATH)/block_$${ff_stop}.DONE $(VPATH)/block_$${ff_stop}.FAILED $(VPATH)/block_$${ff_stop}.PASS ; \ | |
| (echo "# Started building $${target} at "`/bin/date`" on "`/bin/hostname`" PID: $$$$" ; $(MAKE) $(TARGET) ) &>$(VPATH)/.RUNNING ; \ | |
| if [ -r $(VPATH)/$${ff_stop} ] ; then \ | |
| if [ -r $(VPATH)/.RUNNING ] ; then \ | |
| /bin/mv $(VPATH)/.RUNNING $(VPATH)/block_$${ff_stop}.PASS ; \ | |
| /bin/touch $(VPATH)/block_$${ff_stop} ; \ | |
| /bin/touch $(VPATH)/block_$${ff_stop}.DONE ; \ | |
| else \ | |
| echo "# Something did not work properly" > $(VPATH)/block_$${ff_stop}.FAILED ; \ | |
| /bin/touch $(VPATH)/block_$${ff_stop}.DONE ; \ | |
| exit -1; \ | |
| fi ; \ | |
| else \ | |
| if [ -r $(VPATH)/.RUNNING ] ; then \ | |
| /bin/mv $(VPATH)/.RUNNING $(VPATH)/block_$${ff_stop}.FAILED ; \ | |
| else \ | |
| echo "# Something did not work properly" > $(VPATH)/block_$${ff_stop}.FAILED ; \ | |
| fi ; \ | |
| /bin/touch $(VPATH)/block_$${ff_stop}.DONE ; \ | |
| exit -1 ; \ | |
| fi ; \ | |
| fi |