Skip to content

Commit 2573261

Browse files
committed
ol2/tt_top: New pad ring placement formula
It ensures things are evenly spaced and centered Signed-off-by: Sylvain Munaut <[email protected]>
1 parent ab4a2b1 commit 2573261

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

ol2/tt_top/padring.tcl

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,33 +13,37 @@ set PAD_IDX_OFFSET 1
1313
set PAD_IDX_COUNT [expr ($MAX_NUM_PADS_HORIZONTAL + $MAX_NUM_PADS_VERTICAL)*2]
1414

1515
proc calc_horizontal_pad_location {index} {
16-
global IO_LENGTH
17-
global IO_WIDTH
18-
global BONDPAD_SIZE
19-
global MAX_NUM_PADS_HORIZONTAL
20-
global SEALRING_OFFSET
21-
22-
set DIE_WIDTH [expr {[lindex $::env(DIE_AREA) 2] - [lindex $::env(DIE_AREA) 0]}]
23-
set PAD_OFFSET [expr {$IO_LENGTH + $BONDPAD_SIZE + $SEALRING_OFFSET}]
24-
set PAD_AREA_WIDTH [expr {$DIE_WIDTH - ($PAD_OFFSET * 2)}]
25-
set HORIZONTAL_PAD_DISTANCE [expr {($PAD_AREA_WIDTH / $MAX_NUM_PADS_HORIZONTAL) - $IO_WIDTH}]
26-
27-
return [expr {$PAD_OFFSET + (($IO_WIDTH + $HORIZONTAL_PAD_DISTANCE) * $index) + ($HORIZONTAL_PAD_DISTANCE / 2)}]
16+
global IO_LENGTH
17+
global IO_WIDTH
18+
global BONDPAD_SIZE
19+
global MAX_NUM_PADS_HORIZONTAL
20+
global SEALRING_OFFSET
21+
22+
set DIE_WIDTH [expr {[lindex $::env(DIE_AREA) 2] - [lindex $::env(DIE_AREA) 0]}]
23+
set PAD_OFFSET [expr {$IO_LENGTH + $BONDPAD_SIZE + $SEALRING_OFFSET}]
24+
set PAD_AREA_WIDTH [expr {$DIE_WIDTH - ($PAD_OFFSET * 2)}]
25+
set SPACE_WIDTH [expr {$PAD_AREA_WIDTH - ($IO_WIDTH * $MAX_NUM_PADS_HORIZONTAL)}]
26+
set HORIZONTAL_PAD_DISTANCE [expr {2 * floor($SPACE_WIDTH / (2 * $MAX_NUM_PADS_HORIZONTAL))}]
27+
set SPACE_LEFT [expr {$SPACE_WIDTH - $HORIZONTAL_PAD_DISTANCE * ($MAX_NUM_PADS_HORIZONTAL - 1)}]
28+
29+
return [expr {$PAD_OFFSET + ($SPACE_LEFT / 2) + (($IO_WIDTH + $HORIZONTAL_PAD_DISTANCE) * $index)}]
2830
}
2931

3032
proc calc_vertical_pad_location {index} {
31-
global IO_LENGTH
32-
global IO_WIDTH
33-
global BONDPAD_SIZE
34-
global MAX_NUM_PADS_VERTICAL
35-
global SEALRING_OFFSET
36-
37-
set DIE_HEIGHT [expr {[lindex $::env(DIE_AREA) 3] - [lindex $::env(DIE_AREA) 1]}]
38-
set PAD_OFFSET [expr {$IO_LENGTH + $BONDPAD_SIZE + $SEALRING_OFFSET}]
39-
set PAD_AREA_HEIGHT [expr {$DIE_HEIGHT - ($PAD_OFFSET * 2)}]
40-
set VERTICAL_PAD_DISTANCE [expr {($PAD_AREA_HEIGHT / $MAX_NUM_PADS_VERTICAL) - $IO_WIDTH}]
41-
42-
return [expr {$PAD_OFFSET + (($IO_WIDTH + $VERTICAL_PAD_DISTANCE) * $index) + ($VERTICAL_PAD_DISTANCE / 2)}]
33+
global IO_LENGTH
34+
global IO_WIDTH
35+
global BONDPAD_SIZE
36+
global MAX_NUM_PADS_VERTICAL
37+
global SEALRING_OFFSET
38+
39+
set DIE_HEIGHT [expr {[lindex $::env(DIE_AREA) 3] - [lindex $::env(DIE_AREA) 1]}]
40+
set PAD_OFFSET [expr {$IO_LENGTH + $BONDPAD_SIZE + $SEALRING_OFFSET}]
41+
set PAD_AREA_HEIGHT [expr {$DIE_HEIGHT - ($PAD_OFFSET * 2)}]
42+
set SPACE_HEIGHT [expr {$PAD_AREA_HEIGHT - ($IO_WIDTH * $MAX_NUM_PADS_VERTICAL)}]
43+
set VERTICAL_PAD_DISTANCE [expr {2 * floor($SPACE_HEIGHT / (2 * $MAX_NUM_PADS_VERTICAL))}]
44+
set SPACE_LEFT [expr {$SPACE_HEIGHT - $VERTICAL_PAD_DISTANCE * ($MAX_NUM_PADS_VERTICAL - 1)}]
45+
46+
return [expr {$PAD_OFFSET + ($SPACE_LEFT / 2) + (($IO_WIDTH + $VERTICAL_PAD_DISTANCE) * $index)}]
4347
}
4448

4549
proc get_io {index} {

0 commit comments

Comments
 (0)