lambdapdk 0.1.27__py3-none-any.whl → 0.1.29__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 +3 -5
- lambdapdk/asap7/__init__.py +2 -2
- lambdapdk/asap7/libs/asap7sc7p5t.py +19 -9
- lambdapdk/asap7/libs/fakeram7.py +6 -3
- lambdapdk/freepdk45/__init__.py +2 -2
- lambdapdk/freepdk45/libs/fakeram45.py +6 -3
- lambdapdk/freepdk45/libs/nangate45.py +17 -7
- lambdapdk/gf180/__init__.py +2 -2
- lambdapdk/gf180/libs/gf180io.py +5 -3
- lambdapdk/gf180/libs/gf180mcu.py +17 -7
- lambdapdk/gf180/libs/gf180sram.py +6 -3
- lambdapdk/sky130/__init__.py +3 -3
- lambdapdk/sky130/libs/sky130io.py +5 -3
- lambdapdk/sky130/libs/sky130sc.py +17 -7
- lambdapdk/sky130/libs/sky130sram.py +6 -3
- {lambdapdk-0.1.27.dist-info → lambdapdk-0.1.29.dist-info}/METADATA +9 -9
- lambdapdk-0.1.29.dist-info/RECORD +20 -0
- {lambdapdk-0.1.27.dist-info → lambdapdk-0.1.29.dist-info}/WHEEL +1 -1
- lambdapdk-0.1.27.dist-info/RECORD +0 -20
- {lambdapdk-0.1.27.dist-info → lambdapdk-0.1.29.dist-info}/LICENSE +0 -0
- {lambdapdk-0.1.27.dist-info → lambdapdk-0.1.29.dist-info}/top_level.txt +0 -0
lambdapdk/__init__.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import siliconcompiler.package as sc_package
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
__version__ = "0.1.
|
|
4
|
+
__version__ = "0.1.29"
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def register_data_source(chip):
|
|
@@ -20,12 +20,11 @@ def get_pdks():
|
|
|
20
20
|
Returns a list of pdk names in lambdapdk
|
|
21
21
|
'''
|
|
22
22
|
|
|
23
|
-
from siliconcompiler import Chip
|
|
24
23
|
from lambdapdk import asap7, freepdk45, sky130, gf180
|
|
25
24
|
|
|
26
25
|
all_pdks = []
|
|
27
26
|
for pdk_mod in [asap7, freepdk45, sky130, gf180]:
|
|
28
|
-
pdks = pdk_mod.setup(
|
|
27
|
+
pdks = pdk_mod.setup()
|
|
29
28
|
if not isinstance(pdks, (list, tuple)):
|
|
30
29
|
pdks = [pdks]
|
|
31
30
|
for pdk in pdks:
|
|
@@ -39,7 +38,6 @@ def get_libs():
|
|
|
39
38
|
Returns a list of libraries names in lambdapdk
|
|
40
39
|
'''
|
|
41
40
|
|
|
42
|
-
from siliconcompiler import Chip
|
|
43
41
|
from lambdapdk.asap7.libs import asap7sc7p5t, fakeram7
|
|
44
42
|
from lambdapdk.freepdk45.libs import nangate45, fakeram45
|
|
45
43
|
from lambdapdk.sky130.libs import sky130sc, sky130io, sky130sram
|
|
@@ -51,7 +49,7 @@ def get_libs():
|
|
|
51
49
|
nangate45, fakeram45,
|
|
52
50
|
sky130sc, sky130io, sky130sram,
|
|
53
51
|
gf180mcu, gf180io, gf180sram]:
|
|
54
|
-
libs = lib_mod.setup(
|
|
52
|
+
libs = lib_mod.setup()
|
|
55
53
|
if not isinstance(libs, (list, tuple)):
|
|
56
54
|
libs = [libs]
|
|
57
55
|
for lib in libs:
|
lambdapdk/asap7/__init__.py
CHANGED
|
@@ -6,7 +6,7 @@ from lambdapdk import register_data_source
|
|
|
6
6
|
####################################################
|
|
7
7
|
# PDK Setup
|
|
8
8
|
####################################################
|
|
9
|
-
def setup(
|
|
9
|
+
def setup():
|
|
10
10
|
'''
|
|
11
11
|
The asap7 PDK was developed at ASU in collaboration with ARM Research.
|
|
12
12
|
With funding from the DARPA IDEA program, the PDK was released
|
|
@@ -52,7 +52,7 @@ def setup(chip):
|
|
|
52
52
|
libtype = '7p5t'
|
|
53
53
|
pdkdir = os.path.join('lambdapdk', 'asap7', 'base')
|
|
54
54
|
|
|
55
|
-
pdk = siliconcompiler.PDK(
|
|
55
|
+
pdk = siliconcompiler.PDK(process, package='lambdapdk')
|
|
56
56
|
register_data_source(pdk)
|
|
57
57
|
|
|
58
58
|
# process name
|
|
@@ -3,8 +3,8 @@ import siliconcompiler
|
|
|
3
3
|
from lambdapdk import register_data_source
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def _setup_lib(
|
|
7
|
-
lib = siliconcompiler.Library(
|
|
6
|
+
def _setup_lib(libname, suffix):
|
|
7
|
+
lib = siliconcompiler.Library(libname, package='lambdapdk')
|
|
8
8
|
register_data_source(lib)
|
|
9
9
|
|
|
10
10
|
process = 'asap7'
|
|
@@ -121,17 +121,27 @@ def _setup_lib(chip, libname, suffix):
|
|
|
121
121
|
libdir + '/apr/openroad/global_connect.tcl')
|
|
122
122
|
|
|
123
123
|
libs = [lib]
|
|
124
|
-
|
|
125
|
-
lambda_lib = siliconcompiler.Library(chip, f'lambdalib_{libtype}_{libname}',
|
|
124
|
+
std_lambda_lib = siliconcompiler.Library(f'lambdalib_stdlib_{libname}',
|
|
126
125
|
package='lambdapdk')
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
register_data_source(std_lambda_lib)
|
|
127
|
+
std_lambda_lib.add('option', 'ydir', libdir + '/lambda/stdlib')
|
|
128
|
+
std_lambda_lib.use(lib)
|
|
129
|
+
std_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
130
|
+
libs.append(std_lambda_lib)
|
|
131
|
+
aux_lambda_lib = siliconcompiler.Library(f'lambdalib_auxlib_{libname}',
|
|
132
|
+
package='lambdapdk')
|
|
133
|
+
register_data_source(aux_lambda_lib)
|
|
134
|
+
aux_lambda_lib.add('option', 'ydir', libdir + '/lambda/auxlib')
|
|
135
|
+
aux_lambda_lib.use(std_lambda_lib)
|
|
136
|
+
aux_lambda_lib.use(lib)
|
|
137
|
+
aux_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
138
|
+
aux_lambda_lib.set('option', 'library', std_lambda_lib.design)
|
|
139
|
+
libs.append(aux_lambda_lib)
|
|
130
140
|
|
|
131
141
|
return libs
|
|
132
142
|
|
|
133
143
|
|
|
134
|
-
def setup(
|
|
144
|
+
def setup():
|
|
135
145
|
'''
|
|
136
146
|
ASAP 7 7.5-track standard cell library.
|
|
137
147
|
'''
|
|
@@ -143,7 +153,7 @@ def setup(chip):
|
|
|
143
153
|
|
|
144
154
|
libs = []
|
|
145
155
|
for libname, suffix in all_libs.items():
|
|
146
|
-
libs.extend(_setup_lib(
|
|
156
|
+
libs.extend(_setup_lib(libname, suffix))
|
|
147
157
|
|
|
148
158
|
return libs
|
|
149
159
|
|
lambdapdk/asap7/libs/fakeram7.py
CHANGED
|
@@ -2,13 +2,13 @@ from siliconcompiler import Library
|
|
|
2
2
|
from lambdapdk import register_data_source
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
def setup(
|
|
5
|
+
def setup():
|
|
6
6
|
libs = []
|
|
7
7
|
stackup = '10M'
|
|
8
8
|
|
|
9
9
|
for config in ('64x32', '128x32', '256x32', '256x64', '512x32', '512x64'):
|
|
10
10
|
mem_name = f'fakeram7_{config}'
|
|
11
|
-
lib = Library(
|
|
11
|
+
lib = Library(mem_name, package='lambdapdk')
|
|
12
12
|
register_data_source(lib)
|
|
13
13
|
path_base = 'lambdapdk/asap7/libs/fakeram7'
|
|
14
14
|
lib.add('output', stackup, 'lef', f'{path_base}/lef/{mem_name}.lef')
|
|
@@ -22,9 +22,12 @@ def setup(chip):
|
|
|
22
22
|
|
|
23
23
|
libs.append(lib)
|
|
24
24
|
|
|
25
|
-
lambda_lib = Library(
|
|
25
|
+
lambda_lib = Library('lambdalib_fakeram7', package='lambdapdk')
|
|
26
26
|
register_data_source(lambda_lib)
|
|
27
27
|
lambda_lib.add('option', 'ydir', 'lambdapdk/asap7/libs/fakeram7/lambda')
|
|
28
|
+
for lib in libs:
|
|
29
|
+
lambda_lib.use(lib)
|
|
30
|
+
lambda_lib.add('asic', 'macrolib', lib.design)
|
|
28
31
|
|
|
29
32
|
libs.append(lambda_lib)
|
|
30
33
|
|
lambdapdk/freepdk45/__init__.py
CHANGED
|
@@ -7,7 +7,7 @@ from lambdapdk import register_data_source
|
|
|
7
7
|
####################################################
|
|
8
8
|
# PDK Setup
|
|
9
9
|
####################################################
|
|
10
|
-
def setup(
|
|
10
|
+
def setup():
|
|
11
11
|
'''
|
|
12
12
|
The freepdk45 PDK is a virtual PDK derived from the work done at
|
|
13
13
|
NCSU (NCSU_TechLib_FreePDK45.) It supplies techfiles, display
|
|
@@ -43,7 +43,7 @@ def setup(chip):
|
|
|
43
43
|
|
|
44
44
|
pdkdir = os.path.join('lambdapdk', 'freepdk45', 'base')
|
|
45
45
|
|
|
46
|
-
pdk = siliconcompiler.PDK(
|
|
46
|
+
pdk = siliconcompiler.PDK(process, package='lambdapdk')
|
|
47
47
|
register_data_source(pdk)
|
|
48
48
|
|
|
49
49
|
# process name
|
|
@@ -2,14 +2,14 @@ from siliconcompiler import Library
|
|
|
2
2
|
from lambdapdk import register_data_source
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
def setup(
|
|
5
|
+
def setup():
|
|
6
6
|
libs = []
|
|
7
7
|
stackup = '10M'
|
|
8
8
|
corner = 'typical'
|
|
9
9
|
|
|
10
10
|
for config in ('64x32', '128x32', '256x32', '256x64', '512x32', '512x64'):
|
|
11
11
|
mem_name = f'fakeram45_{config}'
|
|
12
|
-
lib = Library(
|
|
12
|
+
lib = Library(mem_name, package='lambdapdk')
|
|
13
13
|
register_data_source(lib)
|
|
14
14
|
path_base = 'lambdapdk/freepdk45/libs/fakeram45'
|
|
15
15
|
lib.add('output', stackup, 'lef', f'{path_base}/lef/{mem_name}.lef')
|
|
@@ -21,9 +21,12 @@ def setup(chip):
|
|
|
21
21
|
|
|
22
22
|
libs.append(lib)
|
|
23
23
|
|
|
24
|
-
lambda_lib = Library(
|
|
24
|
+
lambda_lib = Library('lambdalib_fakeram45', package='lambdapdk')
|
|
25
25
|
register_data_source(lambda_lib)
|
|
26
26
|
lambda_lib.add('option', 'ydir', 'lambdapdk/freepdk45/libs/fakeram45/lambda')
|
|
27
|
+
for lib in libs:
|
|
28
|
+
lambda_lib.use(lib)
|
|
29
|
+
lambda_lib.add('asic', 'macrolib', lib.design)
|
|
27
30
|
|
|
28
31
|
libs.append(lambda_lib)
|
|
29
32
|
|
|
@@ -3,7 +3,7 @@ import siliconcompiler
|
|
|
3
3
|
from lambdapdk import register_data_source
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def setup(
|
|
6
|
+
def setup():
|
|
7
7
|
'''
|
|
8
8
|
Nangate open standard cell library for FreePDK45.
|
|
9
9
|
'''
|
|
@@ -14,7 +14,7 @@ def setup(chip):
|
|
|
14
14
|
version = 'r1p0'
|
|
15
15
|
corner = 'typical'
|
|
16
16
|
|
|
17
|
-
lib = siliconcompiler.Library(
|
|
17
|
+
lib = siliconcompiler.Library(libname, package='lambdapdk')
|
|
18
18
|
register_data_source(lib)
|
|
19
19
|
|
|
20
20
|
libdir = os.path.join('lambdapdk', process, 'libs', libname)
|
|
@@ -100,12 +100,22 @@ def setup(chip):
|
|
|
100
100
|
lib.set('option', 'var', f'{tool}_tielow_port', "Z")
|
|
101
101
|
|
|
102
102
|
libs = [lib]
|
|
103
|
-
|
|
104
|
-
lambda_lib = siliconcompiler.Library(chip, f'lambdalib_{libtype}_{libname}',
|
|
103
|
+
std_lambda_lib = siliconcompiler.Library(f'lambdalib_stdlib_{libname}',
|
|
105
104
|
package='lambdapdk')
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
register_data_source(std_lambda_lib)
|
|
106
|
+
std_lambda_lib.add('option', 'ydir', libdir + '/lambda/stdlib')
|
|
107
|
+
std_lambda_lib.use(lib)
|
|
108
|
+
std_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
109
|
+
libs.append(std_lambda_lib)
|
|
110
|
+
aux_lambda_lib = siliconcompiler.Library(f'lambdalib_auxlib_{libname}',
|
|
111
|
+
package='lambdapdk')
|
|
112
|
+
register_data_source(aux_lambda_lib)
|
|
113
|
+
aux_lambda_lib.add('option', 'ydir', libdir + '/lambda/auxlib')
|
|
114
|
+
aux_lambda_lib.use(std_lambda_lib)
|
|
115
|
+
aux_lambda_lib.use(lib)
|
|
116
|
+
aux_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
117
|
+
aux_lambda_lib.set('option', 'library', std_lambda_lib.design)
|
|
118
|
+
libs.append(aux_lambda_lib)
|
|
109
119
|
|
|
110
120
|
return libs
|
|
111
121
|
|
lambdapdk/gf180/__init__.py
CHANGED
|
@@ -6,7 +6,7 @@ from lambdapdk import register_data_source
|
|
|
6
6
|
####################################################
|
|
7
7
|
# PDK Setup
|
|
8
8
|
####################################################
|
|
9
|
-
def setup(
|
|
9
|
+
def setup():
|
|
10
10
|
'''
|
|
11
11
|
The 'gf180' Open Source PDK is a collaboration between Google and
|
|
12
12
|
Global Foundries to provide a fully open source Process
|
|
@@ -40,7 +40,7 @@ def setup(chip):
|
|
|
40
40
|
|
|
41
41
|
pdkdir = "lambdapdk/gf180/base/"
|
|
42
42
|
|
|
43
|
-
pdk = siliconcompiler.PDK(
|
|
43
|
+
pdk = siliconcompiler.PDK(process, package='lambdapdk')
|
|
44
44
|
register_data_source(pdk)
|
|
45
45
|
|
|
46
46
|
# process name
|
lambdapdk/gf180/libs/gf180io.py
CHANGED
|
@@ -3,7 +3,7 @@ import siliconcompiler
|
|
|
3
3
|
from lambdapdk import register_data_source
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def setup(
|
|
6
|
+
def setup():
|
|
7
7
|
'''
|
|
8
8
|
GloabalFoundries 180 I/O library.
|
|
9
9
|
'''
|
|
@@ -11,7 +11,7 @@ def setup(chip):
|
|
|
11
11
|
|
|
12
12
|
libs = []
|
|
13
13
|
for substack in ("3LM", "4LM", "5LM"):
|
|
14
|
-
lib = siliconcompiler.Library(
|
|
14
|
+
lib = siliconcompiler.Library(f'gf180mcu_fd_io_{substack}', package='lambdapdk')
|
|
15
15
|
register_data_source(lib)
|
|
16
16
|
|
|
17
17
|
# pdk
|
|
@@ -58,9 +58,11 @@ def setup(chip):
|
|
|
58
58
|
|
|
59
59
|
libs.append(lib)
|
|
60
60
|
|
|
61
|
-
lambda_lib = siliconcompiler.Library(
|
|
61
|
+
lambda_lib = siliconcompiler.Library('lambdalib_gf180mcu_fd_io', package='lambdapdk')
|
|
62
62
|
register_data_source(lambda_lib)
|
|
63
63
|
lambda_lib.add('option', 'ydir', 'lambdapdk/gf180/libs/gf180mcu_fd_io/lambda')
|
|
64
|
+
lambda_lib.use(lib)
|
|
65
|
+
lambda_lib.set('asic', 'macrolib', lib.design)
|
|
64
66
|
|
|
65
67
|
return [*libs, lambda_lib]
|
|
66
68
|
|
lambdapdk/gf180/libs/gf180mcu.py
CHANGED
|
@@ -2,7 +2,7 @@ import siliconcompiler
|
|
|
2
2
|
from lambdapdk import register_data_source
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
def setup(
|
|
5
|
+
def setup():
|
|
6
6
|
'''
|
|
7
7
|
Skywater130 standard cell library.
|
|
8
8
|
'''
|
|
@@ -14,7 +14,7 @@ def setup(chip):
|
|
|
14
14
|
|
|
15
15
|
libdir = f"lambdapdk/gf180/libs/{libname}/"
|
|
16
16
|
|
|
17
|
-
lib = siliconcompiler.Library(
|
|
17
|
+
lib = siliconcompiler.Library(libname, package='lambdapdk')
|
|
18
18
|
register_data_source(lib)
|
|
19
19
|
|
|
20
20
|
# pdk
|
|
@@ -133,12 +133,22 @@ def setup(chip):
|
|
|
133
133
|
|
|
134
134
|
libs.append(lib)
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
lambda_lib = siliconcompiler.Library(chip, f'lambdalib_{libtype}_{libname}',
|
|
136
|
+
std_lambda_lib = siliconcompiler.Library(f'lambdalib_stdlib_{libname}',
|
|
138
137
|
package='lambdapdk')
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
register_data_source(std_lambda_lib)
|
|
139
|
+
std_lambda_lib.add('option', 'ydir', libdir + '/lambda/stdlib')
|
|
140
|
+
std_lambda_lib.use(lib)
|
|
141
|
+
std_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
142
|
+
libs.append(std_lambda_lib)
|
|
143
|
+
aux_lambda_lib = siliconcompiler.Library(f'lambdalib_auxlib_{libname}',
|
|
144
|
+
package='lambdapdk')
|
|
145
|
+
register_data_source(aux_lambda_lib)
|
|
146
|
+
aux_lambda_lib.add('option', 'ydir', libdir + '/lambda/auxlib')
|
|
147
|
+
aux_lambda_lib.use(std_lambda_lib)
|
|
148
|
+
aux_lambda_lib.use(lib)
|
|
149
|
+
aux_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
150
|
+
aux_lambda_lib.set('option', 'library', std_lambda_lib.design)
|
|
151
|
+
libs.append(aux_lambda_lib)
|
|
142
152
|
|
|
143
153
|
return libs
|
|
144
154
|
|
|
@@ -2,12 +2,12 @@ from siliconcompiler import Chip, Library
|
|
|
2
2
|
from lambdapdk import register_data_source
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
def setup(
|
|
5
|
+
def setup():
|
|
6
6
|
libs = []
|
|
7
7
|
|
|
8
8
|
for config in ('64x8', '128x8', '256x8', '512x8'):
|
|
9
9
|
mem_name = f'gf180mcu_fd_ip_sram__sram{config}m8wm1'
|
|
10
|
-
lib = Library(
|
|
10
|
+
lib = Library(mem_name, package='lambdapdk')
|
|
11
11
|
register_data_source(lib)
|
|
12
12
|
|
|
13
13
|
path_base = 'lambdapdk/gf180/libs/gf180mcu_fd_ip_sram'
|
|
@@ -42,9 +42,12 @@ def setup(chip):
|
|
|
42
42
|
|
|
43
43
|
libs.append(lib)
|
|
44
44
|
|
|
45
|
-
lambda_lib = Library(
|
|
45
|
+
lambda_lib = Library('lambdalib_gf180sram', package='lambdapdk')
|
|
46
46
|
register_data_source(lambda_lib)
|
|
47
47
|
lambda_lib.add('option', 'ydir', 'lambdapdk/gf180/libs/gf180mcu_fd_ip_sram/lambda')
|
|
48
|
+
for lib in libs:
|
|
49
|
+
lambda_lib.use(lib)
|
|
50
|
+
lambda_lib.add('asic', 'macrolib', lib.design)
|
|
48
51
|
|
|
49
52
|
libs.append(lambda_lib)
|
|
50
53
|
|
lambdapdk/sky130/__init__.py
CHANGED
|
@@ -7,7 +7,7 @@ from lambdapdk import register_data_source
|
|
|
7
7
|
####################################################
|
|
8
8
|
# PDK Setup
|
|
9
9
|
####################################################
|
|
10
|
-
def setup(
|
|
10
|
+
def setup():
|
|
11
11
|
'''
|
|
12
12
|
The 'skywater130' Open Source PDK is a collaboration between Google and
|
|
13
13
|
SkyWater Technology Foundry to provide a fully open source Process
|
|
@@ -51,7 +51,7 @@ def setup(chip):
|
|
|
51
51
|
|
|
52
52
|
pdkdir = os.path.join('lambdapdk', 'sky130', 'base')
|
|
53
53
|
|
|
54
|
-
pdk = siliconcompiler.PDK(
|
|
54
|
+
pdk = siliconcompiler.PDK(process, package='lambdapdk')
|
|
55
55
|
register_data_source(pdk)
|
|
56
56
|
|
|
57
57
|
# process name
|
|
@@ -93,7 +93,7 @@ def setup(chip):
|
|
|
93
93
|
'met2': 0.3,
|
|
94
94
|
'met3': 0.3,
|
|
95
95
|
'met4': 0.3,
|
|
96
|
-
'met5': 0.3
|
|
96
|
+
'met5': 0.3
|
|
97
97
|
}
|
|
98
98
|
for layer, adj in openroad_layer_adjustments.items():
|
|
99
99
|
pdk.set('pdk', process, 'var', 'openroad', f'{layer}_adjustment', stackup, str(adj))
|
|
@@ -3,7 +3,7 @@ import siliconcompiler
|
|
|
3
3
|
from lambdapdk import register_data_source
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def setup(
|
|
6
|
+
def setup():
|
|
7
7
|
'''
|
|
8
8
|
Skywater130 I/O library.
|
|
9
9
|
'''
|
|
@@ -11,7 +11,7 @@ def setup(chip):
|
|
|
11
11
|
libname = 'sky130io'
|
|
12
12
|
stackup = '5M1LI'
|
|
13
13
|
|
|
14
|
-
lib = siliconcompiler.Library(
|
|
14
|
+
lib = siliconcompiler.Library(libname, package='lambdapdk')
|
|
15
15
|
register_data_source(lib)
|
|
16
16
|
|
|
17
17
|
libdir = os.path.join('lambdapdk', 'sky130', 'libs', libname)
|
|
@@ -38,9 +38,11 @@ def setup(chip):
|
|
|
38
38
|
lib.set('output', 'blackbox', 'verilog', os.path.join(libdir, 'blackbox', 'sky130_ef_io.v'))
|
|
39
39
|
lib.add('output', 'blackbox', 'verilog', os.path.join(libdir, 'blackbox', 'sky130_fd_io.v'))
|
|
40
40
|
|
|
41
|
-
lambda_lib = siliconcompiler.Library(
|
|
41
|
+
lambda_lib = siliconcompiler.Library(f'lambdalib_{libname}', package='lambdapdk')
|
|
42
42
|
register_data_source(lambda_lib)
|
|
43
43
|
lambda_lib.add('option', 'ydir', 'lambdapdk/sky130/libs/sky130io/lambda')
|
|
44
|
+
lambda_lib.use(lib)
|
|
45
|
+
lambda_lib.set('asic', 'macrolib', lib.design)
|
|
44
46
|
|
|
45
47
|
return [lib, lambda_lib]
|
|
46
48
|
|
|
@@ -3,7 +3,7 @@ import siliconcompiler
|
|
|
3
3
|
from lambdapdk import register_data_source
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def setup(
|
|
6
|
+
def setup():
|
|
7
7
|
'''
|
|
8
8
|
Skywater130 standard cell library.
|
|
9
9
|
'''
|
|
@@ -69,7 +69,7 @@ def setup(chip):
|
|
|
69
69
|
libname = f"sky130{libtype}"
|
|
70
70
|
libdir = os.path.join('lambdapdk', 'sky130', 'libs', libname)
|
|
71
71
|
|
|
72
|
-
lib = siliconcompiler.Library(
|
|
72
|
+
lib = siliconcompiler.Library(libname, package='lambdapdk')
|
|
73
73
|
register_data_source(lib)
|
|
74
74
|
|
|
75
75
|
# version
|
|
@@ -182,12 +182,22 @@ def setup(chip):
|
|
|
182
182
|
|
|
183
183
|
libs.append(lib)
|
|
184
184
|
|
|
185
|
-
|
|
186
|
-
lambda_lib = siliconcompiler.Library(chip, f'lambdalib_{libtype}_{libname}',
|
|
185
|
+
std_lambda_lib = siliconcompiler.Library(f'lambdalib_stdlib_{libname}',
|
|
187
186
|
package='lambdapdk')
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
187
|
+
register_data_source(std_lambda_lib)
|
|
188
|
+
std_lambda_lib.add('option', 'ydir', libdir + '/lambda/stdlib')
|
|
189
|
+
std_lambda_lib.use(lib)
|
|
190
|
+
std_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
191
|
+
libs.append(std_lambda_lib)
|
|
192
|
+
aux_lambda_lib = siliconcompiler.Library(f'lambdalib_auxlib_{libname}',
|
|
193
|
+
package='lambdapdk')
|
|
194
|
+
register_data_source(aux_lambda_lib)
|
|
195
|
+
aux_lambda_lib.add('option', 'ydir', libdir + '/lambda/auxlib')
|
|
196
|
+
aux_lambda_lib.use(std_lambda_lib)
|
|
197
|
+
aux_lambda_lib.use(lib)
|
|
198
|
+
aux_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
199
|
+
aux_lambda_lib.set('option', 'library', std_lambda_lib.design)
|
|
200
|
+
libs.append(aux_lambda_lib)
|
|
191
201
|
|
|
192
202
|
return libs
|
|
193
203
|
|
|
@@ -2,13 +2,13 @@ from siliconcompiler import Chip, Library
|
|
|
2
2
|
from lambdapdk import register_data_source
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
def setup(
|
|
5
|
+
def setup():
|
|
6
6
|
libs = []
|
|
7
7
|
stackup = '5M1LI'
|
|
8
8
|
|
|
9
9
|
for config in ('64x256',):
|
|
10
10
|
mem_name = f'sky130_sram_1rw1r_{config}_8'
|
|
11
|
-
lib = Library(
|
|
11
|
+
lib = Library(mem_name, package='lambdapdk')
|
|
12
12
|
register_data_source(lib)
|
|
13
13
|
path_base = 'lambdapdk/sky130/libs/sky130sram'
|
|
14
14
|
lib.add('output', stackup, 'lef', f'{path_base}/{mem_name}/lef/{mem_name}.lef.gz')
|
|
@@ -24,9 +24,12 @@ def setup(chip):
|
|
|
24
24
|
|
|
25
25
|
libs.append(lib)
|
|
26
26
|
|
|
27
|
-
lambda_lib = Library(
|
|
27
|
+
lambda_lib = Library('lambdalib_sky130sram', package='lambdapdk')
|
|
28
28
|
register_data_source(lambda_lib)
|
|
29
29
|
lambda_lib.add('option', 'ydir', 'lambdapdk/sky130/libs/sky130sram/lambda')
|
|
30
|
+
for lib in libs:
|
|
31
|
+
lambda_lib.use(lib)
|
|
32
|
+
lambda_lib.add('asic', 'macrolib', lib.design)
|
|
30
33
|
|
|
31
34
|
libs.append(lambda_lib)
|
|
32
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lambdapdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.29
|
|
4
4
|
Summary: Library of open source Process Design Kits
|
|
5
5
|
Author: Zero ASIC
|
|
6
6
|
License: Apache License
|
|
@@ -198,14 +198,14 @@ Project-URL: Homepage, https://github.com/siliconcompiler/lambdapdk
|
|
|
198
198
|
Requires-Python: >=3.8
|
|
199
199
|
Description-Content-Type: text/markdown
|
|
200
200
|
License-File: LICENSE
|
|
201
|
-
Requires-Dist: siliconcompiler >=0.
|
|
202
|
-
Provides-Extra:
|
|
203
|
-
Requires-Dist: flake8 ==7.1.
|
|
204
|
-
Requires-Dist: pytest ==8.3.2 ; extra == '
|
|
205
|
-
Requires-Dist: pytest-timeout ==2.3.1 ; extra == '
|
|
206
|
-
Requires-Dist: tclint ==0.3.2 ; extra == '
|
|
207
|
-
Requires-Dist: lambdalib ==0.2.
|
|
208
|
-
Requires-Dist: sc-leflib ==0.
|
|
201
|
+
Requires-Dist: siliconcompiler >=0.27.0
|
|
202
|
+
Provides-Extra: test
|
|
203
|
+
Requires-Dist: flake8 ==7.1.1 ; extra == 'test'
|
|
204
|
+
Requires-Dist: pytest ==8.3.2 ; extra == 'test'
|
|
205
|
+
Requires-Dist: pytest-timeout ==2.3.1 ; extra == 'test'
|
|
206
|
+
Requires-Dist: tclint ==0.3.2 ; extra == 'test'
|
|
207
|
+
Requires-Dist: lambdalib ==0.2.9 ; extra == 'test'
|
|
208
|
+
Requires-Dist: sc-leflib ==0.4.0 ; extra == 'test'
|
|
209
209
|
|
|
210
210
|
# Lambdapdk Introduction
|
|
211
211
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
lambdapdk/__init__.py,sha256=nJsQ8dJAb8MddteXmzACm6bgIASf-Fii4BrkVzwhkbI,1508
|
|
2
|
+
lambdapdk/asap7/__init__.py,sha256=hDK_dy0NeMbYWQqHGfR_g3su0eOL5rSZ2wDi7S-p-W0,4600
|
|
3
|
+
lambdapdk/asap7/libs/asap7sc7p5t.py,sha256=8i7g9yxahD_Xj9cQQxFCzH3QtQ9qvgLsOQiUbgCJ-8U,6159
|
|
4
|
+
lambdapdk/asap7/libs/fakeram7.py,sha256=thOHy0XyV2-pakoxrttGL3qU9C2OeL1-MVtlrSiTMu8,1112
|
|
5
|
+
lambdapdk/freepdk45/__init__.py,sha256=nZMJX76uo9Kp-UvXDSu8GbqPZNKn13Bglu0ze6LvoVk,3702
|
|
6
|
+
lambdapdk/freepdk45/libs/fakeram45.py,sha256=CqX9YTFLQFlmGn4IZDjEI1OXv43mg3aWdbVfMrBKNSU,1091
|
|
7
|
+
lambdapdk/freepdk45/libs/nangate45.py,sha256=vUb8FH0iMdN97B7oAOZ3CGmVjJQNm2LlA_QwJXMx8Ls,4621
|
|
8
|
+
lambdapdk/gf180/__init__.py,sha256=dn6T92KmoFbsR3YrjIV1sEorYuGe-1DPtye6bCDrf5g,6290
|
|
9
|
+
lambdapdk/gf180/libs/gf180io.py,sha256=6WgsALOaKWYG6RfNFz6sg36zmfZZFl2HnsDWOWYy1UM,2751
|
|
10
|
+
lambdapdk/gf180/libs/gf180mcu.py,sha256=lISVNBGLYuRbfNSIs0Vx-U3qp8ylA3WUULD9RrS8EfE,6756
|
|
11
|
+
lambdapdk/gf180/libs/gf180sram.py,sha256=uNtf4JOaT6wlD7D6hN5XwCoIOPmAXkVxSJXQuqNdY6k,2140
|
|
12
|
+
lambdapdk/sky130/__init__.py,sha256=LzqWdfoMHuzCfJpNyPw3QPWjf8qy4zZgdG8Pw3FKqZQ,4148
|
|
13
|
+
lambdapdk/sky130/libs/sky130io.py,sha256=wFmN9RC98f6OFM5E5acCUgPe35tVTKciJzIcUBlmumo,2029
|
|
14
|
+
lambdapdk/sky130/libs/sky130sc.py,sha256=wW6sAaPpuqqCDqUD2cdJZJXqQz6KRLz9xztQ-hLNaC8,9446
|
|
15
|
+
lambdapdk/sky130/libs/sky130sram.py,sha256=ILjAjbgDdvfiWqmjmj8mmHvU7YiYGZVHGO7jmyajnaY,1489
|
|
16
|
+
lambdapdk-0.1.29.dist-info/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
17
|
+
lambdapdk-0.1.29.dist-info/METADATA,sha256=SzXdco6UTOcCIyWTYaZwM8C3zNsVefc2wmye3jlT65s,13780
|
|
18
|
+
lambdapdk-0.1.29.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
|
|
19
|
+
lambdapdk-0.1.29.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
20
|
+
lambdapdk-0.1.29.dist-info/RECORD,,
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
lambdapdk/__init__.py,sha256=xIW_HvX46oUN_GI17uSY0RWqk2YkpzeYbnuBPM9SRnU,1608
|
|
2
|
-
lambdapdk/asap7/__init__.py,sha256=1wMT4Gd_Tk5xjX1MErFKH9dEb5qLC-4hUGzbHjeJ7nA,4610
|
|
3
|
-
lambdapdk/asap7/libs/asap7sc7p5t.py,sha256=mmlY1X4nHLoQeWWy-RKvE6_dJ16ptQvLNpFrhKbT0CY,5680
|
|
4
|
-
lambdapdk/asap7/libs/fakeram7.py,sha256=plLoPdDnj__ERuh8UaZf7ca374y02fVVk7MODGvC8X8,1024
|
|
5
|
-
lambdapdk/freepdk45/__init__.py,sha256=wYqc99tBQJGvFHhORTTPtQQXq7L_-89wm1to3qYUP9I,3712
|
|
6
|
-
lambdapdk/freepdk45/libs/fakeram45.py,sha256=9d_Ppp8RNfcUdDuAg6EvQWT3Z_3L7ptGyEnfJSzwAO0,1003
|
|
7
|
-
lambdapdk/freepdk45/libs/nangate45.py,sha256=Prbs_WqvmlQf4J2KE0SNZafBksfkICUHD8suYSE4e-s,4130
|
|
8
|
-
lambdapdk/gf180/__init__.py,sha256=Cm6iR7ne5tlOdQQrl4mak7ipaM3sR-6zEEZ1sreQJmM,6300
|
|
9
|
-
lambdapdk/gf180/libs/gf180io.py,sha256=I8SOL4bHNG1SHIIc-iuNtiJrBk26Uta0_pfWm6t2wcU,2692
|
|
10
|
-
lambdapdk/gf180/libs/gf180mcu.py,sha256=u7bclx7QcIj5i2yA7_t5v0ei_k09lXwQQR9r-3gcCRg,6225
|
|
11
|
-
lambdapdk/gf180/libs/gf180sram.py,sha256=vI55cxiGX1nN7nWSk9HRaHRtYfKWuHVFLdua9IJ0Mxc,2052
|
|
12
|
-
lambdapdk/sky130/__init__.py,sha256=O7zL9Pkk816JLETHpg3pYgsoVYfUwt_lBY35IUT-Bho,4159
|
|
13
|
-
lambdapdk/sky130/libs/sky130io.py,sha256=IeYPV_tZtnewnmGDcNnJYNAuPlbcx1D3kWHr4iNloRo,1970
|
|
14
|
-
lambdapdk/sky130/libs/sky130sc.py,sha256=w4G0f2Xf5iZIL_lAqSbv-rb9IvMX_S5WP_rXsv927RY,8915
|
|
15
|
-
lambdapdk/sky130/libs/sky130sram.py,sha256=4pfjB8Y0z0Tz4NB28FexsIdg8yxs59cKPB6pp_mGrrY,1401
|
|
16
|
-
lambdapdk-0.1.27.dist-info/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
17
|
-
lambdapdk-0.1.27.dist-info/METADATA,sha256=Y4Zx2PxTRlHabD-XYZfOH2s8lHK1PW5M0QuaPQl_OYM,13773
|
|
18
|
-
lambdapdk-0.1.27.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
19
|
-
lambdapdk-0.1.27.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
20
|
-
lambdapdk-0.1.27.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|