@@ -53,65 +53,32 @@ if { [info exists ::env(RECOVER_POWER)] } {
5353source $env(SCRIPTS_DIR) /report_metrics.tcl
5454report_metrics " global route pre repair design"
5555
56- # Repair design using global route parasitics
57- puts " Perform buffer insertion..."
58- set repair_design_args " "
59- if { [info exists ::env(CAP_MARGIN)] && $::env(CAP_MARGIN) > 0.0} {
60- puts " Cap margin $::env(CAP_MARGIN) "
61- append repair_design_args " -cap_margin $::env(CAP_MARGIN) "
56+ if { ![info exists ::env(SKIP_INCREMENTAL_REPAIR)] } {
57+ # Repair design using global route parasitics
58+ puts " Perform buffer insertion..."
59+ repair_design
60+ report_metrics " global route post repair design"
61+
62+ # Running DPL to fix overlapped instances
63+ # Run to get modified net by DPL
64+ global_route -start_incremental
65+ detailed_placement
66+ # Route only the modified net by DPL
67+ global_route -end_incremental -congestion_report_file $env(REPORTS_DIR) /congestion_post_repair_design.rpt
68+
69+ # Repair timing using global route parasitics
70+ puts " Repair setup and hold violations..."
71+ estimate_parasitics -global_routing
72+ repair_timing
73+ report_metrics " global route post repair timing"
74+
75+ # Running DPL to fix overlapped instances
76+ # Run to get modified net by DPL
77+ global_route -start_incremental
78+ detailed_placement
79+ # Route only the modified net by DPL
80+ global_route -end_incremental -congestion_report_file $env(REPORTS_DIR) /congestion_post_repair_timing.rpt
6281}
63- if { [info exists ::env(SLEW_MARGIN)] && $::env(SLEW_MARGIN) > 0.0} {
64- puts " Slew margin $::env(SLEW_MARGIN) "
65- append repair_design_args " -slew_margin $::env(SLEW_MARGIN) "
66- }
67- # repair_design {*}$repair_design_args
68- repair_design
69- report_metrics " global route post repair design"
70-
71- # Running DPL to fix overlapped instances
72- # Run to get modified net by DPL
73- global_route -start_incremental
74- detailed_placement
75- # Route only the modified net by DPL
76- global_route -end_incremental -congestion_report_file $env(REPORTS_DIR) /congestion_post_repair_design.rpt
77-
78- # Repair timing using global route parasitics
79- puts " Repair setup and hold violations..."
80- estimate_parasitics -global_routing
81- # process user settings
82- set repair_timing_args " "
83- if { [info exists ::env(SETUP_SLACK_MARGIN)] && $::env(SETUP_SLACK_MARGIN) > 0.0} {
84- puts " Setup slack margin $::env(SETUP_SLACK_MARGIN) "
85- append repair_timing_args " -setup_margin $::env(SETUP_SLACK_MARGIN) "
86- }
87- if { [info exists ::env(HOLD_SLACK_MARGIN)] && $::env(HOLD_SLACK_MARGIN) > 0.0} {
88- puts " Hold slack margin $::env(HOLD_SLACK_MARGIN) "
89- append repair_timing_args " -hold_margin $::env(HOLD_SLACK_MARGIN) "
90- }
91-
92- puts " TNS end percent $::env(TNS_END_PERCENT) "
93- append repair_timing_args " -repair_tns $::env(TNS_END_PERCENT) "
94-
95- if { [info exists ::env(SKIP_PIN_SWAP)] } {
96- puts " Skipping pin swapping during optimization"
97- append repair_timing_args " -skip_pin_swap"
98- }
99-
100- if { [info exists ::env(SKIP_GATE_CLONING)] } {
101- puts " Skipping gate cloning during optimization"
102- append repair_timing_args " -skip_gate_cloning"
103- }
104-
105- # repair_timing {*}$repair_timing_args
106- repair_timing
107- report_metrics " global route post repair timing"
108-
109- # Running DPL to fix overlapped instances
110- # Run to get modified net by DPL
111- global_route -start_incremental
112- detailed_placement
113- # Route only the modified net by DPL
114- global_route -end_incremental -congestion_report_file $env(REPORTS_DIR) /congestion_post_repair_timing.rpt
11582
11683set_propagated_clock [all_clocks]
11784estimate_parasitics -global_routing
0 commit comments