lambdapdk 0.2.0rc3__py3-none-any.whl → 0.2.0rc5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lambdapdk/__init__.py +188 -6
- lambdapdk/asap7/libs/asap7sc7p5t.py +7 -3
- lambdapdk/asap7/libs/fakeio7.py +248 -1
- lambdapdk/asap7/libs/fakeram7.py +6 -3
- lambdapdk/freepdk45/libs/fakeram45.py +6 -3
- lambdapdk/freepdk45/libs/nangate45.py +7 -3
- lambdapdk/gf180/libs/gf180io.py +642 -1
- lambdapdk/gf180/libs/gf180mcu.py +7 -3
- lambdapdk/gf180/libs/gf180sram.py +5 -3
- lambdapdk/ihp130/libs/sg13g2_io.py +397 -1
- lambdapdk/ihp130/libs/sg13g2_sram.py +6 -3
- lambdapdk/ihp130/libs/sg13g2_stdcell.py +7 -3
- lambdapdk/sky130/libs/sky130io.py +216 -1
- lambdapdk/sky130/libs/sky130sc.py +7 -3
- lambdapdk/sky130/libs/sky130sram.py +6 -5
- {lambdapdk-0.2.0rc3.dist-info → lambdapdk-0.2.0rc5.dist-info}/METADATA +1 -1
- lambdapdk-0.2.0rc5.dist-info/RECORD +30 -0
- lambdapdk-0.2.0rc3.dist-info/RECORD +0 -30
- {lambdapdk-0.2.0rc3.dist-info → lambdapdk-0.2.0rc5.dist-info}/WHEEL +0 -0
- {lambdapdk-0.2.0rc3.dist-info → lambdapdk-0.2.0rc5.dist-info}/entry_points.txt +0 -0
- {lambdapdk-0.2.0rc3.dist-info → lambdapdk-0.2.0rc5.dist-info}/licenses/LICENSE +0 -0
- {lambdapdk-0.2.0rc3.dist-info → lambdapdk-0.2.0rc5.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from siliconcompiler import ASICProject
|
|
4
|
+
from lambdalib import LambalibTechLibrary
|
|
5
|
+
from lambdapdk import LambdaLibrary, _LambdaPath
|
|
4
6
|
from lambdapdk.ihp130 import IHP130PDK, _IHP130Path
|
|
5
7
|
|
|
6
8
|
|
|
@@ -68,3 +70,397 @@ class IHP130_IO_1p2(_IHP130_IOLibrary):
|
|
|
68
70
|
class IHP130_IO_1p5(_IHP130_IOLibrary):
|
|
69
71
|
def __init__(self):
|
|
70
72
|
super().__init__("1p5")
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class IHP130Lambdalib_la_iovdd_1p2(LambalibTechLibrary, _LambdaPath):
|
|
76
|
+
def __init__(self):
|
|
77
|
+
super().__init__("la_iovdd", [IHP130_IO_1p2])
|
|
78
|
+
self.set_name("ihp130_1p2_la_iovdd")
|
|
79
|
+
|
|
80
|
+
# version
|
|
81
|
+
self.set_version("v1")
|
|
82
|
+
|
|
83
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
84
|
+
|
|
85
|
+
with self.active_dataroot("lambdapdk"):
|
|
86
|
+
with self.active_fileset("rtl"):
|
|
87
|
+
self.add_file(lib_path / "lambda" / "la_iovdd.v")
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class IHP130Lambdalib_la_iocorner_1p2(LambalibTechLibrary, _LambdaPath):
|
|
91
|
+
def __init__(self):
|
|
92
|
+
super().__init__("la_iocorner", [IHP130_IO_1p2])
|
|
93
|
+
self.set_name("ihp130_1p2_la_iocorner")
|
|
94
|
+
|
|
95
|
+
# version
|
|
96
|
+
self.set_version("v1")
|
|
97
|
+
|
|
98
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
99
|
+
|
|
100
|
+
with self.active_dataroot("lambdapdk"):
|
|
101
|
+
with self.active_fileset("rtl"):
|
|
102
|
+
self.add_file(lib_path / "lambda" / "la_iocorner.v")
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class IHP130Lambdalib_la_iotxdiff_1p2(LambalibTechLibrary, _LambdaPath):
|
|
106
|
+
def __init__(self):
|
|
107
|
+
super().__init__("la_iotxdiff", [IHP130_IO_1p2])
|
|
108
|
+
self.set_name("ihp130_1p2_la_iotxdiff")
|
|
109
|
+
|
|
110
|
+
# version
|
|
111
|
+
self.set_version("v1")
|
|
112
|
+
|
|
113
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
114
|
+
|
|
115
|
+
with self.active_dataroot("lambdapdk"):
|
|
116
|
+
with self.active_fileset("rtl"):
|
|
117
|
+
self.add_file(lib_path / "lambda" / "la_iotxdiff.v")
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class IHP130Lambdalib_la_ioanalog_1p2(LambalibTechLibrary, _LambdaPath):
|
|
121
|
+
def __init__(self):
|
|
122
|
+
super().__init__("la_ioanalog", [IHP130_IO_1p2])
|
|
123
|
+
self.set_name("ihp130_1p2_la_ioanalog")
|
|
124
|
+
|
|
125
|
+
# version
|
|
126
|
+
self.set_version("v1")
|
|
127
|
+
|
|
128
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
129
|
+
|
|
130
|
+
with self.active_dataroot("lambdapdk"):
|
|
131
|
+
with self.active_fileset("rtl"):
|
|
132
|
+
self.add_file(lib_path / "lambda" / "la_ioanalog.v")
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
class IHP130Lambdalib_la_ioinput_1p2(LambalibTechLibrary, _LambdaPath):
|
|
136
|
+
def __init__(self):
|
|
137
|
+
super().__init__("la_ioinput", [IHP130_IO_1p2])
|
|
138
|
+
self.set_name("ihp130_1p2_la_ioinput")
|
|
139
|
+
|
|
140
|
+
# version
|
|
141
|
+
self.set_version("v1")
|
|
142
|
+
|
|
143
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
144
|
+
|
|
145
|
+
with self.active_dataroot("lambdapdk"):
|
|
146
|
+
with self.active_fileset("rtl"):
|
|
147
|
+
self.add_file(lib_path / "lambda" / "la_ioinput.v")
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
class IHP130Lambdalib_la_iovss_1p2(LambalibTechLibrary, _LambdaPath):
|
|
151
|
+
def __init__(self):
|
|
152
|
+
super().__init__("la_iovss", [IHP130_IO_1p2])
|
|
153
|
+
self.set_name("ihp130_1p2_la_iovss")
|
|
154
|
+
|
|
155
|
+
# version
|
|
156
|
+
self.set_version("v1")
|
|
157
|
+
|
|
158
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
159
|
+
|
|
160
|
+
with self.active_dataroot("lambdapdk"):
|
|
161
|
+
with self.active_fileset("rtl"):
|
|
162
|
+
self.add_file(lib_path / "lambda" / "la_iovss.v")
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class IHP130Lambdalib_la_iovddio_1p2(LambalibTechLibrary, _LambdaPath):
|
|
166
|
+
def __init__(self):
|
|
167
|
+
super().__init__("la_iovddio", [IHP130_IO_1p2])
|
|
168
|
+
self.set_name("ihp130_1p2_la_iovddio")
|
|
169
|
+
|
|
170
|
+
# version
|
|
171
|
+
self.set_version("v1")
|
|
172
|
+
|
|
173
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
174
|
+
|
|
175
|
+
with self.active_dataroot("lambdapdk"):
|
|
176
|
+
with self.active_fileset("rtl"):
|
|
177
|
+
self.add_file(lib_path / "lambda" / "la_iovddio.v")
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class IHP130Lambdalib_la_iovssio_1p2(LambalibTechLibrary, _LambdaPath):
|
|
181
|
+
def __init__(self):
|
|
182
|
+
super().__init__("la_iovssio", [IHP130_IO_1p2])
|
|
183
|
+
self.set_name("ihp130_1p2_la_iovssio")
|
|
184
|
+
|
|
185
|
+
# version
|
|
186
|
+
self.set_version("v1")
|
|
187
|
+
|
|
188
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
189
|
+
|
|
190
|
+
with self.active_dataroot("lambdapdk"):
|
|
191
|
+
with self.active_fileset("rtl"):
|
|
192
|
+
self.add_file(lib_path / "lambda" / "la_iovssio.v")
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
class IHP130Lambdalib_la_iovdda_1p2(LambalibTechLibrary, _LambdaPath):
|
|
196
|
+
def __init__(self):
|
|
197
|
+
super().__init__("la_iovdda", [IHP130_IO_1p2])
|
|
198
|
+
self.set_name("ihp130_1p2_la_iovdda")
|
|
199
|
+
|
|
200
|
+
# version
|
|
201
|
+
self.set_version("v1")
|
|
202
|
+
|
|
203
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
204
|
+
|
|
205
|
+
with self.active_dataroot("lambdapdk"):
|
|
206
|
+
with self.active_fileset("rtl"):
|
|
207
|
+
self.add_file(lib_path / "lambda" / "la_iovdda.v")
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class IHP130Lambdalib_la_iovssa_1p2(LambalibTechLibrary, _LambdaPath):
|
|
211
|
+
def __init__(self):
|
|
212
|
+
super().__init__("la_iovssa", [IHP130_IO_1p2])
|
|
213
|
+
self.set_name("ihp130_1p2_la_iovssa")
|
|
214
|
+
|
|
215
|
+
# version
|
|
216
|
+
self.set_version("v1")
|
|
217
|
+
|
|
218
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
219
|
+
|
|
220
|
+
with self.active_dataroot("lambdapdk"):
|
|
221
|
+
with self.active_fileset("rtl"):
|
|
222
|
+
self.add_file(lib_path / "lambda" / "la_iovssa.v")
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
class IHP130Lambdalib_la_iorxdiff_1p2(LambalibTechLibrary, _LambdaPath):
|
|
226
|
+
def __init__(self):
|
|
227
|
+
super().__init__("la_iorxdiff", [IHP130_IO_1p2])
|
|
228
|
+
self.set_name("ihp130_1p2_la_iorxdiff")
|
|
229
|
+
|
|
230
|
+
# version
|
|
231
|
+
self.set_version("v1")
|
|
232
|
+
|
|
233
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
234
|
+
|
|
235
|
+
with self.active_dataroot("lambdapdk"):
|
|
236
|
+
with self.active_fileset("rtl"):
|
|
237
|
+
self.add_file(lib_path / "lambda" / "la_iorxdiff.v")
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
class IHP130Lambdalib_la_iobidir_1p2(LambalibTechLibrary, _LambdaPath):
|
|
241
|
+
def __init__(self):
|
|
242
|
+
super().__init__("la_iobidir", [IHP130_IO_1p2])
|
|
243
|
+
self.set_name("ihp130_1p2_la_iobidir")
|
|
244
|
+
|
|
245
|
+
# version
|
|
246
|
+
self.set_version("v1")
|
|
247
|
+
|
|
248
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
249
|
+
|
|
250
|
+
with self.active_dataroot("lambdapdk"):
|
|
251
|
+
with self.active_fileset("rtl"):
|
|
252
|
+
self.add_file(lib_path / "lambda" / "la_iobidir.v")
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
class IHP130LambdaLib_IO_1p2(LambalibTechLibrary):
|
|
256
|
+
@classmethod
|
|
257
|
+
def alias(cls, project: ASICProject):
|
|
258
|
+
IHP130Lambdalib_la_iovdd_1p2.alias(project)
|
|
259
|
+
IHP130Lambdalib_la_iocorner_1p2.alias(project)
|
|
260
|
+
IHP130Lambdalib_la_iotxdiff_1p2.alias(project)
|
|
261
|
+
IHP130Lambdalib_la_ioanalog_1p2.alias(project)
|
|
262
|
+
IHP130Lambdalib_la_ioinput_1p2.alias(project)
|
|
263
|
+
IHP130Lambdalib_la_iovss_1p2.alias(project)
|
|
264
|
+
IHP130Lambdalib_la_iovddio_1p2.alias(project)
|
|
265
|
+
IHP130Lambdalib_la_iovssio_1p2.alias(project)
|
|
266
|
+
IHP130Lambdalib_la_iovdda_1p2.alias(project)
|
|
267
|
+
IHP130Lambdalib_la_iovssa_1p2.alias(project)
|
|
268
|
+
IHP130Lambdalib_la_iorxdiff_1p2.alias(project)
|
|
269
|
+
IHP130Lambdalib_la_iobidir_1p2.alias(project)
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class IHP130Lambdalib_la_iovdd_1p5(LambalibTechLibrary, _LambdaPath):
|
|
273
|
+
def __init__(self):
|
|
274
|
+
super().__init__("la_iovdd", [IHP130_IO_1p5])
|
|
275
|
+
self.set_name("ihp130_1p5_la_iovdd")
|
|
276
|
+
|
|
277
|
+
# version
|
|
278
|
+
self.set_version("v1")
|
|
279
|
+
|
|
280
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
281
|
+
|
|
282
|
+
with self.active_dataroot("lambdapdk"):
|
|
283
|
+
with self.active_fileset("rtl"):
|
|
284
|
+
self.add_file(lib_path / "lambda" / "la_iovdd.v")
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class IHP130Lambdalib_la_iocorner_1p5(LambalibTechLibrary, _LambdaPath):
|
|
288
|
+
def __init__(self):
|
|
289
|
+
super().__init__("la_iocorner", [IHP130_IO_1p5])
|
|
290
|
+
self.set_name("ihp130_1p5_la_iocorner")
|
|
291
|
+
|
|
292
|
+
# version
|
|
293
|
+
self.set_version("v1")
|
|
294
|
+
|
|
295
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
296
|
+
|
|
297
|
+
with self.active_dataroot("lambdapdk"):
|
|
298
|
+
with self.active_fileset("rtl"):
|
|
299
|
+
self.add_file(lib_path / "lambda" / "la_iocorner.v")
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
class IHP130Lambdalib_la_iotxdiff_1p5(LambalibTechLibrary, _LambdaPath):
|
|
303
|
+
def __init__(self):
|
|
304
|
+
super().__init__("la_iotxdiff", [IHP130_IO_1p5])
|
|
305
|
+
self.set_name("ihp130_1p5_la_iotxdiff")
|
|
306
|
+
|
|
307
|
+
# version
|
|
308
|
+
self.set_version("v1")
|
|
309
|
+
|
|
310
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
311
|
+
|
|
312
|
+
with self.active_dataroot("lambdapdk"):
|
|
313
|
+
with self.active_fileset("rtl"):
|
|
314
|
+
self.add_file(lib_path / "lambda" / "la_iotxdiff.v")
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
class IHP130Lambdalib_la_ioanalog_1p5(LambalibTechLibrary, _LambdaPath):
|
|
318
|
+
def __init__(self):
|
|
319
|
+
super().__init__("la_ioanalog", [IHP130_IO_1p5])
|
|
320
|
+
self.set_name("ihp130_1p5_la_ioanalog")
|
|
321
|
+
|
|
322
|
+
# version
|
|
323
|
+
self.set_version("v1")
|
|
324
|
+
|
|
325
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
326
|
+
|
|
327
|
+
with self.active_dataroot("lambdapdk"):
|
|
328
|
+
with self.active_fileset("rtl"):
|
|
329
|
+
self.add_file(lib_path / "lambda" / "la_ioanalog.v")
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
class IHP130Lambdalib_la_ioinput_1p5(LambalibTechLibrary, _LambdaPath):
|
|
333
|
+
def __init__(self):
|
|
334
|
+
super().__init__("la_ioinput", [IHP130_IO_1p5])
|
|
335
|
+
self.set_name("ihp130_1p5_la_ioinput")
|
|
336
|
+
|
|
337
|
+
# version
|
|
338
|
+
self.set_version("v1")
|
|
339
|
+
|
|
340
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
341
|
+
|
|
342
|
+
with self.active_dataroot("lambdapdk"):
|
|
343
|
+
with self.active_fileset("rtl"):
|
|
344
|
+
self.add_file(lib_path / "lambda" / "la_ioinput.v")
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
class IHP130Lambdalib_la_iovss_1p5(LambalibTechLibrary, _LambdaPath):
|
|
348
|
+
def __init__(self):
|
|
349
|
+
super().__init__("la_iovss", [IHP130_IO_1p5])
|
|
350
|
+
self.set_name("ihp130_1p5_la_iovss")
|
|
351
|
+
|
|
352
|
+
# version
|
|
353
|
+
self.set_version("v1")
|
|
354
|
+
|
|
355
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
356
|
+
|
|
357
|
+
with self.active_dataroot("lambdapdk"):
|
|
358
|
+
with self.active_fileset("rtl"):
|
|
359
|
+
self.add_file(lib_path / "lambda" / "la_iovss.v")
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
class IHP130Lambdalib_la_iovddio_1p5(LambalibTechLibrary, _LambdaPath):
|
|
363
|
+
def __init__(self):
|
|
364
|
+
super().__init__("la_iovddio", [IHP130_IO_1p5])
|
|
365
|
+
self.set_name("ihp130_1p5_la_iovddio")
|
|
366
|
+
|
|
367
|
+
# version
|
|
368
|
+
self.set_version("v1")
|
|
369
|
+
|
|
370
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
371
|
+
|
|
372
|
+
with self.active_dataroot("lambdapdk"):
|
|
373
|
+
with self.active_fileset("rtl"):
|
|
374
|
+
self.add_file(lib_path / "lambda" / "la_iovddio.v")
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
class IHP130Lambdalib_la_iovssio_1p5(LambalibTechLibrary, _LambdaPath):
|
|
378
|
+
def __init__(self):
|
|
379
|
+
super().__init__("la_iovssio", [IHP130_IO_1p5])
|
|
380
|
+
self.set_name("ihp130_1p5_la_iovssio")
|
|
381
|
+
|
|
382
|
+
# version
|
|
383
|
+
self.set_version("v1")
|
|
384
|
+
|
|
385
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
386
|
+
|
|
387
|
+
with self.active_dataroot("lambdapdk"):
|
|
388
|
+
with self.active_fileset("rtl"):
|
|
389
|
+
self.add_file(lib_path / "lambda" / "la_iovssio.v")
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
class IHP130Lambdalib_la_iovdda_1p5(LambalibTechLibrary, _LambdaPath):
|
|
393
|
+
def __init__(self):
|
|
394
|
+
super().__init__("la_iovdda", [IHP130_IO_1p5])
|
|
395
|
+
self.set_name("ihp130_1p5_la_iovdda")
|
|
396
|
+
|
|
397
|
+
# version
|
|
398
|
+
self.set_version("v1")
|
|
399
|
+
|
|
400
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
401
|
+
|
|
402
|
+
with self.active_dataroot("lambdapdk"):
|
|
403
|
+
with self.active_fileset("rtl"):
|
|
404
|
+
self.add_file(lib_path / "lambda" / "la_iovdda.v")
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
class IHP130Lambdalib_la_iovssa_1p5(LambalibTechLibrary, _LambdaPath):
|
|
408
|
+
def __init__(self):
|
|
409
|
+
super().__init__("la_iovssa", [IHP130_IO_1p5])
|
|
410
|
+
self.set_name("ihp130_1p5_la_iovssa")
|
|
411
|
+
|
|
412
|
+
# version
|
|
413
|
+
self.set_version("v1")
|
|
414
|
+
|
|
415
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
416
|
+
|
|
417
|
+
with self.active_dataroot("lambdapdk"):
|
|
418
|
+
with self.active_fileset("rtl"):
|
|
419
|
+
self.add_file(lib_path / "lambda" / "la_iovssa.v")
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
class IHP130Lambdalib_la_iorxdiff_1p5(LambalibTechLibrary, _LambdaPath):
|
|
423
|
+
def __init__(self):
|
|
424
|
+
super().__init__("la_iorxdiff", [IHP130_IO_1p5])
|
|
425
|
+
self.set_name("ihp130_1p5_la_iorxdiff")
|
|
426
|
+
|
|
427
|
+
# version
|
|
428
|
+
self.set_version("v1")
|
|
429
|
+
|
|
430
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
431
|
+
|
|
432
|
+
with self.active_dataroot("lambdapdk"):
|
|
433
|
+
with self.active_fileset("rtl"):
|
|
434
|
+
self.add_file(lib_path / "lambda" / "la_iorxdiff.v")
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
class IHP130Lambdalib_la_iobidir_1p5(LambalibTechLibrary, _LambdaPath):
|
|
438
|
+
def __init__(self):
|
|
439
|
+
super().__init__("la_iobidir", [IHP130_IO_1p5])
|
|
440
|
+
self.set_name("ihp130_1p5_la_iobidir")
|
|
441
|
+
|
|
442
|
+
# version
|
|
443
|
+
self.set_version("v1")
|
|
444
|
+
|
|
445
|
+
lib_path = Path("lambdapdk", "ihp130", "libs", "sg13g2_io")
|
|
446
|
+
|
|
447
|
+
with self.active_dataroot("lambdapdk"):
|
|
448
|
+
with self.active_fileset("rtl"):
|
|
449
|
+
self.add_file(lib_path / "lambda" / "la_iobidir.v")
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
class IHP130LambdaLib_IO_1p5(LambalibTechLibrary):
|
|
453
|
+
@classmethod
|
|
454
|
+
def alias(cls, project: ASICProject):
|
|
455
|
+
IHP130Lambdalib_la_iovdd_1p5.alias(project)
|
|
456
|
+
IHP130Lambdalib_la_iocorner_1p5.alias(project)
|
|
457
|
+
IHP130Lambdalib_la_iotxdiff_1p5.alias(project)
|
|
458
|
+
IHP130Lambdalib_la_ioanalog_1p5.alias(project)
|
|
459
|
+
IHP130Lambdalib_la_ioinput_1p5.alias(project)
|
|
460
|
+
IHP130Lambdalib_la_iovss_1p5.alias(project)
|
|
461
|
+
IHP130Lambdalib_la_iovddio_1p5.alias(project)
|
|
462
|
+
IHP130Lambdalib_la_iovssio_1p5.alias(project)
|
|
463
|
+
IHP130Lambdalib_la_iovdda_1p5.alias(project)
|
|
464
|
+
IHP130Lambdalib_la_iovssa_1p5.alias(project)
|
|
465
|
+
IHP130Lambdalib_la_iorxdiff_1p5.alias(project)
|
|
466
|
+
IHP130Lambdalib_la_iobidir_1p5.alias(project)
|
|
@@ -38,9 +38,12 @@ class _IHP130SRAMLibrary(LambdaLibrary, _IHP130Path):
|
|
|
38
38
|
"RM_IHPSG13_1P_core_behavioral_bm_bist.v")
|
|
39
39
|
|
|
40
40
|
with self.active_dataroot("lambdapdk"):
|
|
41
|
-
self.
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
with self.active_fileset("openroad.powergrid"):
|
|
42
|
+
self.add_file(path_base / "apr" / "openroad" / "pdngen.tcl")
|
|
43
|
+
self.add_openroad_powergridfileset()
|
|
44
|
+
with self.active_fileset("openroad.globalconnect"):
|
|
45
|
+
self.add_file(path_base / "apr" / "openroad" / "global_connect.tcl")
|
|
46
|
+
self.add_openroad_globalconnectfileset()
|
|
44
47
|
|
|
45
48
|
|
|
46
49
|
class IHP130_SRAM_1024x64(_IHP130SRAMLibrary):
|
|
@@ -94,14 +94,18 @@ class _IHP130StdCell(LambdaLibrary, _IHP130Path):
|
|
|
94
94
|
|
|
95
95
|
# Setup for OpenROAD
|
|
96
96
|
with self.active_dataroot("lambdapdk"):
|
|
97
|
+
with self.active_fileset("openroad.powergrid"):
|
|
98
|
+
self.add_file(lib_path / "apr" / "openroad" / "pdngen.tcl")
|
|
99
|
+
self.add_openroad_powergridfileset()
|
|
100
|
+
with self.active_fileset("openroad.globalconnect"):
|
|
101
|
+
self.add_file(lib_path / "apr" / "openroad" / "global_connect.tcl")
|
|
102
|
+
self.add_openroad_globalconnectfileset()
|
|
103
|
+
|
|
97
104
|
self.set_openroad_placement_density(0.65)
|
|
98
105
|
self.set_openroad_tielow_cell("sg13g2_tielo", "L_LO")
|
|
99
106
|
self.set_openroad_tiehigh_cell("sg13g2_tiehi", "L_HI")
|
|
100
107
|
self.set_openroad_macro_placement_halo(40, 40)
|
|
101
108
|
self.set_openroad_tapcells_file(lib_path / "apr" / "openroad" / "tapcell.tcl")
|
|
102
|
-
self.add_openroad_global_connect_file(
|
|
103
|
-
lib_path / "apr" / "openroad" / "global_connect.tcl")
|
|
104
|
-
self.add_openroad_power_grid_file(lib_path / "apr" / "openroad" / "pdngen.tcl")
|
|
105
109
|
|
|
106
110
|
# Setup for bambu
|
|
107
111
|
self.set_bambu_clock_multiplier(1)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from siliconcompiler import ASICProject
|
|
4
|
+
from lambdalib import LambalibTechLibrary
|
|
5
|
+
from lambdapdk import LambdaLibrary, _LambdaPath
|
|
4
6
|
from lambdapdk.sky130 import Sky130PDK
|
|
5
7
|
|
|
6
8
|
|
|
@@ -47,3 +49,216 @@ class Sky130_IOLibrary(LambdaLibrary):
|
|
|
47
49
|
self.add_file(path_base / "blackbox" / "sky130_ef_io.v")
|
|
48
50
|
self.add_file(path_base / "blackbox" / "sky130_fd_io.v")
|
|
49
51
|
self.add_yosys_blackbox_fileset("models.blackbox")
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class Sky130Lambdalib_la_ioanalog(LambalibTechLibrary, _LambdaPath):
|
|
55
|
+
def __init__(self):
|
|
56
|
+
super().__init__("la_ioanalog", [Sky130_IOLibrary])
|
|
57
|
+
self.set_name("sky130_la_ioanalog")
|
|
58
|
+
|
|
59
|
+
# version
|
|
60
|
+
self.set_version("v1")
|
|
61
|
+
|
|
62
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
63
|
+
|
|
64
|
+
with self.active_dataroot("lambdapdk"):
|
|
65
|
+
with self.active_fileset("rtl"):
|
|
66
|
+
self.add_file(lib_path / "lambda" / "la_ioanalog.v")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class Sky130Lambdalib_la_iobidir(LambalibTechLibrary, _LambdaPath):
|
|
70
|
+
def __init__(self):
|
|
71
|
+
super().__init__("la_iobidir", [Sky130_IOLibrary])
|
|
72
|
+
self.set_name("sky130_la_iobidir")
|
|
73
|
+
|
|
74
|
+
# version
|
|
75
|
+
self.set_version("v1")
|
|
76
|
+
|
|
77
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
78
|
+
|
|
79
|
+
with self.active_dataroot("lambdapdk"):
|
|
80
|
+
with self.active_fileset("rtl"):
|
|
81
|
+
self.add_file(lib_path / "lambda" / "la_iobidir.v")
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class Sky130Lambdalib_la_ioclamp(LambalibTechLibrary, _LambdaPath):
|
|
85
|
+
def __init__(self):
|
|
86
|
+
super().__init__("la_ioclamp", [Sky130_IOLibrary])
|
|
87
|
+
self.set_name("sky130_la_ioclamp")
|
|
88
|
+
|
|
89
|
+
# version
|
|
90
|
+
self.set_version("v1")
|
|
91
|
+
|
|
92
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
93
|
+
|
|
94
|
+
with self.active_dataroot("lambdapdk"):
|
|
95
|
+
with self.active_fileset("rtl"):
|
|
96
|
+
self.add_file(lib_path / "lambda" / "la_ioclamp.v")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class Sky130Lambdalib_la_iocorner(LambalibTechLibrary, _LambdaPath):
|
|
100
|
+
def __init__(self):
|
|
101
|
+
super().__init__("la_iocorner", [Sky130_IOLibrary])
|
|
102
|
+
self.set_name("sky130_la_iocorner")
|
|
103
|
+
|
|
104
|
+
# version
|
|
105
|
+
self.set_version("v1")
|
|
106
|
+
|
|
107
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
108
|
+
|
|
109
|
+
with self.active_dataroot("lambdapdk"):
|
|
110
|
+
with self.active_fileset("rtl"):
|
|
111
|
+
self.add_file(lib_path / "lambda" / "la_iocorner.v")
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class Sky130Lambdalib_la_ioinput(LambalibTechLibrary, _LambdaPath):
|
|
115
|
+
def __init__(self):
|
|
116
|
+
super().__init__("la_ioinput", [Sky130_IOLibrary])
|
|
117
|
+
self.set_name("sky130_la_ioinput")
|
|
118
|
+
|
|
119
|
+
# version
|
|
120
|
+
self.set_version("v1")
|
|
121
|
+
|
|
122
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
123
|
+
|
|
124
|
+
with self.active_dataroot("lambdapdk"):
|
|
125
|
+
with self.active_fileset("rtl"):
|
|
126
|
+
self.add_file(lib_path / "lambda" / "la_ioinput.v")
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class Sky130Lambdalib_la_iorxdiff(LambalibTechLibrary, _LambdaPath):
|
|
130
|
+
def __init__(self):
|
|
131
|
+
super().__init__("la_iorxdiff", [Sky130_IOLibrary])
|
|
132
|
+
self.set_name("sky130_la_iorxdiff")
|
|
133
|
+
|
|
134
|
+
# version
|
|
135
|
+
self.set_version("v1")
|
|
136
|
+
|
|
137
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
138
|
+
|
|
139
|
+
with self.active_dataroot("lambdapdk"):
|
|
140
|
+
with self.active_fileset("rtl"):
|
|
141
|
+
self.add_file(lib_path / "lambda" / "la_iorxdiff.v")
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class Sky130Lambdalib_la_iotxdiff(LambalibTechLibrary, _LambdaPath):
|
|
145
|
+
def __init__(self):
|
|
146
|
+
super().__init__("la_iotxdiff", [Sky130_IOLibrary])
|
|
147
|
+
self.set_name("sky130_la_iotxdiff")
|
|
148
|
+
|
|
149
|
+
# version
|
|
150
|
+
self.set_version("v1")
|
|
151
|
+
|
|
152
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
153
|
+
|
|
154
|
+
with self.active_dataroot("lambdapdk"):
|
|
155
|
+
with self.active_fileset("rtl"):
|
|
156
|
+
self.add_file(lib_path / "lambda" / "la_iotxdiff.v")
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class Sky130Lambdalib_la_iovdd(LambalibTechLibrary, _LambdaPath):
|
|
160
|
+
def __init__(self):
|
|
161
|
+
super().__init__("la_iovdd", [Sky130_IOLibrary])
|
|
162
|
+
self.set_name("sky130_la_iovdd")
|
|
163
|
+
|
|
164
|
+
# version
|
|
165
|
+
self.set_version("v1")
|
|
166
|
+
|
|
167
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
168
|
+
|
|
169
|
+
with self.active_dataroot("lambdapdk"):
|
|
170
|
+
with self.active_fileset("rtl"):
|
|
171
|
+
self.add_file(lib_path / "lambda" / "la_iovdd.v")
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class Sky130Lambdalib_la_iovdda(LambalibTechLibrary, _LambdaPath):
|
|
175
|
+
def __init__(self):
|
|
176
|
+
super().__init__("la_iovdda", [Sky130_IOLibrary])
|
|
177
|
+
self.set_name("sky130_la_iovdda")
|
|
178
|
+
|
|
179
|
+
# version
|
|
180
|
+
self.set_version("v1")
|
|
181
|
+
|
|
182
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
183
|
+
|
|
184
|
+
with self.active_dataroot("lambdapdk"):
|
|
185
|
+
with self.active_fileset("rtl"):
|
|
186
|
+
self.add_file(lib_path / "lambda" / "la_iovdda.v")
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class Sky130Lambdalib_la_iovddio(LambalibTechLibrary, _LambdaPath):
|
|
190
|
+
def __init__(self):
|
|
191
|
+
super().__init__("la_iovddio", [Sky130_IOLibrary])
|
|
192
|
+
self.set_name("sky130_la_iovddio")
|
|
193
|
+
|
|
194
|
+
# version
|
|
195
|
+
self.set_version("v1")
|
|
196
|
+
|
|
197
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
198
|
+
|
|
199
|
+
with self.active_dataroot("lambdapdk"):
|
|
200
|
+
with self.active_fileset("rtl"):
|
|
201
|
+
self.add_file(lib_path / "lambda" / "la_iovddio.v")
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class Sky130Lambdalib_la_iovss(LambalibTechLibrary, _LambdaPath):
|
|
205
|
+
def __init__(self):
|
|
206
|
+
super().__init__("la_iovss", [Sky130_IOLibrary])
|
|
207
|
+
self.set_name("sky130_la_iovss")
|
|
208
|
+
|
|
209
|
+
# version
|
|
210
|
+
self.set_version("v1")
|
|
211
|
+
|
|
212
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
213
|
+
|
|
214
|
+
with self.active_dataroot("lambdapdk"):
|
|
215
|
+
with self.active_fileset("rtl"):
|
|
216
|
+
self.add_file(lib_path / "lambda" / "la_iovss.v")
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class Sky130Lambdalib_la_iovssa(LambalibTechLibrary, _LambdaPath):
|
|
220
|
+
def __init__(self):
|
|
221
|
+
super().__init__("la_iovssa", [Sky130_IOLibrary])
|
|
222
|
+
self.set_name("sky130_la_iovssa")
|
|
223
|
+
|
|
224
|
+
# version
|
|
225
|
+
self.set_version("v1")
|
|
226
|
+
|
|
227
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
228
|
+
|
|
229
|
+
with self.active_dataroot("lambdapdk"):
|
|
230
|
+
with self.active_fileset("rtl"):
|
|
231
|
+
self.add_file(lib_path / "lambda" / "la_iovssa.v")
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class Sky130Lambdalib_la_iovssio(LambalibTechLibrary, _LambdaPath):
|
|
235
|
+
def __init__(self):
|
|
236
|
+
super().__init__("la_iovssio", [Sky130_IOLibrary])
|
|
237
|
+
self.set_name("sky130_la_iovssio")
|
|
238
|
+
|
|
239
|
+
# version
|
|
240
|
+
self.set_version("v1")
|
|
241
|
+
|
|
242
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130io")
|
|
243
|
+
|
|
244
|
+
with self.active_dataroot("lambdapdk"):
|
|
245
|
+
with self.active_fileset("rtl"):
|
|
246
|
+
self.add_file(lib_path / "lambda" / "la_iovssio.v")
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
class Sky130LambdaLib_IO(LambalibTechLibrary):
|
|
250
|
+
@classmethod
|
|
251
|
+
def alias(cls, project: ASICProject):
|
|
252
|
+
Sky130Lambdalib_la_ioanalog.alias(project)
|
|
253
|
+
Sky130Lambdalib_la_iobidir.alias(project)
|
|
254
|
+
Sky130Lambdalib_la_ioclamp.alias(project)
|
|
255
|
+
Sky130Lambdalib_la_iocorner.alias(project)
|
|
256
|
+
Sky130Lambdalib_la_ioinput.alias(project)
|
|
257
|
+
Sky130Lambdalib_la_iorxdiff.alias(project)
|
|
258
|
+
Sky130Lambdalib_la_iotxdiff.alias(project)
|
|
259
|
+
Sky130Lambdalib_la_iovdd.alias(project)
|
|
260
|
+
Sky130Lambdalib_la_iovdda.alias(project)
|
|
261
|
+
Sky130Lambdalib_la_iovddio.alias(project)
|
|
262
|
+
Sky130Lambdalib_la_iovss.alias(project)
|
|
263
|
+
Sky130Lambdalib_la_iovssa.alias(project)
|
|
264
|
+
Sky130Lambdalib_la_iovssio.alias(project)
|
|
@@ -152,14 +152,18 @@ class _Sky130_SCLibrary(LambdaLibrary):
|
|
|
152
152
|
|
|
153
153
|
# Setup for OpenROAD
|
|
154
154
|
with self.active_dataroot("lambdapdk"):
|
|
155
|
+
with self.active_fileset("openroad.powergrid"):
|
|
156
|
+
self.add_file(lib_path / "apr" / "openroad" / "pdngen.tcl")
|
|
157
|
+
self.add_openroad_powergridfileset()
|
|
158
|
+
with self.active_fileset("openroad.globalconnect"):
|
|
159
|
+
self.add_file(lib_path / "apr" / "openroad" / "global_connect.tcl")
|
|
160
|
+
self.add_openroad_globalconnectfileset()
|
|
161
|
+
|
|
155
162
|
self.set_openroad_placement_density(0.60)
|
|
156
163
|
self.set_openroad_tielow_cell(f"sky130_fd_sc_{libtype}__conb_1", "LO")
|
|
157
164
|
self.set_openroad_tiehigh_cell(f"sky130_fd_sc_{libtype}__conb_1", "HI")
|
|
158
165
|
self.set_openroad_macro_placement_halo(40, 40)
|
|
159
166
|
self.set_openroad_tapcells_file(lib_path / "apr" / "openroad" / "tapcell.tcl")
|
|
160
|
-
self.add_openroad_global_connect_file(
|
|
161
|
-
lib_path / "apr" / "openroad" / "global_connect.tcl")
|
|
162
|
-
self.add_openroad_power_grid_file(lib_path / "apr" / "openroad" / "pdngen.tcl")
|
|
163
167
|
|
|
164
168
|
# Setup for bambu
|
|
165
169
|
self.set_bambu_clock_multiplier(1)
|