@@ -54,7 +54,17 @@ source $env(SCRIPTS_DIR)/report_metrics.tcl
5454report_metrics " global route pre repair design"
5555
5656# Repair design using global route parasitics
57- repair_design
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) "
62+ }
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
5868report_metrics " global route post repair design"
5969
6070# Running DPL to fix overlapped instances
@@ -65,8 +75,33 @@ detailed_placement
6575global_route -end_incremental -congestion_report_file $env(REPORTS_DIR) /congestion_post_repair_design.rpt
6676
6777# Repair timing using global route parasitics
78+ puts " Repair setup and hold violations..."
6879estimate_parasitics -global_routing
69- repair_timing
80+ # process user settings
81+ set repair_timing_args " "
82+ if { [info exists ::env(SETUP_SLACK_MARGIN)] && $::env(SETUP_SLACK_MARGIN) > 0.0} {
83+ puts " Setup slack margin $::env(SETUP_SLACK_MARGIN) "
84+ append repair_timing_args " -setup_margin $::env(SETUP_SLACK_MARGIN) "
85+ }
86+ if { [info exists ::env(HOLD_SLACK_MARGIN)] && $::env(HOLD_SLACK_MARGIN) > 0.0} {
87+ puts " Hold slack margin $::env(HOLD_SLACK_MARGIN) "
88+ append repair_timing_args " -hold_margin $::env(HOLD_SLACK_MARGIN) "
89+ }
90+
91+ puts " TNS end percent $::env(TNS_END_PERCENT) "
92+ append repair_timing_args " -repair_tns $::env(TNS_END_PERCENT) "
93+
94+ if { [info exists ::env(SKIP_PIN_SWAP)] } {
95+ puts " Skipping pin swapping during optimization"
96+ append repair_timing_args " -skip_pin_swap"
97+ }
98+
99+ if { [info exists ::env(SKIP_GATE_CLONING)] } {
100+ puts " Skipping gate cloning during optimization"
101+ append repair_timing_args " -skip_gate_cloning"
102+ }
103+
104+ repair_timing {*}$repair_timing_args
70105report_metrics " global route post repair timing"
71106
72107# Running DPL to fix overlapped instances
0 commit comments