@@ -4,12 +4,7 @@ set BONDPAD_SIZE 70
44set SEALRING_OFFSET 70
55set IO_OFFSET [expr { $BONDPAD_SIZE + $SEALRING_OFFSET }]
66
7- proc calc_horizontal_pad_location { index total } {
8- global IO_LENGTH
9- global IO_WIDTH
10- global BONDPAD_SIZE
11- global SEALRING_OFFSET
12-
7+ proc calc_horizontal_pad_location { index total IO_LENGTH IO_WIDTH BONDPAD_SIZE SEALRING_OFFSET } {
138 set DIE_WIDTH [expr { [lindex $::env(DIE_AREA) 2] - [lindex $::env(DIE_AREA) 0] }]
149 set PAD_OFFSET [expr { $IO_LENGTH + $BONDPAD_SIZE + $SEALRING_OFFSET }]
1510 set PAD_AREA_WIDTH [expr { $DIE_WIDTH - ($PAD_OFFSET * 2) }]
@@ -21,12 +16,7 @@ proc calc_horizontal_pad_location { index total } {
2116 }]
2217}
2318
24- proc calc_vertical_pad_location { index total } {
25- global IO_LENGTH
26- global IO_WIDTH
27- global BONDPAD_SIZE
28- global SEALRING_OFFSET
29-
19+ proc calc_vertical_pad_location { index total IO_LENGTH IO_WIDTH BONDPAD_SIZE SEALRING_OFFSET } {
3020 set DIE_HEIGHT [expr { [lindex $::env(DIE_AREA) 3] - [lindex $::env(DIE_AREA) 1] }]
3121 set PAD_OFFSET [expr { $IO_LENGTH + $BONDPAD_SIZE + $SEALRING_OFFSET }]
3222 set PAD_AREA_HEIGHT [expr { $DIE_HEIGHT - ($PAD_OFFSET * 2) }]
@@ -51,61 +41,141 @@ make_io_sites \
5141
5242# Place Pads
5343# IO pin io_clock
54- place_pad -row IO_SOUTH -location [calc_horizontal_pad_location 0 5] \
55- {sg13g2_IOPad_io_clock} -master sg13g2_IOPadIn
44+ place_pad \
45+ -row IO_SOUTH \
46+ -location [calc_horizontal_pad_location \
47+ 0 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
48+ {sg13g2_IOPad_io_clock} \
49+ -master sg13g2_IOPadIn
5650# IO pin io_reset
57- place_pad -row IO_SOUTH -location [calc_horizontal_pad_location 1 5] \
58- {sg13g2_IOPad_io_reset} -master sg13g2_IOPadIn
51+ place_pad \
52+ -row IO_SOUTH \
53+ -location [calc_horizontal_pad_location \
54+ 1 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
55+ {sg13g2_IOPad_io_reset} \
56+ -master sg13g2_IOPadIn
5957# IO pin io_i2c_scl
60- place_pad -row IO_SOUTH -location [calc_horizontal_pad_location 2 5] \
61- {sg13g2_IOPad_io_i2c_scl} -master sg13g2_IOPadInOut4mA
58+ place_pad \
59+ -row IO_SOUTH \
60+ -location [calc_horizontal_pad_location \
61+ 2 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
62+ {sg13g2_IOPad_io_i2c_scl} \
63+ -master sg13g2_IOPadInOut4mA
6264# IO pin io_i2c_sda
63- place_pad -row IO_SOUTH -location [calc_horizontal_pad_location 3 5] \
64- {sg13g2_IOPad_io_i2c_sda} -master sg13g2_IOPadInOut4mA
65+ place_pad \
66+ -row IO_SOUTH \
67+ -location [calc_horizontal_pad_location \
68+ 3 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
69+ {sg13g2_IOPad_io_i2c_sda} \
70+ -master sg13g2_IOPadInOut4mA
6571# IO pin io_i2c_interrupt
66- place_pad -row IO_SOUTH -location [calc_horizontal_pad_location 4 5] \
67- {sg13g2_IOPad_io_i2c_interrupt} -master sg13g2_IOPadOut4mA
68- place_pad -row IO_EAST -location [calc_vertical_pad_location 0 5] \
69- {sg13g2_IOPadVdd_east_0} -master sg13g2_IOPadVdd
70- place_pad -row IO_EAST -location [calc_vertical_pad_location 1 5] \
71- {sg13g2_IOPadVss_east_1} -master sg13g2_IOPadVss
72+ place_pad \
73+ -row IO_SOUTH \
74+ -location [calc_horizontal_pad_location \
75+ 4 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
76+ {sg13g2_IOPad_io_i2c_interrupt} \
77+ -master sg13g2_IOPadOut4mA
78+ place_pad \
79+ -row IO_EAST \
80+ -location [calc_vertical_pad_location \
81+ 0 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
82+ {sg13g2_IOPadVdd_east_0} \
83+ -master sg13g2_IOPadVdd
84+ place_pad \
85+ -row IO_EAST \
86+ -location [calc_vertical_pad_location \
87+ 1 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
88+ {sg13g2_IOPadVss_east_1} \
89+ -master sg13g2_IOPadVss
7290# IO pin io_address_0
73- place_pad -row IO_EAST -location [calc_vertical_pad_location 2 5] \
74- {sg13g2_IOPad_io_address_0} -master sg13g2_IOPadIn
91+ place_pad \
92+ -row IO_EAST \
93+ -location [calc_vertical_pad_location \
94+ 2 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
95+ {sg13g2_IOPad_io_address_0} \
96+ -master sg13g2_IOPadIn
7597# IO pin io_address_1
76- place_pad -row IO_EAST -location [calc_vertical_pad_location 3 5] \
77- {sg13g2_IOPad_io_address_1} -master sg13g2_IOPadIn
98+ place_pad \
99+ -row IO_EAST \
100+ -location [calc_vertical_pad_location \
101+ 3 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
102+ {sg13g2_IOPad_io_address_1} \
103+ -master sg13g2_IOPadIn
78104# IO pin io_address_2
79- place_pad -row IO_EAST -location [calc_vertical_pad_location 4 5] \
80- {sg13g2_IOPad_io_address_2} -master sg13g2_IOPadIn
105+ place_pad \
106+ -row IO_EAST \
107+ -location [calc_vertical_pad_location \
108+ 4 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
109+ {sg13g2_IOPad_io_address_2} \
110+ -master sg13g2_IOPadIn
81111# IO pin io_gpio_0
82- place_pad -row IO_NORTH -location [calc_horizontal_pad_location 0 5] \
83- {sg13g2_IOPad_io_gpio_0} -master sg13g2_IOPadInOut16mA
112+ place_pad \
113+ -row IO_NORTH \
114+ -location [calc_horizontal_pad_location \
115+ 0 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
116+ {sg13g2_IOPad_io_gpio_0} \
117+ -master sg13g2_IOPadInOut16mA
84118# IO pin io_gpio_1
85- place_pad -row IO_NORTH -location [calc_horizontal_pad_location 1 5] \
86- {sg13g2_IOPad_io_gpio_1} -master sg13g2_IOPadInOut16mA
119+ place_pad \
120+ -row IO_NORTH \
121+ -location [calc_horizontal_pad_location \
122+ 1 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
123+ {sg13g2_IOPad_io_gpio_1} \
124+ -master sg13g2_IOPadInOut16mA
87125# IO pin io_gpio_2
88- place_pad -row IO_NORTH -location [calc_horizontal_pad_location 2 5] \
89- {sg13g2_IOPad_io_gpio_2} -master sg13g2_IOPadInOut16mA
126+ place_pad \
127+ -row IO_NORTH \
128+ -location [calc_horizontal_pad_location \
129+ 2 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
130+ {sg13g2_IOPad_io_gpio_2} \
131+ -master sg13g2_IOPadInOut16mA
90132# IO pin io_gpio_3
91- place_pad -row IO_NORTH -location [calc_horizontal_pad_location 3 5] \
92- {sg13g2_IOPad_io_gpio_3} -master sg13g2_IOPadInOut16mA
133+ place_pad \
134+ -row IO_NORTH \
135+ -location [calc_horizontal_pad_location \
136+ 3 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
137+ {sg13g2_IOPad_io_gpio_3} \
138+ -master sg13g2_IOPadInOut16mA
93139# IO pin io_gpio_4
94- place_pad -row IO_NORTH -location [calc_horizontal_pad_location 4 5] \
95- {sg13g2_IOPad_io_gpio_4} -master sg13g2_IOPadInOut16mA
140+ place_pad \
141+ -row IO_NORTH \
142+ -location [calc_horizontal_pad_location \
143+ 4 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
144+ {sg13g2_IOPad_io_gpio_4} \
145+ -master sg13g2_IOPadInOut16mA
96146# IO pin io_gpio_5
97- place_pad -row IO_WEST -location [calc_vertical_pad_location 0 5] \
98- {sg13g2_IOPad_io_gpio_5} -master sg13g2_IOPadInOut16mA
147+ place_pad \
148+ -row IO_WEST \
149+ -location [calc_vertical_pad_location \
150+ 0 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
151+ {sg13g2_IOPad_io_gpio_5} \
152+ -master sg13g2_IOPadInOut16mA
99153# IO pin io_gpio_6
100- place_pad -row IO_WEST -location [calc_vertical_pad_location 1 5] \
101- {sg13g2_IOPad_io_gpio_6} -master sg13g2_IOPadInOut16mA
154+ place_pad \
155+ -row IO_WEST \
156+ -location [calc_vertical_pad_location \
157+ 1 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
158+ {sg13g2_IOPad_io_gpio_6} \
159+ -master sg13g2_IOPadInOut16mA
102160# IO pin io_gpio_7
103- place_pad -row IO_WEST -location [calc_vertical_pad_location 2 5] \
104- {sg13g2_IOPad_io_gpio_7} -master sg13g2_IOPadInOut16mA
105- place_pad -row IO_WEST -location [calc_vertical_pad_location 3 5] \
106- {sg13g2_IOPadIOVss_west_3} -master sg13g2_IOPadIOVss
107- place_pad -row IO_WEST -location [calc_vertical_pad_location 4 5] \
108- {sg13g2_IOPadIOVdd_west_4} -master sg13g2_IOPadIOVdd
161+ place_pad \
162+ -row IO_WEST \
163+ -location [calc_vertical_pad_location \
164+ 2 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
165+ {sg13g2_IOPad_io_gpio_7} \
166+ -master sg13g2_IOPadInOut16mA
167+ place_pad \
168+ -row IO_WEST \
169+ -location [calc_vertical_pad_location \
170+ 3 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
171+ {sg13g2_IOPadIOVss_west_3} \
172+ -master sg13g2_IOPadIOVss
173+ place_pad \
174+ -row IO_WEST \
175+ -location [calc_vertical_pad_location \
176+ 4 5 $IO_LENGTH $IO_WIDTH $BONDPAD_SIZE $SEALRING_OFFSET ] \
177+ {sg13g2_IOPadIOVdd_west_4} \
178+ -master sg13g2_IOPadIOVdd
109179# Place Corner Cells and Filler
110180place_corners sg13g2_Corner
111181
0 commit comments