Skip to content

Commit cfe9afb

Browse files
committed
Support new optimization flows
1) SYNTH_OPT_HIER to enable optimization across hier boundaries 2) SKIP_VT_SWAP to disable new VT swap opto 3) SKIP_REPAIR_TIE_FANOUT to skip tie fanout repair Signed-off-by: Cho Moon <[email protected]>
1 parent bdfc2f6 commit cfe9afb

File tree

5 files changed

+40
-17
lines changed

5 files changed

+40
-17
lines changed

flow/scripts/floorplan.tcl

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,23 @@ if { [env_var_exists_and_non_empty MAKE_TRACKS] } {
9595

9696
source_env_var_if_exists FOOTPRINT_TCL
9797

98-
# This needs to come before any call to remove_buffers. You could have one
99-
# tie driving multiple buffers that drive multiple outputs.
100-
# Repair tie lo fanout
101-
puts "Repair tie lo fanout..."
102-
set tielo_cell_name [lindex $::env(TIELO_CELL_AND_PORT) 0]
103-
set tielo_lib_name [get_name [get_property [lindex [get_lib_cell $tielo_cell_name] 0] library]]
104-
set tielo_pin $tielo_lib_name/$tielo_cell_name/[lindex $::env(TIELO_CELL_AND_PORT) 1]
105-
repair_tie_fanout -separation $::env(TIE_SEPARATION) $tielo_pin
106-
107-
# Repair tie hi fanout
108-
puts "Repair tie hi fanout..."
109-
set tiehi_cell_name [lindex $::env(TIEHI_CELL_AND_PORT) 0]
110-
set tiehi_lib_name [get_name [get_property [lindex [get_lib_cell $tiehi_cell_name] 0] library]]
111-
set tiehi_pin $tiehi_lib_name/$tiehi_cell_name/[lindex $::env(TIEHI_CELL_AND_PORT) 1]
112-
repair_tie_fanout -separation $::env(TIE_SEPARATION) $tiehi_pin
98+
if { ![env_var_equal SKIP_REPAIR_TIE_FANOUT 1] } {
99+
# This needs to come before any call to remove_buffers. You could have one
100+
# tie driving multiple buffers that drive multiple outputs.
101+
# Repair tie lo fanout
102+
puts "Repair tie lo fanout..."
103+
set tielo_cell_name [lindex $::env(TIELO_CELL_AND_PORT) 0]
104+
set tielo_lib_name [get_name [get_property [lindex [get_lib_cell $tielo_cell_name] 0] library]]
105+
set tielo_pin $tielo_lib_name/$tielo_cell_name/[lindex $::env(TIELO_CELL_AND_PORT) 1]
106+
repair_tie_fanout -separation $::env(TIE_SEPARATION) $tielo_pin
107+
108+
# Repair tie hi fanout
109+
puts "Repair tie hi fanout..."
110+
set tiehi_cell_name [lindex $::env(TIEHI_CELL_AND_PORT) 0]
111+
set tiehi_lib_name [get_name [get_property [lindex [get_lib_cell $tiehi_cell_name] 0] library]]
112+
set tiehi_pin $tiehi_lib_name/$tiehi_cell_name/[lindex $::env(TIEHI_CELL_AND_PORT) 1]
113+
repair_tie_fanout -separation $::env(TIE_SEPARATION) $tiehi_pin
114+
}
113115

114116
if { [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] } {
115117
estimate_parasitics -placement
@@ -121,7 +123,7 @@ if { [env_var_equals REMOVE_ABC_BUFFERS 1] } {
121123
remove_buffers
122124
} else {
123125
# Skip clone & split
124-
set ::env(SETUP_MOVE_SEQUENCE) "unbuffer,sizeup,swap,buffer"
126+
set ::env(SETUP_MOVE_SEQUENCE) "unbuffer,sizeup,swap,buffer,vt_swap"
125127
set ::env(SKIP_LAST_GASP) 1
126128
repair_timing_helper -setup
127129
}

flow/scripts/synth.tcl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ if { [env_var_exists_and_non_empty SYNTH_OPERATIONS_ARGS] } {
2828
set synth_full_args [concat $synth_full_args \
2929
"-extra-map $::env(FLOW_HOME)/platforms/common/lcu_kogge_stone.v"]
3030
}
31+
if { [env_var_exists_and_non_empty SYNTH_OPT_HIER] } {
32+
set synth_full_args [concat $synth_full_args -hieropt]
33+
}
3134

3235
if { ![env_var_equals SYNTH_HIERARCHICAL 1] } {
3336
# Perform standard coarse-level synthesis script, flatten right away

flow/scripts/util.tcl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ proc repair_timing_helper { args } {
2525
append_env_var additional_args SKIP_GATE_CLONING -skip_gate_cloning 0
2626
append_env_var additional_args SKIP_BUFFER_REMOVAL -skip_buffer_removal 0
2727
append_env_var additional_args SKIP_LAST_GASP -skip_last_gasp 0
28+
append_env_var additional_args SKIP_VT_SWAP -skip_vt_swap 0
2829
append_env_var additional_args MATCH_CELL_FOOTPRINT -match_cell_footprint 0
2930
log_cmd repair_timing {*}$additional_args
3031
}

flow/scripts/variables.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,13 @@ SKIP_PIN_SWAP:
553553
- cts
554554
- floorplan
555555
- grt
556+
SKIP_VT_SWAP:
557+
description: >
558+
Do not perform VT swap to improve QoR (default: do VT swap).
559+
stages:
560+
- cts
561+
- floorplan
562+
- grt
556563
REMOVE_CELLS_FOR_EQY:
557564
description: >
558565
String patterns directly passed to write_verilog -remove_cells <> for
@@ -565,6 +572,11 @@ SKIP_CTS_REPAIR_TIMING:
565572
architectural exploration or when getting CI up and running.
566573
stages:
567574
- cts
575+
SKIP_REPAIR_TIE_FANOUT:
576+
description: >
577+
Skip repair_tie_fanout at floorplan step.
578+
stages:
579+
- floorplan
568580
MIN_ROUTING_LAYER:
569581
description: |
570582
The lowest metal layer name to be used in routing.
@@ -712,6 +724,11 @@ SYNTH_HIER_SEPARATOR:
712724
description: |
713725
Separator used for the synthesis flatten stage.
714726
default: .
727+
SYNTH_OPT_HIER:
728+
description: |
729+
Optimize constants across hierarchical boundaries.
730+
stages:
731+
- synth
715732
VERILOG_TOP_PARAMS:
716733
description: |
717734
Apply toplevel params (if exist).

tools/OpenROAD

Submodule OpenROAD updated 329 files

0 commit comments

Comments
 (0)