lambdapdk 0.1.35__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 +16 -2
- lambdapdk/ihp130/libs/sg13g2_stdcell.py +5 -2
- lambdapdk/sky130/__init__.py +1 -1
- {lambdapdk-0.1.35.dist-info → lambdapdk-0.1.36.dist-info}/METADATA +2 -2
- lambdapdk-0.1.36.dist-info/RECORD +24 -0
- {lambdapdk-0.1.35.dist-info → lambdapdk-0.1.36.dist-info}/WHEEL +1 -1
- lambdapdk-0.1.35.dist-info/RECORD +0 -24
- {lambdapdk-0.1.35.dist-info → lambdapdk-0.1.36.dist-info}/LICENSE +0 -0
- {lambdapdk-0.1.35.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):
|
|
@@ -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=wJPVzGZC7F4SjmYRMoVUVxXHEygYSMlmJCPOLeie7ag,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=w63tKJ-Uivit0W8XfrEEYsrIrC0lUWBQvbVU-KP6oE4,4906
|
|
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.35.dist-info/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
21
|
-
lambdapdk-0.1.35.dist-info/METADATA,sha256=hCHepvuXPYlf2Dm6-TDZyvyO0cme816x9dpWXocfI38,13835
|
|
22
|
-
lambdapdk-0.1.35.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
23
|
-
lambdapdk-0.1.35.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
24
|
-
lambdapdk-0.1.35.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|