lambdapdk 0.1.34__py3-none-any.whl → 0.1.36__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 +1 -1
- lambdapdk/asap7/__init__.py +1 -1
- lambdapdk/asap7/libs/asap7sc7p5t.py +2 -2
- lambdapdk/freepdk45/__init__.py +1 -1
- lambdapdk/freepdk45/libs/nangate45.py +1 -1
- lambdapdk/gf180/__init__.py +43 -8
- lambdapdk/gf180/libs/gf180mcu.py +1 -1
- lambdapdk/ihp130/__init__.py +18 -4
- lambdapdk/ihp130/libs/sg13g2_stdcell.py +5 -2
- lambdapdk/sky130/__init__.py +1 -1
- {lambdapdk-0.1.34.dist-info → lambdapdk-0.1.36.dist-info}/METADATA +2 -2
- lambdapdk-0.1.36.dist-info/RECORD +24 -0
- {lambdapdk-0.1.34.dist-info → lambdapdk-0.1.36.dist-info}/WHEEL +1 -1
- lambdapdk-0.1.34.dist-info/RECORD +0 -24
- {lambdapdk-0.1.34.dist-info → lambdapdk-0.1.36.dist-info}/LICENSE +0 -0
- {lambdapdk-0.1.34.dist-info → lambdapdk-0.1.36.dist-info}/top_level.txt +0 -0
lambdapdk/__init__.py
CHANGED
lambdapdk/asap7/__init__.py
CHANGED
|
@@ -62,8 +62,8 @@ def _setup_lib(libname, suffix):
|
|
|
62
62
|
|
|
63
63
|
# decap
|
|
64
64
|
lib.add('asic', 'cells', 'decap', [f"DECAPx1_ASAP7_75t_{suffix}",
|
|
65
|
-
f"
|
|
66
|
-
f"
|
|
65
|
+
f"DECAPx2_ASAP7_75t_{suffix}",
|
|
66
|
+
f"DECAPx4_ASAP7_75t_{suffix}",
|
|
67
67
|
f"DECAPx6_ASAP7_75t_{suffix}",
|
|
68
68
|
f"DECAPx10_ASAP7_75t_{suffix}"])
|
|
69
69
|
|
lambdapdk/freepdk45/__init__.py
CHANGED
lambdapdk/gf180/__init__.py
CHANGED
|
@@ -102,13 +102,7 @@ def setup():
|
|
|
102
102
|
if layer == pdk.get('pdk', process, 'maxlayer', stackup):
|
|
103
103
|
break
|
|
104
104
|
|
|
105
|
-
if max_layer ==
|
|
106
|
-
pdk.set('pdk', process, 'var', 'openroad', 'rclayer_signal', stackup, 'Metal2')
|
|
107
|
-
pdk.set('pdk', process, 'var', 'openroad', 'rclayer_clock', stackup, 'Metal2')
|
|
108
|
-
|
|
109
|
-
pdk.set('pdk', process, 'var', 'openroad', 'pin_layer_vertical', stackup, 'Metal2')
|
|
110
|
-
pdk.set('pdk', process, 'var', 'openroad', 'pin_layer_horizontal', stackup, 'Metal1')
|
|
111
|
-
elif max_layer == 3:
|
|
105
|
+
if max_layer == 3:
|
|
112
106
|
pdk.set('pdk', process, 'var', 'openroad', 'rclayer_signal', stackup, 'Metal2')
|
|
113
107
|
pdk.set('pdk', process, 'var', 'openroad', 'rclayer_clock', stackup, 'Metal2')
|
|
114
108
|
|
|
@@ -137,6 +131,47 @@ def setup():
|
|
|
137
131
|
pdk.set('pdk', process, 'pexmodel', 'openroad-openrcx', stackup, corner,
|
|
138
132
|
pdkdir + '/pex/openroad/' + base_name + '.rules')
|
|
139
133
|
|
|
134
|
+
# DRC
|
|
135
|
+
metal_level, _, metal_top = stackup.split('_')
|
|
136
|
+
drcs = {
|
|
137
|
+
"drc": pdkdir + '/setup/klayout/drc/gf180mcu.drc',
|
|
138
|
+
"drc_feol": pdkdir + '/setup/klayout/drc/gf180mcu.drc',
|
|
139
|
+
"drc_beol": pdkdir + '/setup/klayout/drc/gf180mcu.drc',
|
|
140
|
+
"antenna": pdkdir + '/setup/klayout/drc/gf180mcu_antenna.drc',
|
|
141
|
+
"density": pdkdir + '/setup/klayout/drc/gf180mcu_density.drc'
|
|
142
|
+
}
|
|
143
|
+
for drc, runset in drcs.items():
|
|
144
|
+
pdk.set('pdk', process, 'drc', 'runset', 'klayout', stackup, drc, runset)
|
|
145
|
+
|
|
146
|
+
key = f'drc_params:{drc}'
|
|
147
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'input=<input>')
|
|
148
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'topcell=<topcell>')
|
|
149
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'report=<report>')
|
|
150
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'thr=<threads>')
|
|
151
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'run_mode=flat')
|
|
152
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'offgrid=true')
|
|
153
|
+
|
|
154
|
+
if drc in ('drc', 'drc_feol', 'drc_beol'):
|
|
155
|
+
feol = 'true'
|
|
156
|
+
beol = 'true'
|
|
157
|
+
if drc == 'drc_feol':
|
|
158
|
+
beol = 'false'
|
|
159
|
+
if drc == 'drc_beol':
|
|
160
|
+
feol = 'false'
|
|
161
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key,
|
|
162
|
+
f'feol={feol}')
|
|
163
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key,
|
|
164
|
+
f'beol={beol}')
|
|
165
|
+
|
|
166
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key,
|
|
167
|
+
f'metal_top={metal_top}')
|
|
168
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key,
|
|
169
|
+
f'metal_level={metal_level}')
|
|
170
|
+
if max_layer == 3:
|
|
171
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'mim_option=A')
|
|
172
|
+
elif max_layer == 4 or max_layer == 5:
|
|
173
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'mim_option=B')
|
|
174
|
+
|
|
140
175
|
pdk.add('pdk', process, 'var', 'klayout', 'hide_layers', stackup, 'Dualgate')
|
|
141
176
|
pdk.add('pdk', process, 'var', 'klayout', 'hide_layers', stackup, 'V5_XTOR')
|
|
142
177
|
pdk.add('pdk', process, 'var', 'klayout', 'hide_layers', stackup, 'PR_bndry')
|
|
@@ -146,6 +181,6 @@ def setup():
|
|
|
146
181
|
|
|
147
182
|
#########################
|
|
148
183
|
if __name__ == "__main__":
|
|
149
|
-
pdk = setup(
|
|
184
|
+
pdk = setup()
|
|
150
185
|
pdk.write_manifest(f'{pdk.top()}.json')
|
|
151
186
|
pdk.check_filepaths()
|
lambdapdk/gf180/libs/gf180mcu.py
CHANGED
lambdapdk/ihp130/__init__.py
CHANGED
|
@@ -4,7 +4,7 @@ import siliconcompiler
|
|
|
4
4
|
from lambdapdk import register_data_source
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
pdk_rev = '
|
|
7
|
+
pdk_rev = '035037f6312851414e4bb5daa5a9d18975c768b3'
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def register_ihp130_data_source(chip):
|
|
@@ -24,14 +24,14 @@ def setup():
|
|
|
24
24
|
IHP Open Source PDK project goal is to provide a fully open source Process Design Kit and
|
|
25
25
|
related data, which can be used to create manufacturable designs at IHP's facility.
|
|
26
26
|
|
|
27
|
-
SG13G2 is a high performance BiCMOS technology with a 0.13
|
|
27
|
+
SG13G2 is a high performance BiCMOS technology with a 0.13 um CMOS process.
|
|
28
28
|
It contains bipolar devices based on SiGe:C npn-HBT's with up to 350 GHz transition frequency
|
|
29
29
|
(fT) and 450 GHz oscillation frequency (fmax).
|
|
30
30
|
This process provides 2 gate oxides:
|
|
31
31
|
A thin gate oxide for the 1.2 V digital logic and a thick oxide for a 3.3 V supply voltage.
|
|
32
32
|
For both modules NMOS, PMOS and isolated NMOS transistors are offered.
|
|
33
33
|
Further passive components like poly silicon resistors and MIM capacitors are available.
|
|
34
|
-
The backend option offers 5 thin metal layers, two thick metal layers (2 and 3
|
|
34
|
+
The backend option offers 5 thin metal layers, two thick metal layers (2 and 3 um thick) and
|
|
35
35
|
a MIM layer.
|
|
36
36
|
|
|
37
37
|
Sources:
|
|
@@ -118,6 +118,19 @@ def setup():
|
|
|
118
118
|
pdk.set('pdk', process, 'pexmodel', 'openroad-openrcx', stackup, corner,
|
|
119
119
|
lpdkdir + '/pex/openroad/' + corner + '.rules', package='lambdapdk')
|
|
120
120
|
|
|
121
|
+
# DRC
|
|
122
|
+
drcs = {
|
|
123
|
+
"maximal": 'ihp-sg13g2/libs.tech/klayout/tech/drc/sg13g2_maximal.lydrc',
|
|
124
|
+
"minimal": 'ihp-sg13g2/libs.tech/klayout/tech/drc/sg13g2_minimal.lydrc'
|
|
125
|
+
}
|
|
126
|
+
for drc, runset in drcs.items():
|
|
127
|
+
pdk.set('pdk', process, 'drc', 'runset', 'klayout', stackup, drc, runset)
|
|
128
|
+
|
|
129
|
+
key = f'drc_params:{drc}'
|
|
130
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'in_gds=<input>')
|
|
131
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'cell=<topcell>')
|
|
132
|
+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'report_file=<report>')
|
|
133
|
+
|
|
121
134
|
# Documentation
|
|
122
135
|
pdk.set('pdk', process, 'doc', 'overview',
|
|
123
136
|
'ihp-sg13g2/libs.doc/doc/SG13G2_os_process_spec.pdf')
|
|
@@ -129,5 +142,6 @@ def setup():
|
|
|
129
142
|
|
|
130
143
|
#########################
|
|
131
144
|
if __name__ == "__main__":
|
|
132
|
-
pdk = setup(
|
|
145
|
+
pdk = setup()
|
|
133
146
|
pdk.write_manifest(f'{pdk.top()}.json')
|
|
147
|
+
pdk.check_filepaths()
|
|
@@ -70,7 +70,9 @@ def setup():
|
|
|
70
70
|
|
|
71
71
|
# filler
|
|
72
72
|
lib.add('asic', 'cells', 'filler', ["sg13g2_fill_1",
|
|
73
|
-
"sg13g2_fill_2"
|
|
73
|
+
"sg13g2_fill_2",
|
|
74
|
+
"sg13g2_fill_4",
|
|
75
|
+
"sg13g2_fill_8"])
|
|
74
76
|
|
|
75
77
|
# decap
|
|
76
78
|
lib.add('asic', 'cells', 'decap', ["sg13g2_decap_4",
|
|
@@ -97,6 +99,7 @@ def setup():
|
|
|
97
99
|
lib.set('option', 'var', 'openroad_pad_detail_place', '0')
|
|
98
100
|
lib.set('option', 'var', 'openroad_macro_place_halo', ['40', '40'])
|
|
99
101
|
lib.set('option', 'var', 'openroad_macro_place_channel', ['80', '80'])
|
|
102
|
+
lib.set('option', 'var', 'openroad_dpl_use_decap_fillers', False)
|
|
100
103
|
|
|
101
104
|
lib.set('option', 'file', 'openroad_tapcells', libdir + '/apr/openroad/tapcell.tcl',
|
|
102
105
|
package='lambdapdk')
|
|
@@ -131,5 +134,5 @@ def setup():
|
|
|
131
134
|
|
|
132
135
|
#########################
|
|
133
136
|
if __name__ == "__main__":
|
|
134
|
-
lib = setup(
|
|
137
|
+
lib = setup()
|
|
135
138
|
lib.write_manifest(f'{lib.top()}.json')
|
lambdapdk/sky130/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lambdapdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.36
|
|
4
4
|
Summary: Library of open source Process Design Kits
|
|
5
5
|
Author: Zero ASIC
|
|
6
6
|
License: Apache License
|
|
@@ -203,7 +203,7 @@ Provides-Extra: test
|
|
|
203
203
|
Requires-Dist: flake8 ==7.1.1 ; extra == 'test'
|
|
204
204
|
Requires-Dist: pytest ==8.3.3 ; extra == 'test'
|
|
205
205
|
Requires-Dist: pytest-timeout ==2.3.1 ; extra == 'test'
|
|
206
|
-
Requires-Dist: tclint ==0.4.
|
|
206
|
+
Requires-Dist: tclint ==0.4.2 ; extra == 'test'
|
|
207
207
|
Requires-Dist: lambdalib ==0.2.10 ; extra == 'test'
|
|
208
208
|
Requires-Dist: sc-leflib ==0.4.0 ; extra == 'test'
|
|
209
209
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
lambdapdk/__init__.py,sha256=YzM7xvtEuCHwtRdhQroeJO2mWZNgUZPvwDeRf1D5nf0,1649
|
|
2
|
+
lambdapdk/asap7/__init__.py,sha256=Tb3du7LEisL_YoXVzVZgy9NqC835F79a9zqlV0MwBO0,4571
|
|
3
|
+
lambdapdk/asap7/libs/asap7sc7p5t.py,sha256=mKymeYPmNTHgxfwyIShxUN5hO1iAzgx2MWoBbfPkChU,6159
|
|
4
|
+
lambdapdk/asap7/libs/fakeio7.py,sha256=t4OQ7uljg4jh14bf3o4wsnI5gNkLEVpMs1drispc7LE,978
|
|
5
|
+
lambdapdk/asap7/libs/fakeram7.py,sha256=thOHy0XyV2-pakoxrttGL3qU9C2OeL1-MVtlrSiTMu8,1112
|
|
6
|
+
lambdapdk/freepdk45/__init__.py,sha256=5lbmMi3tGM1mJoM1wOGG0GhjKaFc2Qi3x-tRO8kKSDs,3673
|
|
7
|
+
lambdapdk/freepdk45/libs/fakeram45.py,sha256=CqX9YTFLQFlmGn4IZDjEI1OXv43mg3aWdbVfMrBKNSU,1091
|
|
8
|
+
lambdapdk/freepdk45/libs/nangate45.py,sha256=z319EBburWngwe_WYMHfksiFvfgJ0h4zLCEeWkcHTVs,4592
|
|
9
|
+
lambdapdk/gf180/__init__.py,sha256=fbJ4z0kXBftIHAsgyqJmbpZfpWf9PWuxXgoQoG3IhQ0,7963
|
|
10
|
+
lambdapdk/gf180/libs/gf180io.py,sha256=6WgsALOaKWYG6RfNFz6sg36zmfZZFl2HnsDWOWYy1UM,2751
|
|
11
|
+
lambdapdk/gf180/libs/gf180mcu.py,sha256=NPwcviynLMXRlkvAdwNrp8sJxHzT78PE0Iwy-DNpgzA,6727
|
|
12
|
+
lambdapdk/gf180/libs/gf180sram.py,sha256=uNtf4JOaT6wlD7D6hN5XwCoIOPmAXkVxSJXQuqNdY6k,2140
|
|
13
|
+
lambdapdk/ihp130/__init__.py,sha256=dSXwH5rYOrJc9C3FTe9bxCJw9VZaK0fnRBMWaWT9NY8,5500
|
|
14
|
+
lambdapdk/ihp130/libs/sg13g2_sram.py,sha256=3D5MKweUeOpWTHmtESbt8AyddjAvcpw9SeSbz4cfFG4,1887
|
|
15
|
+
lambdapdk/ihp130/libs/sg13g2_stdcell.py,sha256=i92vJvo2bur2lL9YKtyrZ2kDP8QiqmbTqWnSQeSiKhE,5085
|
|
16
|
+
lambdapdk/sky130/__init__.py,sha256=PXJEa-siz7HStlvDTCI794evU8qbHl472gHckSrZFWc,4124
|
|
17
|
+
lambdapdk/sky130/libs/sky130io.py,sha256=wFmN9RC98f6OFM5E5acCUgPe35tVTKciJzIcUBlmumo,2029
|
|
18
|
+
lambdapdk/sky130/libs/sky130sc.py,sha256=wW6sAaPpuqqCDqUD2cdJZJXqQz6KRLz9xztQ-hLNaC8,9446
|
|
19
|
+
lambdapdk/sky130/libs/sky130sram.py,sha256=ILjAjbgDdvfiWqmjmj8mmHvU7YiYGZVHGO7jmyajnaY,1489
|
|
20
|
+
lambdapdk-0.1.36.dist-info/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
21
|
+
lambdapdk-0.1.36.dist-info/METADATA,sha256=QReOv697L6LXL0Vq6xgYh2D8XygEBFPqphqQOfcqrHY,13835
|
|
22
|
+
lambdapdk-0.1.36.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
23
|
+
lambdapdk-0.1.36.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
24
|
+
lambdapdk-0.1.36.dist-info/RECORD,,
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
lambdapdk/__init__.py,sha256=em4PlMopxu1pYMl_uYVi5GOGGgHzyObsLkHZSXm4gQk,1649
|
|
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/fakeio7.py,sha256=t4OQ7uljg4jh14bf3o4wsnI5gNkLEVpMs1drispc7LE,978
|
|
5
|
-
lambdapdk/asap7/libs/fakeram7.py,sha256=thOHy0XyV2-pakoxrttGL3qU9C2OeL1-MVtlrSiTMu8,1112
|
|
6
|
-
lambdapdk/freepdk45/__init__.py,sha256=nZMJX76uo9Kp-UvXDSu8GbqPZNKn13Bglu0ze6LvoVk,3702
|
|
7
|
-
lambdapdk/freepdk45/libs/fakeram45.py,sha256=CqX9YTFLQFlmGn4IZDjEI1OXv43mg3aWdbVfMrBKNSU,1091
|
|
8
|
-
lambdapdk/freepdk45/libs/nangate45.py,sha256=vUb8FH0iMdN97B7oAOZ3CGmVjJQNm2LlA_QwJXMx8Ls,4621
|
|
9
|
-
lambdapdk/gf180/__init__.py,sha256=ZNAGEehybrz3Z-2A93iHWRDT6cBlzF2mjsTd-QDq5Yg,6296
|
|
10
|
-
lambdapdk/gf180/libs/gf180io.py,sha256=6WgsALOaKWYG6RfNFz6sg36zmfZZFl2HnsDWOWYy1UM,2751
|
|
11
|
-
lambdapdk/gf180/libs/gf180mcu.py,sha256=lISVNBGLYuRbfNSIs0Vx-U3qp8ylA3WUULD9RrS8EfE,6756
|
|
12
|
-
lambdapdk/gf180/libs/gf180sram.py,sha256=uNtf4JOaT6wlD7D6hN5XwCoIOPmAXkVxSJXQuqNdY6k,2140
|
|
13
|
-
lambdapdk/ihp130/__init__.py,sha256=8dnUP_AZkBPMfHjIoD1e3_mSRH_sGoHlA6TOH1W7IbE,4908
|
|
14
|
-
lambdapdk/ihp130/libs/sg13g2_sram.py,sha256=3D5MKweUeOpWTHmtESbt8AyddjAvcpw9SeSbz4cfFG4,1887
|
|
15
|
-
lambdapdk/ihp130/libs/sg13g2_stdcell.py,sha256=4joYjceHE3xeEFlme4oHTkUJOxB4obPsUu2vj1BwZZM,4930
|
|
16
|
-
lambdapdk/sky130/__init__.py,sha256=Ah-3HXS54WyNTTUz9-SRrxoOAIf83QDPA-mlzgOIPVo,4153
|
|
17
|
-
lambdapdk/sky130/libs/sky130io.py,sha256=wFmN9RC98f6OFM5E5acCUgPe35tVTKciJzIcUBlmumo,2029
|
|
18
|
-
lambdapdk/sky130/libs/sky130sc.py,sha256=wW6sAaPpuqqCDqUD2cdJZJXqQz6KRLz9xztQ-hLNaC8,9446
|
|
19
|
-
lambdapdk/sky130/libs/sky130sram.py,sha256=ILjAjbgDdvfiWqmjmj8mmHvU7YiYGZVHGO7jmyajnaY,1489
|
|
20
|
-
lambdapdk-0.1.34.dist-info/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
21
|
-
lambdapdk-0.1.34.dist-info/METADATA,sha256=_8SjDRYO6OaJ76ILS9p5mG-WM-OhaB4a8dsMgmSBRbA,13835
|
|
22
|
-
lambdapdk-0.1.34.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
23
|
-
lambdapdk-0.1.34.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
24
|
-
lambdapdk-0.1.34.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|