Skip to content

Commit bb7f27d

Browse files
oharboeclaude
andcommitted
flow: every .odb has its .sdc
Every step that writes N.odb writes N.sdc beside it, and every step reads the .sdc beside the .odb it loads. Before synthesis the .sdc is the user's (1_2_yosys.sdc); from 1_synth on, every .odb has its own. This deletes find_sdc_file, which picked an .sdc by name order and gave open_*/gui_* another stage's constraints for a .def or a failed .odb; the second argument of load_design, which named by hand which earlier step's .sdc a script borrowed; the separate orfs_write_sdc and flow_write_sdc calls, now part of orfs_write_db, orfs_copy_db and flow_write_db; and every .sdc rule and prerequisite in the Makefile except the user's, since a step's input .odb comes with its .sdc. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
1 parent 64939f3 commit bb7f27d

27 files changed

Lines changed: 85 additions & 164 deletions

‎flow/Makefile‎

Lines changed: 38 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
408407
endef
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
419416
define 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
426424
endef
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
# ==============================================================================
@@ -444,8 +442,6 @@ else
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))
445443
endif
446444

447-
$(RESULTS_DIR)/1_synth.sdc: $(RESULTS_DIR)/1_synth.odb
448-
449445
FORMAL_CHECK_DEPS =
450446
ifneq ($(filter 1,$(LEC_CHECK) $(SEC_CHECK)),)
451447
FORMAL_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

465461
ifneq ($(filter 1,$(LEC_CHECK) $(SEC_CHECK)),)
466462
$(RESULTS_DIR)/1_synth_lec.v: | check-kepler-formal
467463
endif
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
490482
do-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
494486
clean_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
525516
clean_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
539526
do-place:
@@ -544,7 +531,7 @@ do-place:
544531
.PHONY: clean_place
545532
clean_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)
568554
DO_STEP_DEPS_4_1_cts += check-kepler-formal
569555
endif
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

573559
ifeq ($(LEC_CHECK),1)
574560
$(RESULTS_DIR)/4_1_cts.odb: | check-kepler-formal
575561
endif
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
582566
do-cts:
583567
$(UNSET_AND_MAKE) do-4_1_cts do-4_cts
584568

585569
.PHONY: clean_cts
586570
clean_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
604587
globalroute: 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
625606
do-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
629610
do-grt:
@@ -632,7 +613,7 @@ do-grt:
632613
.PHONY: clean_route
633614
clean_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
662643
finish: $(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:
674654
elapsed-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

681659
ifneq ($(filter 1,$(LEC_CHECK) $(SEC_CHECK)),)
682660
DO_STEP_DEPS_6_report += check-kepler-formal
683661
endif
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

687665
ifneq ($(filter 1,$(LEC_CHECK) $(SEC_CHECK)),)
688666
$(LOG_DIR)/6_report.log: | check-kepler-formal
689667
endif
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
706680
do-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.

‎flow/scripts/cdl.tcl‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
source $::env(SCRIPTS_DIR)/load.tcl
22
erase_non_stage_variables final
3-
load_design 6_final.odb 6_final.sdc
3+
load_design 6_final.odb
44

55
write_cdl -masters $::env(CDL_FILE) $::env(RESULTS_DIR)/6_final.cdl

‎flow/scripts/cts.tcl‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ utl::set_metrics_stage "cts__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
33
source $::env(SCRIPTS_DIR)/formal_check.tcl
44
erase_non_stage_variables cts
5-
load_design 3_place.odb 3_place.sdc
5+
load_design 3_place.odb
66
source_step_tcl PRE CTS
77

88
# Clone clock tree inverters next to register loads
@@ -12,7 +12,6 @@ repair_clock_inverters
1212
proc save_progress { stage } {
1313
puts "Run 'make gui_$stage.odb' to load progress snapshot"
1414
orfs_write_db $::env(RESULTS_DIR)/$stage.odb
15-
orfs_write_sdc $::env(RESULTS_DIR)/$stage.sdc
1615
}
1716

1817
# Run CTS
@@ -87,4 +86,3 @@ report_metrics 4 "cts final"
8786
source_step_tcl POST CTS
8887

8988
orfs_write_db $::env(RESULTS_DIR)/4_1_cts.odb
90-
orfs_write_sdc $::env(RESULTS_DIR)/4_cts.sdc

‎flow/scripts/density_fill.tcl‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
source $::env(SCRIPTS_DIR)/load.tcl
22
erase_non_stage_variables final
3-
load_design 5_route.odb 5_route.sdc
3+
load_design 5_route.odb
44
source_step_tcl PRE DENSITY_FILL
55

66
if { $::env(USE_FILL) } {

‎flow/scripts/detail_place.tcl‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
utl::set_metrics_stage "detailedplace__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
33
erase_non_stage_variables place
4-
load_design 3_4_place_resized.odb 2_floorplan.sdc
4+
load_design 3_4_place_resized.odb
55
source_step_tcl PRE DETAIL_PLACE
66

77
proc do_dpl { } {
@@ -40,4 +40,3 @@ report_metrics 3 "detailed place" true false
4040
source_step_tcl POST DETAIL_PLACE
4141

4242
orfs_write_db $::env(RESULTS_DIR)/3_5_place_dp.odb
43-
orfs_write_sdc $::env(RESULTS_DIR)/3_place.sdc

‎flow/scripts/detail_route.tcl‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
utl::set_metrics_stage "detailedroute__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
3-
load_design 5_1_grt.odb 5_1_grt.sdc
3+
load_design 5_1_grt.odb
44
source_step_tcl PRE DETAIL_ROUTE
55
if { ![grt::have_routes] } {
66
error "Global routing failed, run `make gui_grt` and load $::global_route_congestion_report \

‎flow/scripts/fillcell.tcl‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
source $::env(SCRIPTS_DIR)/load.tcl
22
erase_non_stage_variables route
33
if { [env_var_exists_and_non_empty FILL_CELLS] } {
4-
load_design 5_2_route.odb 5_1_grt.sdc
4+
load_design 5_2_route.odb
55
source_step_tcl PRE FILLCELL
66

77
set_propagated_clock [all_clocks]

‎flow/scripts/final_connect.tcl‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
utl::set_metrics_stage "finish__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
33
erase_non_stage_variables final
4-
load_design 6_1_fill.odb 6_1_fill.sdc
4+
load_design 6_1_fill.odb
55
source_step_tcl PRE FINAL_REPORT
66

77
set_propagated_clock [all_clocks]

‎flow/scripts/final_report.tcl‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@
44
source $::env(SCRIPTS_DIR)/final_connect.tcl
55
# final_outputs.tcl writes the endpoint slack after parasitic extraction
66
orfs_write_db $::env(RESULTS_DIR)/6_final.odb 0
7-
orfs_write_sdc $::env(RESULTS_DIR)/6_final.sdc
87
source $::env(SCRIPTS_DIR)/final_outputs.tcl

‎flow/scripts/floorplan.tcl‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
utl::set_metrics_stage "floorplan__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
33
erase_non_stage_variables floorplan
4-
load_design 1_synth.odb 1_synth.sdc
4+
load_design 1_synth.odb
55
source_step_tcl PRE FLOORPLAN
66

77
proc report_unused_masters { } {
@@ -166,4 +166,3 @@ source_step_tcl POST FLOORPLAN
166166
source_env_var_if_exists IO_CONSTRAINTS
167167

168168
orfs_write_db $::env(RESULTS_DIR)/2_1_floorplan.odb
169-
orfs_write_sdc $::env(RESULTS_DIR)/2_1_floorplan.sdc

0 commit comments

Comments
 (0)