Skip to content

Commit 98d0715

Browse files
authored
Merge pull request #108 from gdsfactory/better_syntax
Better syntax and update to 9.3.0
2 parents 5e3c8e6 + 2b45e8e commit 98d0715

File tree

12 files changed

+222
-221
lines changed

12 files changed

+222
-221
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ classifiers = [
1313
"Programming Language :: Python :: 3.12",
1414
"Operating System :: OS Independent"
1515
]
16+
1617
dependencies = [
1718
"gdsfactory>=9.5.10",
1819
"PySpice"

sky130/nmos.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ def nmos(
5353
layer=diffusion_layer,
5454
)
5555

56-
poly.dymin = -end_cap_length
57-
poly.dxmin = 0
56+
poly.ymin = -end_cap_length
57+
poly.xmin = 0
5858

59-
diff.dxmin = -sd_width
59+
diff.xmin = -sd_width
6060

6161
spacing = np.array(contact_size) + contact_spacing
6262
spacing = tuple(spacing)
@@ -76,11 +76,11 @@ def nmos(
7676
contact_array_left = c << contact_array
7777
contact_array_right = c << contact_array
7878

79-
contact_array_left.dxmin = -sd_width + contact_enclosure
80-
contact_array_left.dymin = contact_enclosure
79+
contact_array_left.xmin = -sd_width + contact_enclosure
80+
contact_array_left.ymin = contact_enclosure
8181

82-
contact_array_right.dxmax = diff.dxmax - contact_enclosure
83-
contact_array_right.dymin = contact_enclosure
82+
contact_array_right.xmax = diff.xmax - contact_enclosure
83+
contact_array_right.ymin = contact_enclosure
8484
return c
8585

8686

sky130/pcells/nmos.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def nmos(
143143
rect_lid, rows=1, columns=nc, column_pitch=con_sp[0], row_pitch=con_sp[1]
144144
)
145145

146-
# rect_m1d = gf.components.rectangle(size= ( contact_size[0] + 2*mcon_enclosure[0], cont_arr1.dymax - cont_arr1.dymin + contact_size[1] + 2*mcon_enclosure[1]), layer= m1_layer)
146+
# rect_m1d = gf.components.rectangle(size= ( contact_size[0] + 2*mcon_enclosure[0], cont_arr1.ymax - cont_arr1.ymin + contact_size[1] + 2*mcon_enclosure[1]), layer= m1_layer)
147147
rect_m1d = gf.components.rectangle(
148148
size=(contact_size[0] + 2 * mcon_enclosure[0], gate_width), layer=m1_layer
149149
)
@@ -155,27 +155,27 @@ def nmos(
155155
)
156156

157157
if nc > 1:
158-
cont_arr1.dmovex((sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2)
158+
cont_arr1.dmovex((sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2)
159159
cont_arr2.dmovex(
160160
(nf * (sd_width + gate_length))
161-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
161+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
162162
)
163-
mcont_arr1.dmovex((sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2)
163+
mcont_arr1.dmovex((sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2)
164164
mcont_arr2.dmovex(
165165
(nf * (sd_width + gate_length))
166-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
166+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
167167
)
168-
li1.dmovex((sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2)
168+
li1.dmovex((sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2)
169169
li2.dmovex(
170170
(nf * (sd_width + gate_length))
171-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
171+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
172172
)
173173
m1d1.dmovex(
174-
(sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2 - mcon_enclosure[0]
174+
(sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2 - mcon_enclosure[0]
175175
)
176176
m1d2.dmovex(
177177
(nf * (sd_width + gate_length))
178-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
178+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
179179
- mcon_enclosure[0]
180180
)
181181

@@ -239,7 +239,7 @@ def nmos(
239239
)
240240
cont_arr3.dmovex(
241241
sd_width
242-
+ ((gate_length - (cont_arr3.dxmax - cont_arr3.dxmin)) / 2)
242+
+ ((gate_length - (cont_arr3.xmax - cont_arr3.xmin)) / 2)
243243
+ (i * (gate_length + sd_width))
244244
)
245245
cont_arr3.dmovey(gate_width + end_cap + contact_enclosure[1])
@@ -252,7 +252,7 @@ def nmos(
252252
)
253253
cont_arr5.dmovex(
254254
sd_width
255-
+ ((gate_length - (cont_arr5.dxmax - cont_arr5.dxmin)) / 2)
255+
+ ((gate_length - (cont_arr5.xmax - cont_arr5.xmin)) / 2)
256256
+ (i * (gate_length + sd_width))
257257
)
258258
cont_arr5.dmovey(-contact_size[1] - end_cap - contact_enclosure[1])
@@ -265,7 +265,7 @@ def nmos(
265265
)
266266
mcont_arr3.dmovex(
267267
sd_width
268-
+ ((gate_length - (cont_arr3.dxmax - cont_arr3.dxmin)) / 2)
268+
+ ((gate_length - (cont_arr3.xmax - cont_arr3.xmin)) / 2)
269269
+ (i * (gate_length + sd_width))
270270
)
271271
mcont_arr3.dmovey(gate_width + end_cap + contact_enclosure[1])
@@ -278,7 +278,7 @@ def nmos(
278278
)
279279
mcont_arr5.dmovex(
280280
sd_width
281-
+ ((gate_length - (cont_arr5.dxmax - cont_arr5.dxmin)) / 2)
281+
+ ((gate_length - (cont_arr5.xmax - cont_arr5.xmin)) / 2)
282282
+ (i * (gate_length + sd_width))
283283
)
284284
mcont_arr5.dmovey(-contact_size[1] - end_cap - contact_enclosure[1])
@@ -377,25 +377,25 @@ def nmos(
377377
l_d
378378
+ diff_spacing
379379
+ sdm_spacing
380-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
380+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
381381
)
382382
mcont_arr4.dmovex(
383383
l_d
384384
+ diff_spacing
385385
+ sdm_spacing
386-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
386+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
387387
)
388388
li4.dmovex(
389389
l_d
390390
+ diff_spacing
391391
+ sdm_spacing
392-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
392+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
393393
)
394394
m1dp.dmovex(
395395
l_d
396396
+ diff_spacing
397397
+ sdm_spacing
398-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
398+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
399399
- mcon_enclosure[0]
400400
)
401401

@@ -445,8 +445,8 @@ def nmos(
445445
# generating deep nwell
446446
rect_dnw = gf.components.rectangle(
447447
size=(
448-
rect_pw.dxmax - rect_pw.dxmin + 2 * dnwell_enclosure[0],
449-
rect_pw.dymax - rect_pw.dymin + 2 * dnwell_enclosure[1],
448+
rect_pw.xmax - rect_pw.xmin + 2 * dnwell_enclosure[0],
449+
rect_pw.ymax - rect_pw.ymin + 2 * dnwell_enclosure[1],
450450
),
451451
layer=dnwell_layer,
452452
)

sky130/pcells/nmos_5v.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -162,27 +162,27 @@ def nmos_5v(
162162
)
163163

164164
if nc > 1:
165-
cont_arr1.dmovex((sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2)
165+
cont_arr1.dmovex((sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2)
166166
cont_arr2.dmovex(
167167
(nf * (sd_width + gate_length))
168-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
168+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
169169
)
170-
mcont_arr1.dmovex((sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2)
170+
mcont_arr1.dmovex((sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2)
171171
mcont_arr2.dmovex(
172172
(nf * (sd_width + gate_length))
173-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
173+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
174174
)
175-
li1.dmovex((sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2)
175+
li1.dmovex((sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2)
176176
li2.dmovex(
177177
(nf * (sd_width + gate_length))
178-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
178+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
179179
)
180180
m1d1.dmovex(
181-
(sd_width - (cont_arr1.dxmax - cont_arr1.dxmin)) / 2 - mcon_enclosure[0]
181+
(sd_width - (cont_arr1.xmax - cont_arr1.xmin)) / 2 - mcon_enclosure[0]
182182
)
183183
m1d2.dmovex(
184184
(nf * (sd_width + gate_length))
185-
+ ((sd_width - (cont_arr2.dxmax - cont_arr2.dxmin)) / 2)
185+
+ ((sd_width - (cont_arr2.xmax - cont_arr2.xmin)) / 2)
186186
- mcon_enclosure[0]
187187
)
188188
else:
@@ -215,7 +215,7 @@ def nmos_5v(
215215
)
216216
cont_arr3.dmovex(
217217
sd_width
218-
+ ((gate_length - (cont_arr3.dxmax - cont_arr3.dxmin)) / 2)
218+
+ ((gate_length - (cont_arr3.xmax - cont_arr3.xmin)) / 2)
219219
+ (i * (gate_length + sd_width))
220220
)
221221
cont_arr3.dmovey(gate_width + end_cap + contact_enclosure[1])
@@ -224,7 +224,7 @@ def nmos_5v(
224224
)
225225
cont_arr5.dmovex(
226226
sd_width
227-
+ ((gate_length - (cont_arr5.dxmax - cont_arr5.dxmin)) / 2)
227+
+ ((gate_length - (cont_arr5.xmax - cont_arr5.xmin)) / 2)
228228
+ (i * (gate_length + sd_width))
229229
)
230230
cont_arr5.dmovey(-contact_size[1] - end_cap - contact_enclosure[1])
@@ -234,7 +234,7 @@ def nmos_5v(
234234
)
235235
mcont_arr3.dmovex(
236236
sd_width
237-
+ ((gate_length - (cont_arr3.dxmax - cont_arr3.dxmin)) / 2)
237+
+ ((gate_length - (cont_arr3.xmax - cont_arr3.xmin)) / 2)
238238
+ (i * (gate_length + sd_width))
239239
)
240240
mcont_arr3.dmovey(gate_width + end_cap + contact_enclosure[1])
@@ -243,7 +243,7 @@ def nmos_5v(
243243
)
244244
mcont_arr5.dmovex(
245245
sd_width
246-
+ ((gate_length - (cont_arr5.dxmax - cont_arr5.dxmin)) / 2)
246+
+ ((gate_length - (cont_arr5.xmax - cont_arr5.xmin)) / 2)
247247
+ (i * (gate_length + sd_width))
248248
)
249249
mcont_arr5.dmovey(-contact_size[1] - end_cap - contact_enclosure[1])
@@ -338,25 +338,25 @@ def nmos_5v(
338338
l_d
339339
+ diff_spacing
340340
+ sdm_spacing
341-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
341+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
342342
)
343343
mcont_arr4.dmovex(
344344
l_d
345345
+ diff_spacing
346346
+ sdm_spacing
347-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
347+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
348348
)
349349
li4.dmovex(
350350
l_d
351351
+ diff_spacing
352352
+ sdm_spacing
353-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
353+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
354354
)
355355
m1dp.dmovex(
356356
l_d
357357
+ diff_spacing
358358
+ sdm_spacing
359-
+ ((sd_width - (cont_arr4.dxmax - cont_arr4.dxmin)) / 2)
359+
+ ((sd_width - (cont_arr4.xmax - cont_arr4.xmin)) / 2)
360360
- mcon_enclosure[0]
361361
)
362362
else:
@@ -405,8 +405,8 @@ def nmos_5v(
405405
# generating deep nwell
406406
rect_dnw = gf.components.rectangle(
407407
size=(
408-
rect_pw.dxmax - rect_pw.dxmin + 2 * dnwell_enclosure[0],
409-
rect_pw.dymax - rect_pw.dymin + 2 * dnwell_enclosure[1],
408+
rect_pw.xmax - rect_pw.xmin + 2 * dnwell_enclosure[0],
409+
rect_pw.ymax - rect_pw.ymin + 2 * dnwell_enclosure[1],
410410
),
411411
layer=dnwell_layer,
412412
)
@@ -417,8 +417,8 @@ def nmos_5v(
417417
# generating hvi
418418
rect_hv = gf.components.rectangle(
419419
size=(
420-
rect_pw.dxmax - rect_pw.dxmin + 2 * dnwell_enclosure[0],
421-
rect_pw.dymax - rect_pw.dymin + 2 * dnwell_enclosure[1],
420+
rect_pw.xmax - rect_pw.xmin + 2 * dnwell_enclosure[0],
421+
rect_pw.ymax - rect_pw.ymin + 2 * dnwell_enclosure[1],
422422
),
423423
layer=hvi_layer,
424424
)

0 commit comments

Comments
 (0)