
# PATH
PNR_HOME = ${CBD_ROOT}/Place_Route
SCRIPT_HOME = ${PNR_HOME}/script
TECH = scmos
ICC_EXEC = icc_shell -64bit
LOGS_DIR     = logs
REPORTS_DIR = reports
RESULTS_DIR = results

clean :
	rm -rf *.date Milkyway.* *_def *.log *.defineVarRoute*  init_design place_optimizer clock_tree_syn pg_imprinting insert_filler power_syn route_optimizer chip_finish output *_map.* icc_output.txt net.acts adrc legalizer_debug_plots run_details .*

   #######################
   # Library Preparation #
   #######################

# Initialization of physical ICC-based libraries
create_top_library :
	$(ICC_EXEC) -f ${SCRIPT_HOME}/prep_scripts/create_top_library.tcl | tee -i $(LOGS_DIR)/create_top_library.log

# Remake physical libraries

remake_top_library :
	rm ../lib/top -rf
	make create_top_library

open_lib : open_lib
	$(ICC_EXEC) -f ./icc_scripts/open_lib.tcl -gui

init_design : init_design
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/init_design.tcl | tee -i $(LOGS_DIR)/init_design.log
	date > init_design.date

place_optimizer : place_optimizer
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/place_optimizer.tcl | tee -i $(LOGS_DIR)/place_optimizer.log
	date > place_optimizer.date

clock_tree_syn : clock_tree_syn
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/clock_tree_syn.tcl | tee -i $(LOGS_DIR)/clock_tree_syn.log
	date > clock_tree_syn.date

pg_imprinting : pg_imprinting
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/pg_imprinting.tcl | tee -i $(LOGS_DIR)/pg_imprinting.log
	date > pg_imprinting.date

insert_filler : insert_filler
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/insert_filler.tcl | tee -i $(LOGS_DIR)/insert_filler.log
	date > insert_filler.date

power_syn : power_syn
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/power_syn.tcl | tee -i $(LOGS_DIR)/power_syn.log
	date > power_syn.date

remove_filler : remove_filler
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/remove_filler.tcl | tee -i $(LOGS_DIR)/remove_filler.log
	date > remove_filler.date

route_optimizer : route_optimizer
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/route_optimizer.tcl | tee -i $(LOGS_DIR)/route_optimizer.log
	date > route_optimizer.date

chip_finish : chip_finish
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/chip_finish.tcl | tee -i $(LOGS_DIR)/chip_finish.log
	date > chip_finish.date

output : output
	mkdir -p $(REPORTS_DIR) $(RESULTS_DIR) $(LOGS_DIR)
	$(ICC_EXEC) -f ./icc_scripts/output.tcl | tee -i $(LOGS_DIR)/output.log
	date > output.date

# Whole sequency
init2cts :
	make init_design place_optimizer clock_tree_syn

init2fill :
	make init_design place_optimizer clock_tree_syn pg_imprinting insert_filler

power2output :
	make power_syn route_optimizer output

semi_all :
	make init_design place_optimizer clock_tree_syn pg_imprinting insert_filler power_syn route_optimizer

all :
	make init_design place_optimizer clock_tree_syn pg_imprinting insert_filler power_syn route_optimizer output
