Skip to content

Commit 80c8caa

Browse files
committed
skip incremental repair for failing designs
Signed-off-by: Eder Monteiro <[email protected]>
1 parent 14948f1 commit 80c8caa

File tree

5 files changed

+31
-58
lines changed

5 files changed

+31
-58
lines changed

flow/designs/gf12/aes/config.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ else
1818
export DESIGN_TYPE = CELL_NODEN
1919
endif
2020

21+
export SKIP_INCREMENTAL_REPAIR = 1

flow/designs/gf12/ca53/config.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,4 @@ export DESIGN_TYPE = CELL_NODEN
5858
endif
5959

6060
export SKIP_PIN_SWAP = 1
61+
export SKIP_INCREMENTAL_REPAIR = 1

flow/designs/gf12/ca53/config_mpl2.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,5 @@ export DESIGN_TYPE = CELL
6767
else
6868
export DESIGN_TYPE = CELL_NODEN
6969
endif
70+
71+
export SKIP_INCREMENTAL_REPAIR = 1

flow/designs/nangate45/swerv_wrapper/config.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,5 @@ export MACRO_PLACE_CHANNEL = 20 20
3232

3333
export PLACE_DENSITY_LB_ADDON = 0.10
3434
export TNS_END_PERCENT = 100
35+
36+
export SKIP_INCREMENTAL_REPAIR = 1

flow/scripts/global_route.tcl

Lines changed: 25 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -53,65 +53,32 @@ if { [info exists ::env(RECOVER_POWER)] } {
5353
source $env(SCRIPTS_DIR)/report_metrics.tcl
5454
report_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

11683
set_propagated_clock [all_clocks]
11784
estimate_parasitics -global_routing

0 commit comments

Comments
 (0)