@@ -13,33 +13,37 @@ set PAD_IDX_OFFSET 1
13
13
set PAD_IDX_COUNT [expr ($MAX_NUM_PADS_HORIZONTAL + $MAX_NUM_PADS_VERTICAL )*2]
14
14
15
15
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 )}]
28
30
}
29
31
30
32
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 )}]
43
47
}
44
48
45
49
proc get_io {index} {
0 commit comments