Skip to content

Commit 0b4cf54

Browse files
committed
include additional args for repair_design and repair_timing
Signed-off-by: Eder Monteiro <[email protected]>
1 parent 67f3675 commit 0b4cf54

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

flow/scripts/global_route.tcl

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,17 @@ source $env(SCRIPTS_DIR)/report_metrics.tcl
5454
report_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
5868
report_metrics "global route post repair design"
5969

6070
# Running DPL to fix overlapped instances
@@ -65,8 +75,33 @@ detailed_placement
6575
global_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..."
6879
estimate_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
70105
report_metrics "global route post repair timing"
71106

72107
# Running DPL to fix overlapped instances

0 commit comments

Comments
 (0)