Skip to content

Commit 09312c7

Browse files
committed
Move repair_tie_fanout to floorplan.tcl
Covers the rare case of a tie cell connected to multiple buffers each driving an output. You want to split up the tie cell before removing the buffers. Signed-off-by: Matt Liberty <[email protected]>
1 parent 43f9bb6 commit 09312c7

File tree

5 files changed

+30
-24
lines changed

5 files changed

+30
-24
lines changed

docs/user/FlowVariables.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,8 @@ configuration file.
320320
- [SKIP_PIN_SWAP](#SKIP_PIN_SWAP)
321321
- [SKIP_REPORT_METRICS](#SKIP_REPORT_METRICS)
322322
- [TAPCELL_TCL](#TAPCELL_TCL)
323+
- [TIEHI_CELL_AND_PORT](#TIEHI_CELL_AND_PORT)
324+
- [TIELO_CELL_AND_PORT](#TIELO_CELL_AND_PORT)
323325
- [TNS_END_PERCENT](#TNS_END_PERCENT)
324326

325327
## place variables
@@ -340,8 +342,6 @@ configuration file.
340342
- [PLACE_PINS_ARGS](#PLACE_PINS_ARGS)
341343
- [ROUTING_LAYER_ADJUSTMENT](#ROUTING_LAYER_ADJUSTMENT)
342344
- [SKIP_REPORT_METRICS](#SKIP_REPORT_METRICS)
343-
- [TIEHI_CELL_AND_PORT](#TIEHI_CELL_AND_PORT)
344-
- [TIELO_CELL_AND_PORT](#TIELO_CELL_AND_PORT)
345345

346346
## cts variables
347347

flow/scripts/floorplan.tcl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ if {[env_var_exists_and_non_empty FOOTPRINT_TCL]} {
103103
log_cmd source $::env(FOOTPRINT_TCL)
104104
}
105105

106+
# This needs to come before any call to remove_buffers. You could have one
107+
# tie driving multiple buffers that drive multiple outputs.
108+
repair_tie_fanout_helper
109+
106110
if { [env_var_equals REMOVE_ABC_BUFFERS 1] } {
107111
# remove buffers inserted by yosys/abc
108112
remove_buffers

flow/scripts/resize.tcl

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,6 @@ set_dont_use $::env(DONT_USE_CELLS)
1212

1313
repair_design_helper
1414

15-
if { [env_var_exists_and_non_empty TIE_SEPARATION] } {
16-
set tie_separation $env(TIE_SEPARATION)
17-
} else {
18-
set tie_separation 0
19-
}
20-
21-
# Repair tie lo fanout
22-
puts "Repair tie lo fanout..."
23-
set tielo_cell_name [lindex $env(TIELO_CELL_AND_PORT) 0]
24-
set tielo_lib_name [get_name [get_property [lindex [get_lib_cell $tielo_cell_name] 0] library]]
25-
set tielo_pin $tielo_lib_name/$tielo_cell_name/[lindex $env(TIELO_CELL_AND_PORT) 1]
26-
repair_tie_fanout -separation $tie_separation $tielo_pin
27-
28-
# Repair tie hi fanout
29-
puts "Repair tie hi fanout..."
30-
set tiehi_cell_name [lindex $env(TIEHI_CELL_AND_PORT) 0]
31-
set tiehi_lib_name [get_name [get_property [lindex [get_lib_cell $tiehi_cell_name] 0] library]]
32-
set tiehi_pin $tiehi_lib_name/$tiehi_cell_name/[lindex $env(TIEHI_CELL_AND_PORT) 1]
33-
repair_tie_fanout -separation $tie_separation $tiehi_pin
34-
3515
# hold violations are not repaired until after CTS
3616

3717
# post report

flow/scripts/util.tcl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,28 @@ proc log_cmd {cmd args} {
1313
return $result
1414
}
1515

16+
proc repair_tie_fanout_helper {} {
17+
if { [env_var_exists_and_non_empty TIE_SEPARATION] } {
18+
set tie_separation $env(TIE_SEPARATION)
19+
} else {
20+
set tie_separation 0
21+
}
22+
23+
# Repair tie lo fanout
24+
puts "Repair tie lo fanout..."
25+
set tielo_cell_name [lindex $::env(TIELO_CELL_AND_PORT) 0]
26+
set tielo_lib_name [get_name [get_property [lindex [get_lib_cell $tielo_cell_name] 0] library]]
27+
set tielo_pin $tielo_lib_name/$tielo_cell_name/[lindex $::env(TIELO_CELL_AND_PORT) 1]
28+
repair_tie_fanout -separation $tie_separation $tielo_pin
29+
30+
# Repair tie hi fanout
31+
puts "Repair tie hi fanout..."
32+
set tiehi_cell_name [lindex $::env(TIEHI_CELL_AND_PORT) 0]
33+
set tiehi_lib_name [get_name [get_property [lindex [get_lib_cell $tiehi_cell_name] 0] library]]
34+
set tiehi_pin $tiehi_lib_name/$tiehi_cell_name/[lindex $::env(TIEHI_CELL_AND_PORT) 1]
35+
repair_tie_fanout -separation $tie_separation $tiehi_pin
36+
}
37+
1638
proc fast_route {} {
1739
if {[env_var_exists_and_non_empty FASTROUTE_TCL]} {
1840
log_cmd source $::env(FASTROUTE_TCL)

flow/scripts/variables.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ TIEHI_CELL_AND_PORT:
214214
Netlist.
215215
stages:
216216
- synth
217-
- place
217+
- floorplan
218218
TIELO_CELL_AND_PORT:
219219
description: |
220220
Tie low cells used in Yosys synthesis to replace a logical 0 in the Netlist.
221221
stages:
222222
- synth
223-
- place
223+
- floorplan
224224
MIN_BUF_CELL_AND_PORTS:
225225
description: |
226226
Used to insert a buffer cell to pass through wires. Used in synthesis.

0 commit comments

Comments
 (0)