Skip to content

Commit e44b357

Browse files
authored
Merge pull request #3352 from Pinata-Consulting/fix-tie-floorplan
Fix tie floorplan
2 parents 62503f5 + 76ae513 commit e44b357

File tree

4 files changed

+17
-26
lines changed

4 files changed

+17
-26
lines changed

docs/user/FlowVariables.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ configuration file.
238238
| <a name="TECH_LEF"></a>TECH_LEF| A technology LEF file of the PDK that includes all relevant information regarding metal layers, vias, and spacing requirements.| |
239239
| <a name="TIEHI_CELL_AND_PORT"></a>TIEHI_CELL_AND_PORT| Tie high cells used in Yosys synthesis to replace a logical 1 in the Netlist.| |
240240
| <a name="TIELO_CELL_AND_PORT"></a>TIELO_CELL_AND_PORT| Tie low cells used in Yosys synthesis to replace a logical 0 in the Netlist.| |
241-
| <a name="TIE_SEPARATION"></a>TIE_SEPARATION| Distance separating tie high/low instances from the load.| |
241+
| <a name="TIE_SEPARATION"></a>TIE_SEPARATION| Distance separating tie high/low instances from the load.| 0|
242242
| <a name="TNS_END_PERCENT"></a>TNS_END_PERCENT| Default TNS_END_PERCENT value for post CTS timing repair. Try fixing all violating endpoints by default (reduce to 5% for runtime). Specifies how many percent of violating paths to fix [0-100]. Worst path will always be fixed.| 100|
243243
| <a name="USE_FILL"></a>USE_FILL| Whether to perform metal density filling.| 0|
244244
| <a name="VERILOG_DEFINES"></a>VERILOG_DEFINES| Preprocessor defines passed to the language frontend. Example: `-D HPDCACHE_ASSERT_OFF`| |
@@ -331,6 +331,7 @@ configuration file.
331331
- [TAPCELL_TCL](#TAPCELL_TCL)
332332
- [TIEHI_CELL_AND_PORT](#TIEHI_CELL_AND_PORT)
333333
- [TIELO_CELL_AND_PORT](#TIELO_CELL_AND_PORT)
334+
- [TIE_SEPARATION](#TIE_SEPARATION)
334335
- [TNS_END_PERCENT](#TNS_END_PERCENT)
335336

336337
## place variables
@@ -353,7 +354,6 @@ configuration file.
353354
- [ROUTING_LAYER_ADJUSTMENT](#ROUTING_LAYER_ADJUSTMENT)
354355
- [SKIP_REPORT_METRICS](#SKIP_REPORT_METRICS)
355356
- [SWAP_ARITH_OPERATORS](#SWAP_ARITH_OPERATORS)
356-
- [TIE_SEPARATION](#TIE_SEPARATION)
357357

358358
## cts variables
359359

flow/scripts/floorplan.tcl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,19 @@ source_env_var_if_exists FOOTPRINT_TCL
9797

9898
# This needs to come before any call to remove_buffers. You could have one
9999
# tie driving multiple buffers that drive multiple outputs.
100-
repair_tie_fanout_helper
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
101113

102114
if { [env_var_exists_and_non_empty SWAP_ARITH_OPERATORS] } {
103115
estimate_parasitics -placement

flow/scripts/util.tcl

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,6 @@ 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-
3816
proc repair_timing_helper { args } {
3917
set additional_args "$args -verbose"
4018
append_env_var additional_args SETUP_SLACK_MARGIN -setup_margin 1

flow/scripts/variables.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ TIE_SEPARATION:
232232
description: |
233233
Distance separating tie high/low instances from the load.
234234
stages:
235-
- place
235+
- floorplan
236+
default: 0
236237
EARLY_SIZING_CAP_RATIO:
237238
description: |
238239
Ratio between the input pin capacitance and the output pin load during initial gate sizing.

0 commit comments

Comments
 (0)