@@ -325,8 +325,7 @@ clean_synth:
325325# |_| |_____\___/ \___/|_| \_\_| |_____/_/ \_\_| \_|
326326#
327327.PHONY : floorplan
328- floorplan : $(RESULTS_DIR ) /2_floorplan.odb \
329- $(RESULTS_DIR)/2_floorplan.sdc
328+ floorplan : $(RESULTS_DIR ) /2_floorplan.odb
330329
331330# ==============================================================================
332331
@@ -407,33 +406,32 @@ do-$(1): $(DO_STEP_DEPS_$(1)) $(OBJECTS_DIR)/copyright.txt
407406 $(SCRIPTS_DIR ) /flow.sh $(1 ) $(3 )
408407endef
409408
410- # generate make rules to copy a file , if a dependency change and
411- # a do- sibling rule that copies the file unconditionally.
409+ # generate make rules to copy an .odb and its .sdc , if a dependency
410+ # change and a do- sibling rule that copies them unconditionally.
412411#
413- # The file is copied within the $(RESULTS_DIR)
412+ # The files are copied within the $(RESULTS_DIR)
414413#
415- # $(1) stem of target, e.g. 2_1_floorplan
416- # $(2) basename of file to be copied
417- # $(3) further dependencies
418- # $(4) target extension, default .odb
414+ # $(1) stem of target, e.g. 2_floorplan
415+ # $(2) stem of the files to be copied, e.g. 2_4_floorplan_pdn
419416define do-copy
420- $(RESULTS_DIR ) /$(1 )$( if $( 4 ) , $( 4 ) , .odb) : $(RESULTS_DIR ) /$(2 ) $( 3 )
421- $$(UNSET_AND_MAKE ) do-$(1 )$( if $( 4 ) , $( 4 ) ,)
417+ $(RESULTS_DIR ) /$(1 ) .odb: $(RESULTS_DIR ) /$(2 ) .odb
418+ $$(UNSET_AND_MAKE ) do-$(1 )
422419
423- .PHONY: do-$(1 )$(if $(4 ) ,$(4 ) ,)
424- do-$(1 )$(if $(4 ) ,$(4 ) ,) :
425- cp $(RESULTS_DIR ) /$(2 ) $(RESULTS_DIR ) /$(1 )$(if $(4 ) ,$(4 ) ,.odb)
420+ .PHONY: do-$(1 )
421+ do-$(1 ) :
422+ cp $(RESULTS_DIR ) /$(2 ) .odb $(RESULTS_DIR ) /$(1 ) .odb
423+ cp $(RESULTS_DIR ) /$(2 ) .sdc $(RESULTS_DIR ) /$(1 ) .sdc
426424endef
427425
428426# ==============================================================================
429427
430428# Custom target to go from synthesis to placement in a single OpenROAD run
431- $(eval $(call do-step,1_3_floorplan_to_place, $(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc ,floorplan_to_place))
429+ $(eval $(call do-step,1_3_floorplan_to_place, $(RESULTS_DIR)/1_synth.odb,floorplan_to_place))
432430
433431$(eval $(call OPEN_GUI_SHORTCUT,yosys,1_2_yosys.v))
434432
435433.PHONY : floorplan_to_place
436- floorplan_to_place : $(RESULTS_DIR ) /1_synth.odb $( RESULTS_DIR ) /1_synth.sdc
434+ floorplan_to_place : $(RESULTS_DIR ) /1_synth.odb
437435 $(UNSET_AND_MAKE ) do-1_3_floorplan_to_place
438436
439437# ==============================================================================
444442$(eval $(call do-step,1_synth,$(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_2_yosys.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(LIB_FILES),synth_odb))
445443endif
446444
447- $(RESULTS_DIR ) /1_synth.sdc : $(RESULTS_DIR ) /1_synth.odb
448-
449445FORMAL_CHECK_DEPS =
450446ifneq ($(filter 1,$(LEC_CHECK ) $(SEC_CHECK ) ) ,)
451447FORMAL_CHECK_DEPS += $(RESULTS_DIR ) /1_synth_lec.v
@@ -459,20 +455,18 @@ check-kepler-formal:
459455 exit 1; \
460456 fi
461457
462- $(RESULTS_DIR ) /1_synth_lec.v : $(RESULTS_DIR ) /1_synth.odb $( RESULTS_DIR ) /1_synth.sdc
458+ $(RESULTS_DIR ) /1_synth_lec.v : $(RESULTS_DIR ) /1_synth.odb
463459 $(UNSET_AND_MAKE ) do-1_synth
464460
465461ifneq ($(filter 1,$(LEC_CHECK ) $(SEC_CHECK ) ) ,)
466462$(RESULTS_DIR ) /1_synth_lec.v : | check-kepler-formal
467463endif
468464
469- $(eval $(call do-step,2_1_floorplan,$(RESULTS_DIR)/1_synth.odb $(RESULTS_DIR)/1_synth.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(FOOTPRINT) $(SIG_MAP_FILE) $(FOOTPRINT_TCL) $(LIB_FILES) $(IO_CONSTRAINTS),floorplan))
470-
471- $(eval $(call do-copy,2_floorplan,2_1_floorplan.sdc,,.sdc))
465+ $(eval $(call do-step,2_1_floorplan,$(RESULTS_DIR)/1_synth.odb $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(FOOTPRINT) $(SIG_MAP_FILE) $(FOOTPRINT_TCL) $(LIB_FILES) $(IO_CONSTRAINTS),floorplan))
472466
473467# STEP 2: Macro Placement
474468# -------------------------------------------------------------------------------
475- $(eval $(call do-step,2_2_floorplan_macro,$(RESULTS_DIR)/2_1_floorplan.odb $(RESULTS_DIR)/1_synth.sdc $( MACRO_PLACEMENT) $(MACRO_PLACEMENT_TCL),macro_place))
469+ $(eval $(call do-step,2_2_floorplan_macro,$(RESULTS_DIR)/2_1_floorplan.odb $(MACRO_PLACEMENT) $(MACRO_PLACEMENT_TCL),macro_place))
476470
477471# STEP 3: Tapcell and Welltie insertion
478472# -------------------------------------------------------------------------------
@@ -482,17 +476,15 @@ $(eval $(call do-step,2_3_floorplan_tapcell,$(RESULTS_DIR)/2_2_floorplan_macro.o
482476# -------------------------------------------------------------------------------
483477$(eval $(call do-step,2_4_floorplan_pdn,$(RESULTS_DIR)/2_3_floorplan_tapcell.odb $(PDN_TCL),pdn))
484478
485- $(eval $(call do-copy,2_floorplan,2_4_floorplan_pdn.odb,))
486-
487- $(RESULTS_DIR ) /2_floorplan.sdc : $(RESULTS_DIR ) /2_1_floorplan.odb
479+ $(eval $(call do-copy,2_floorplan,2_4_floorplan_pdn))
488480
489481.PHONY : do-floorplan
490482do-floorplan :
491- $(UNSET_AND_MAKE ) do-2_1_floorplan do-2_2_floorplan_macro do-2_3_floorplan_tapcell do-2_4_floorplan_pdn do-2_floorplan do-2_floorplan.sdc
483+ $(UNSET_AND_MAKE ) do-2_1_floorplan do-2_2_floorplan_macro do-2_3_floorplan_tapcell do-2_4_floorplan_pdn do-2_floorplan
492484
493485.PHONY : clean_floorplan
494486clean_floorplan :
495- rm -f $(RESULTS_DIR ) /2_* floorplan* .odb $(RESULTS_DIR ) /2_floorplan .sdc $(RESULTS_DIR ) /2_* .v $(RESULTS_DIR ) /2_* .def
487+ rm -f $(RESULTS_DIR ) /2_* floorplan* .odb $(RESULTS_DIR ) /2_ * floorplan * .sdc $(RESULTS_DIR ) /2_* .v $(RESULTS_DIR ) /2_* .def
496488 rm -f $(REPORTS_DIR ) /2_*
497489 rm -f $(LOG_DIR ) /2_*
498490
@@ -504,22 +496,21 @@ clean_floorplan:
504496# |_| |_____/_/ \_\____|_____|
505497#
506498.PHONY : place
507- place : $(RESULTS_DIR ) /3_place.odb \
508- $(RESULTS_DIR)/3_place.sdc
499+ place : $(RESULTS_DIR ) /3_place.odb
509500# ==============================================================================
510501# STEP 1: Global placement without placed IOs, timing-driven, and routability-driven.
511502# -------------------------------------------------------------------------------
512- $(eval $(call do-step,3_1_place_gp_skip_io,$(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/2_floorplan.sdc $( LIB_FILES),global_place_skip_io))
503+ $(eval $(call do-step,3_1_place_gp_skip_io,$(RESULTS_DIR)/2_floorplan.odb $(LIB_FILES),global_place_skip_io))
513504
514505$(eval $(call do-step,3_2_place_iop,$(RESULTS_DIR)/3_1_place_gp_skip_io.odb,io_placement))
515506
516507# STEP 3: Global placement with placed IOs, timing-driven, and routability-driven.
517508# -------------------------------------------------------------------------------
518- $(eval $(call do-step,3_3_place_gp,$(RESULTS_DIR)/3_2_place_iop.odb $(RESULTS_DIR)/2_floorplan.sdc $( LIB_FILES),global_place))
509+ $(eval $(call do-step,3_3_place_gp,$(RESULTS_DIR)/3_2_place_iop.odb $(LIB_FILES),global_place))
519510
520511# STEP 4: Resizing & Buffering
521512# -------------------------------------------------------------------------------
522- $(eval $(call do-step,3_4_place_resized,$(RESULTS_DIR)/3_3_place_gp.odb $(RESULTS_DIR)/2_floorplan.sdc ,resize))
513+ $(eval $(call do-step,3_4_place_resized,$(RESULTS_DIR)/3_3_place_gp.odb,resize))
523514
524515.PHONY : clean_resize
525516clean_resize :
@@ -529,11 +520,7 @@ clean_resize:
529520# -------------------------------------------------------------------------------
530521$(eval $(call do-step,3_5_place_dp,$(RESULTS_DIR)/3_4_place_resized.odb,detail_place))
531522
532- $(eval $(call do-copy,3_place,3_5_place_dp.odb,))
533-
534- # detail_place writes 3_place.sdc alongside 3_5_place_dp.odb (constraints
535- # are unchanged during placement), mirroring how synth writes 1_synth.sdc.
536- $(RESULTS_DIR ) /3_place.sdc : $(RESULTS_DIR ) /3_5_place_dp.odb
523+ $(eval $(call do-copy,3_place,3_5_place_dp))
537524
538525.PHONY : do-place
539526do-place :
@@ -544,7 +531,7 @@ do-place:
544531.PHONY : clean_place
545532clean_place :
546533 rm -f $(RESULTS_DIR ) /3_* place* .odb
547- rm -f $(RESULTS_DIR ) /3_place .sdc
534+ rm -f $(RESULTS_DIR ) /3_ * place * .sdc
548535 rm -f $(RESULTS_DIR ) /3_* .def $(RESULTS_DIR ) /3_* .v
549536 rm -f $(REPORTS_DIR ) /3_*
550537 rm -f $(LOG_DIR ) /3_*
@@ -558,8 +545,7 @@ clean_place:
558545# \____| |_| |____/
559546#
560547.PHONY : cts
561- cts : $(RESULTS_DIR ) /4_cts.odb \
562- $(RESULTS_DIR)/4_cts.sdc
548+ cts : $(RESULTS_DIR ) /4_cts.odb
563549# ==============================================================================
564550
565551# Run TritonCTS
@@ -568,23 +554,21 @@ ifeq ($(LEC_CHECK),1)
568554DO_STEP_DEPS_4_1_cts += check-kepler-formal
569555endif
570556
571- $(eval $(call do-step,4_1_cts,$(RESULTS_DIR)/3_place.odb $(RESULTS_DIR)/3_place.sdc ,cts))
557+ $(eval $(call do-step,4_1_cts,$(RESULTS_DIR)/3_place.odb,cts))
572558
573559ifeq ($(LEC_CHECK ) ,1)
574560$(RESULTS_DIR ) /4_1_cts.odb : | check-kepler-formal
575561endif
576562
577- $(RESULTS_DIR ) /4_cts.sdc : $(RESULTS_DIR ) /4_cts.odb
578-
579- $(eval $(call do-copy,4_cts,4_1_cts.odb))
563+ $(eval $(call do-copy,4_cts,4_1_cts))
580564
581565.PHONY : do-cts
582566do-cts :
583567 $(UNSET_AND_MAKE ) do-4_1_cts do-4_cts
584568
585569.PHONY : clean_cts
586570clean_cts :
587- rm -rf $(RESULTS_DIR ) /4_* cts* .odb $(RESULTS_DIR ) /4_cts .sdc $(RESULTS_DIR ) /4_* .v $(RESULTS_DIR ) /4_* .def
571+ rm -rf $(RESULTS_DIR ) /4_* cts* .odb $(RESULTS_DIR ) /4_ * cts * .sdc $(RESULTS_DIR ) /4_* .v $(RESULTS_DIR ) /4_* .def
588572 rm -f $(REPORTS_DIR ) /4_*
589573 rm -rf $(LOG_DIR ) /4_*
590574
@@ -597,8 +581,7 @@ clean_cts:
597581# |_| \_\\___/ \___/ |_| |___|_| \_|\____|
598582#
599583.PHONY : route
600- route : $(RESULTS_DIR ) /5_route.odb \
601- $(RESULTS_DIR)/5_route.sdc
584+ route : $(RESULTS_DIR ) /5_route.odb
602585
603586.PHONY : grt globalroute
604587globalroute : grt
@@ -617,13 +600,11 @@ $(eval $(call do-step,5_2_route,$(RESULTS_DIR)/5_1_grt.odb,detail_route))
617600
618601$(eval $(call do-step,5_3_fillcell,$(RESULTS_DIR)/5_2_route.odb,fillcell))
619602
620- $(eval $(call do-copy,5_route,5_3_fillcell.odb))
621-
622- $(eval $(call do-copy,5_route,5_1_grt.sdc,,.sdc))
603+ $(eval $(call do-copy,5_route,5_3_fillcell))
623604
624605.PHONY : do-route
625606do-route :
626- $(UNSET_AND_MAKE ) do-5_1_grt do-5_2_route do-5_3_fillcell do-5_route do-5_route.sdc
607+ $(UNSET_AND_MAKE ) do-5_1_grt do-5_2_route do-5_3_fillcell do-5_route
627608
628609.PHONY : do-grt
629610do-grt :
@@ -632,7 +613,7 @@ do-grt:
632613.PHONY : clean_route
633614clean_route :
634615 rm -rf $(RESULTS_DIR ) /route.guide $(RESULTS_DIR ) /output_guide.mod $(RESULTS_DIR ) /updated_clks.sdc
635- rm -rf $(RESULTS_DIR ) /5_* .odb $(RESULTS_DIR ) /5_route .sdc $(RESULTS_DIR ) /5_* .def $(RESULTS_DIR ) /5_* .v
616+ rm -rf $(RESULTS_DIR ) /5_* .odb $(RESULTS_DIR ) /5_ * .sdc $(RESULTS_DIR ) /5_* .def $(RESULTS_DIR ) /5_* .v
636617 rm -f $(REPORTS_DIR ) /5_*
637618 rm -f $(LOG_DIR ) /5_*
638619
@@ -661,7 +642,6 @@ klayout_guides: $(RESULTS_DIR)/5_route.def $(OBJECTS_DIR)/klayout.lyt
661642.PHONY : finish
662643finish : $(LOG_DIR ) /6_report.log \
663644 $(RESULTS_DIR)/6_final.v \
664- $(RESULTS_DIR)/6_final.sdc \
665645 $(GDS_FINAL_FILE)
666646 $(UNSET_AND_MAKE) elapsed
667647
@@ -674,24 +654,18 @@ elapsed:
674654elapsed-all :
675655 @$(PYTHON_EXE ) $(UTILS_DIR ) /genElapsedTime.py -d $(shell find $(WORK_HOME ) /logs/$(PLATFORM ) /* /* / -type d)
676656
677- $(eval $(call do-step,6_1_fill,$(RESULTS_DIR)/5_route.odb $(RESULTS_DIR)/5_route.sdc $(FILL_CONFIG),density_fill))
678-
679- $(eval $(call do-copy,6_1_fill,5_route.sdc,,.sdc))
657+ $(eval $(call do-step,6_1_fill,$(RESULTS_DIR)/5_route.odb $(FILL_CONFIG),density_fill))
680658
681659ifneq ($(filter 1,$(LEC_CHECK ) $(SEC_CHECK ) ) ,)
682660DO_STEP_DEPS_6_report += check-kepler-formal
683661endif
684662
685- $(eval $(call do-step,6_report,$(RESULTS_DIR)/6_1_fill.odb $(RESULTS_DIR)/6_1_fill.sdc $( FORMAL_CHECK_DEPS),final_report,.log,$(LOG_DIR)))
663+ $(eval $(call do-step,6_report,$(RESULTS_DIR)/6_1_fill.odb $(FORMAL_CHECK_DEPS),final_report,.log,$(LOG_DIR)))
686664
687665ifneq ($(filter 1,$(LEC_CHECK ) $(SEC_CHECK ) ) ,)
688666$(LOG_DIR ) /6_report.log : | check-kepler-formal
689667endif
690668
691- # final_report writes 6_final.sdc alongside 6_final.odb (constraints are
692- # unchanged during finishing), mirroring how synth writes 1_synth.sdc.
693- $(RESULTS_DIR ) /6_final.sdc : $(LOG_DIR ) /6_report.log
694-
695669$(RESULTS_DIR ) /6_final.def : $(LOG_DIR ) /6_report.log
696670
697671# The final results are called 6_final.*, so it is convenient when scripting
@@ -704,10 +678,10 @@ final: finish
704678
705679.PHONY : do-finish
706680do-finish :
707- $(UNSET_AND_MAKE ) do-6_1_fill do-6_1_fill.sdc do- 6_report elapsed
681+ $(UNSET_AND_MAKE ) do-6_1_fill do-6_report elapsed
708682
709683.PHONY : generate_abstract
710- generate_abstract : $(RESULTS_DIR ) /6_final.gds $(RESULTS_DIR ) /6_final.def $(RESULTS_DIR ) /6_final.v $( RESULTS_DIR ) /6_final.sdc
684+ generate_abstract : $(RESULTS_DIR ) /6_final.gds $(RESULTS_DIR ) /6_final.def $(RESULTS_DIR ) /6_final.v
711685 $(UNSET_AND_MAKE ) do-generate_abstract
712686
713687# Set ABSTRACT_SOURCE if you want to create an abstract from another stage than 6_final.
0 commit comments