lambdapdk 0.1.30__py3-none-any.whl → 0.1.32__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 +8 -6
- lambdapdk/ihp130/__init__.py +133 -0
- lambdapdk/ihp130/libs/sg13g2_sram.py +46 -0
- lambdapdk/ihp130/libs/sg13g2_stdcell.py +135 -0
- {lambdapdk-0.1.30.dist-info → lambdapdk-0.1.32.dist-info}/METADATA +5 -4
- {lambdapdk-0.1.30.dist-info → lambdapdk-0.1.32.dist-info}/RECORD +9 -6
- {lambdapdk-0.1.30.dist-info → lambdapdk-0.1.32.dist-info}/WHEEL +1 -1
- {lambdapdk-0.1.30.dist-info → lambdapdk-0.1.32.dist-info}/LICENSE +0 -0
- {lambdapdk-0.1.30.dist-info → lambdapdk-0.1.32.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.32"
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def register_data_source(chip):
|
|
@@ -20,10 +20,10 @@ def get_pdks():
|
|
|
20
20
|
Returns a list of pdk names in lambdapdk
|
|
21
21
|
'''
|
|
22
22
|
|
|
23
|
-
from lambdapdk import asap7, freepdk45, sky130, gf180
|
|
23
|
+
from lambdapdk import asap7, freepdk45, sky130, gf180, ihp130
|
|
24
24
|
|
|
25
25
|
all_pdks = []
|
|
26
|
-
for pdk_mod in [asap7, freepdk45, sky130, gf180]:
|
|
26
|
+
for pdk_mod in [asap7, freepdk45, sky130, gf180, ihp130]:
|
|
27
27
|
pdks = pdk_mod.setup()
|
|
28
28
|
if not isinstance(pdks, (list, tuple)):
|
|
29
29
|
pdks = [pdks]
|
|
@@ -38,17 +38,19 @@ def get_libs():
|
|
|
38
38
|
Returns a list of libraries names in lambdapdk
|
|
39
39
|
'''
|
|
40
40
|
|
|
41
|
-
from lambdapdk.asap7.libs import asap7sc7p5t, fakeram7
|
|
41
|
+
from lambdapdk.asap7.libs import asap7sc7p5t, fakeram7, fakeio7
|
|
42
42
|
from lambdapdk.freepdk45.libs import nangate45, fakeram45
|
|
43
43
|
from lambdapdk.sky130.libs import sky130sc, sky130io, sky130sram
|
|
44
44
|
from lambdapdk.gf180.libs import gf180mcu, gf180io, gf180sram
|
|
45
|
+
from lambdapdk.ihp130.libs import sg13g2_stdcell, sg13g2_sram
|
|
45
46
|
|
|
46
47
|
all_libs = []
|
|
47
48
|
for lib_mod in [
|
|
48
|
-
asap7sc7p5t, fakeram7,
|
|
49
|
+
asap7sc7p5t, fakeram7, fakeio7,
|
|
49
50
|
nangate45, fakeram45,
|
|
50
51
|
sky130sc, sky130io, sky130sram,
|
|
51
|
-
gf180mcu, gf180io, gf180sram
|
|
52
|
+
gf180mcu, gf180io, gf180sram,
|
|
53
|
+
sg13g2_stdcell, sg13g2_sram]:
|
|
52
54
|
libs = lib_mod.setup()
|
|
53
55
|
if not isinstance(libs, (list, tuple)):
|
|
54
56
|
libs = [libs]
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
|
|
2
|
+
import os
|
|
3
|
+
import siliconcompiler
|
|
4
|
+
from lambdapdk import register_data_source
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
pdk_rev = '89c8038db331ccfdf6be488dfc4670cb62ba3c42'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def register_ihp130_data_source(chip):
|
|
11
|
+
chip.register_source(
|
|
12
|
+
'ihp130',
|
|
13
|
+
path='git+https://github.com/IHP-GmbH/IHP-Open-PDK',
|
|
14
|
+
ref=pdk_rev)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
####################################################
|
|
18
|
+
# PDK Setup
|
|
19
|
+
####################################################
|
|
20
|
+
def setup():
|
|
21
|
+
'''
|
|
22
|
+
130nm BiCMOS Open Source PDK, dedicated for Analog/Digital, Mixed Signal and RF Design
|
|
23
|
+
|
|
24
|
+
IHP Open Source PDK project goal is to provide a fully open source Process Design Kit and
|
|
25
|
+
related data, which can be used to create manufacturable designs at IHP's facility.
|
|
26
|
+
|
|
27
|
+
SG13G2 is a high performance BiCMOS technology with a 0.13 μm CMOS process.
|
|
28
|
+
It contains bipolar devices based on SiGe:C npn-HBT's with up to 350 GHz transition frequency
|
|
29
|
+
(fT) and 450 GHz oscillation frequency (fmax).
|
|
30
|
+
This process provides 2 gate oxides:
|
|
31
|
+
A thin gate oxide for the 1.2 V digital logic and a thick oxide for a 3.3 V supply voltage.
|
|
32
|
+
For both modules NMOS, PMOS and isolated NMOS transistors are offered.
|
|
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 μm thick) and
|
|
35
|
+
a MIM layer.
|
|
36
|
+
|
|
37
|
+
Sources:
|
|
38
|
+
|
|
39
|
+
* https://github.com/IHP-GmbH/IHP-Open-PDK
|
|
40
|
+
'''
|
|
41
|
+
|
|
42
|
+
foundry = 'Leibniz-Institut für innovative Mikroelektronik'
|
|
43
|
+
process = 'ihp130'
|
|
44
|
+
stackup = '5M2TL'
|
|
45
|
+
|
|
46
|
+
node = 130
|
|
47
|
+
# TODO: dummy numbers, only matter for cost estimation
|
|
48
|
+
wafersize = 300
|
|
49
|
+
hscribe = 0.1
|
|
50
|
+
vscribe = 0.1
|
|
51
|
+
edgemargin = 2
|
|
52
|
+
|
|
53
|
+
lpdkdir = os.path.join('lambdapdk', 'ihp130', 'base')
|
|
54
|
+
|
|
55
|
+
pdk = siliconcompiler.PDK(process, package='ihp130')
|
|
56
|
+
register_ihp130_data_source(pdk)
|
|
57
|
+
register_data_source(pdk)
|
|
58
|
+
|
|
59
|
+
# process name
|
|
60
|
+
pdk.set('pdk', process, 'foundry', foundry)
|
|
61
|
+
pdk.set('pdk', process, 'node', node)
|
|
62
|
+
pdk.set('pdk', process, 'version', pdk_rev)
|
|
63
|
+
pdk.set('pdk', process, 'stackup', stackup)
|
|
64
|
+
pdk.set('pdk', process, 'wafersize', wafersize)
|
|
65
|
+
pdk.set('pdk', process, 'edgemargin', edgemargin)
|
|
66
|
+
pdk.set('pdk', process, 'scribe', (hscribe, vscribe))
|
|
67
|
+
|
|
68
|
+
# APR Setup
|
|
69
|
+
# TODO: remove libtype
|
|
70
|
+
for tool in ('openroad', 'klayout', 'magic'):
|
|
71
|
+
# Add unithd for backwards compatibility
|
|
72
|
+
pdk.set('pdk', process, 'aprtech', tool, stackup, '9t', 'lef',
|
|
73
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/lef/sg13g2_tech.lef')
|
|
74
|
+
|
|
75
|
+
pdk.set('pdk', process, 'minlayer', stackup, 'Metal2')
|
|
76
|
+
pdk.set('pdk', process, 'maxlayer', stackup, 'Metal5')
|
|
77
|
+
|
|
78
|
+
# DRC Runsets
|
|
79
|
+
# pdk.set('pdk', process, 'drc', 'runset', 'magic', stackup, 'basic',
|
|
80
|
+
# pdkdir + '/setup/magic/sky130A.tech')
|
|
81
|
+
|
|
82
|
+
# LVS Runsets
|
|
83
|
+
# pdk.set('pdk', process, 'lvs', 'runset', 'netgen', stackup, 'basic',
|
|
84
|
+
# pdkdir + '/setup/netgen/lvs_setup.tcl')
|
|
85
|
+
|
|
86
|
+
# Layer map and display file
|
|
87
|
+
pdk.set('pdk', process, 'layermap', 'klayout', 'def', 'klayout', stackup,
|
|
88
|
+
'ihp-sg13g2/libs.tech/klayout/tech/sg13g2.lyt')
|
|
89
|
+
pdk.set('pdk', process, 'display', 'klayout', stackup,
|
|
90
|
+
'ihp-sg13g2/libs.tech/klayout/tech/sg13g2.lyp')
|
|
91
|
+
|
|
92
|
+
pdk.set('pdk', process, 'layermap', 'klayout', 'def', 'gds', stackup,
|
|
93
|
+
'ihp-sg13g2/libs.tech/klayout/tech/sg13g2.map')
|
|
94
|
+
|
|
95
|
+
# Openroad global routing grid derating
|
|
96
|
+
openroad_layer_adjustments = {
|
|
97
|
+
'Metal1': 0.05,
|
|
98
|
+
'Metal2': 0.05,
|
|
99
|
+
'Metal3': 0.05,
|
|
100
|
+
'Metal4': 0.05,
|
|
101
|
+
'Metal5': 0.05,
|
|
102
|
+
'TopMetal1': 0.00,
|
|
103
|
+
'TopMetal2': 0.00,
|
|
104
|
+
}
|
|
105
|
+
for layer, adj in openroad_layer_adjustments.items():
|
|
106
|
+
pdk.set('pdk', process, 'var', 'openroad', f'{layer}_adjustment', stackup, str(adj))
|
|
107
|
+
|
|
108
|
+
pdk.set('pdk', process, 'var', 'openroad', 'rclayer_signal', stackup, 'Metal2')
|
|
109
|
+
pdk.set('pdk', process, 'var', 'openroad', 'rclayer_clock', stackup, 'Metal5')
|
|
110
|
+
|
|
111
|
+
pdk.set('pdk', process, 'var', 'openroad', 'pin_layer_vertical', stackup, 'Metal3')
|
|
112
|
+
pdk.set('pdk', process, 'var', 'openroad', 'pin_layer_horizontal', stackup, 'Metal2')
|
|
113
|
+
|
|
114
|
+
# PEX
|
|
115
|
+
for corner in ["typical"]:
|
|
116
|
+
pdk.set('pdk', process, 'pexmodel', 'openroad', stackup, corner,
|
|
117
|
+
lpdkdir + '/pex/openroad/' + corner + '.tcl', package='lambdapdk')
|
|
118
|
+
pdk.set('pdk', process, 'pexmodel', 'openroad-openrcx', stackup, corner,
|
|
119
|
+
lpdkdir + '/pex/openroad/' + corner + '.rules', package='lambdapdk')
|
|
120
|
+
|
|
121
|
+
# Documentation
|
|
122
|
+
pdk.set('pdk', process, 'doc', 'overview',
|
|
123
|
+
'ihp-sg13g2/libs.doc/doc/SG13G2_os_process_spec.pdf')
|
|
124
|
+
pdk.set('pdk', process, 'doc', 'drc_rules',
|
|
125
|
+
'ihp-sg13g2/libs.doc/doc/SG13G2_os_layout_rules.pdf')
|
|
126
|
+
|
|
127
|
+
return pdk
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
#########################
|
|
131
|
+
if __name__ == "__main__":
|
|
132
|
+
pdk = setup(siliconcompiler.Chip('<pdk>'))
|
|
133
|
+
pdk.write_manifest(f'{pdk.top()}.json')
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from siliconcompiler import Chip, Library
|
|
2
|
+
from lambdapdk import register_data_source
|
|
3
|
+
from lambdapdk.ihp130 import register_ihp130_data_source
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def setup():
|
|
7
|
+
libs = []
|
|
8
|
+
stackup = '5M2TL'
|
|
9
|
+
|
|
10
|
+
for config in ('1024x64', '2048x64', '256x48', '256x64', '512x64', '64x64'):
|
|
11
|
+
mem_name = f'RM_IHPSG13_1P_{config}_c2_bm_bist'
|
|
12
|
+
lib = Library(mem_name, package='ihp130')
|
|
13
|
+
register_ihp130_data_source(lib)
|
|
14
|
+
register_data_source(lib)
|
|
15
|
+
path_base = 'ihp-sg13g2/libs.ref/sg13g2_sram'
|
|
16
|
+
lib.add('output', stackup, 'lef', f'{path_base}/lef/{mem_name}.lef')
|
|
17
|
+
lib.add('output', stackup, 'gds', f'{path_base}/gds/{mem_name}.gds')
|
|
18
|
+
lib.add('output', stackup, 'cdl', f'{path_base}/spice/{mem_name}.cdl')
|
|
19
|
+
|
|
20
|
+
lib.add('output', 'typ', 'nldm', f'{path_base}/lib/{mem_name}_typ_1p20V_25C.lib')
|
|
21
|
+
lib.add('output', 'slow', 'nldm', f'{path_base}/lib/{mem_name}_slow_1p08V_125C.lib')
|
|
22
|
+
lib.add('output', 'fast', 'nldm', f'{path_base}/lib/{mem_name}_fast_1p32V_m55C.lib')
|
|
23
|
+
|
|
24
|
+
lib.add('output', 'rtl', 'verilog', f'{path_base}/verilog/{mem_name}.v')
|
|
25
|
+
lib.add('output', 'rtl', 'verilog',
|
|
26
|
+
f'{path_base}/verilog/RM_IHPSG13_1P_core_behavioral_bm_bist.v')
|
|
27
|
+
|
|
28
|
+
lib.set('option', 'file', 'openroad_pdngen',
|
|
29
|
+
'lambdapdk/ihp130/libs/sg13g2_sram/pdngen.tcl',
|
|
30
|
+
package='lambdapdk')
|
|
31
|
+
|
|
32
|
+
libs.append(lib)
|
|
33
|
+
|
|
34
|
+
lambda_lib = Library('lambdalib_sg13g2_sram', package='lambdapdk')
|
|
35
|
+
register_data_source(lambda_lib)
|
|
36
|
+
lambda_lib.add('option', 'ydir', 'lambdapdk/ihp130/libs/sg13g2_sram/lambda')
|
|
37
|
+
|
|
38
|
+
libs.append(lambda_lib)
|
|
39
|
+
|
|
40
|
+
return libs
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
#########################
|
|
44
|
+
if __name__ == "__main__":
|
|
45
|
+
for lib in setup(Chip('<lib>')):
|
|
46
|
+
lib.write_manifest(f'{lib.top()}.json')
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import siliconcompiler
|
|
3
|
+
from lambdapdk import register_data_source
|
|
4
|
+
from lambdapdk.ihp130 import register_ihp130_data_source
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def setup():
|
|
8
|
+
'''
|
|
9
|
+
Nangate open standard cell library for FreePDK45.
|
|
10
|
+
'''
|
|
11
|
+
libname = 'sg13g2_stdcell'
|
|
12
|
+
process = 'ihp130'
|
|
13
|
+
stackup = '5M2TL'
|
|
14
|
+
libtype = '9t'
|
|
15
|
+
version = 'r1p0'
|
|
16
|
+
|
|
17
|
+
lib = siliconcompiler.Library(libname, package='ihp130')
|
|
18
|
+
register_ihp130_data_source(lib)
|
|
19
|
+
register_data_source(lib)
|
|
20
|
+
|
|
21
|
+
libdir = os.path.join('lambdapdk', process, 'libs', libname)
|
|
22
|
+
|
|
23
|
+
# version
|
|
24
|
+
lib.set('package', 'version', version)
|
|
25
|
+
|
|
26
|
+
# list of stackups supported
|
|
27
|
+
lib.set('option', 'stackup', stackup)
|
|
28
|
+
|
|
29
|
+
# list of pdks supported
|
|
30
|
+
lib.set('option', 'pdk', process)
|
|
31
|
+
|
|
32
|
+
# footprint/type/sites
|
|
33
|
+
lib.set('asic', 'libarch', libtype)
|
|
34
|
+
lib.set('asic', 'site', libtype, 'CoreSite')
|
|
35
|
+
|
|
36
|
+
# timing
|
|
37
|
+
lib.add('output', 'typ', 'nldm',
|
|
38
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/lib/sg13g2_stdcell_typ_1p20V_25C.lib')
|
|
39
|
+
lib.add('output', 'fast', 'nldm',
|
|
40
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/lib/sg13g2_stdcell_fast_1p32V_m40C.lib')
|
|
41
|
+
lib.add('output', 'slow', 'nldm',
|
|
42
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/lib/sg13g2_stdcell_slow_1p08V_125C.lib')
|
|
43
|
+
|
|
44
|
+
# lef
|
|
45
|
+
lib.add('output', stackup, 'lef',
|
|
46
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/lef/sg13g2_stdcell.lef')
|
|
47
|
+
|
|
48
|
+
# gds
|
|
49
|
+
lib.add('output', stackup, 'gds',
|
|
50
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/gds/sg13g2_stdcell.gds')
|
|
51
|
+
|
|
52
|
+
# cdl
|
|
53
|
+
lib.add('output', stackup, 'cdl',
|
|
54
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/cdl/sg13g2_stdcell.cdl')
|
|
55
|
+
|
|
56
|
+
lib.add('output', 'rtl', 'verilog',
|
|
57
|
+
'ihp-sg13g2/libs.ref/sg13g2_stdcell/verilog/sg13g2_stdcell.v')
|
|
58
|
+
|
|
59
|
+
# clock buffers
|
|
60
|
+
lib.add('asic', 'cells', 'clkbuf', ["sg13g2_buf_2",
|
|
61
|
+
"sg13g2_buf_4"])
|
|
62
|
+
|
|
63
|
+
# tie cells
|
|
64
|
+
lib.add('asic', 'cells', 'tie', ["LOGIC1_X1",
|
|
65
|
+
"LOGIC0_X1"])
|
|
66
|
+
|
|
67
|
+
# hold cells
|
|
68
|
+
lib.add('asic', 'cells', 'hold', ["sg13g2_buf_1",
|
|
69
|
+
"sg13g2_buf_4"])
|
|
70
|
+
|
|
71
|
+
# filler
|
|
72
|
+
lib.add('asic', 'cells', 'filler', ["sg13g2_fill_1",
|
|
73
|
+
"sg13g2_fill_2"])
|
|
74
|
+
|
|
75
|
+
# decap
|
|
76
|
+
lib.add('asic', 'cells', 'decap', ["sg13g2_decap_4",
|
|
77
|
+
"sg13g2_decap_8"])
|
|
78
|
+
|
|
79
|
+
# antenna
|
|
80
|
+
lib.add('asic', 'cells', 'antenna', ["sg13g2_antennanp"])
|
|
81
|
+
|
|
82
|
+
# Stupid small cells
|
|
83
|
+
lib.add('asic', 'cells', 'dontuse', ["sg13g2_antennanp",
|
|
84
|
+
"sg13g2_lgcp_1",
|
|
85
|
+
"sg13g2_sighold",
|
|
86
|
+
"sg13g2_slgcp_1",
|
|
87
|
+
"sg13g2_dfrbp_2"])
|
|
88
|
+
|
|
89
|
+
# Techmap
|
|
90
|
+
lib.add('option', 'file', 'yosys_techmap',
|
|
91
|
+
libdir + '/techmap/yosys/cells_latch.v',
|
|
92
|
+
package='lambdapdk')
|
|
93
|
+
|
|
94
|
+
# Defaults for OpenROAD tool variables
|
|
95
|
+
lib.set('option', 'var', 'openroad_place_density', '0.65')
|
|
96
|
+
lib.set('option', 'var', 'openroad_pad_global_place', '0')
|
|
97
|
+
lib.set('option', 'var', 'openroad_pad_detail_place', '0')
|
|
98
|
+
lib.set('option', 'var', 'openroad_macro_place_halo', ['40', '40'])
|
|
99
|
+
lib.set('option', 'var', 'openroad_macro_place_channel', ['80', '80'])
|
|
100
|
+
|
|
101
|
+
lib.set('option', 'file', 'openroad_tapcells', libdir + '/apr/openroad/tapcell.tcl',
|
|
102
|
+
package='lambdapdk')
|
|
103
|
+
lib.set('option', 'file', 'openroad_pdngen', libdir + '/apr/openroad/pdngen.tcl',
|
|
104
|
+
package='lambdapdk')
|
|
105
|
+
lib.set('option', 'file', 'openroad_global_connect',
|
|
106
|
+
libdir + '/apr/openroad/global_connect.tcl',
|
|
107
|
+
package='lambdapdk')
|
|
108
|
+
|
|
109
|
+
lib.set('option', 'var', 'yosys_abc_clock_multiplier', "1000") # convert from ns -> ps
|
|
110
|
+
lib.set('option', 'var', 'yosys_abc_constraint_load', "6.0fF") # BUF_X1 = 0.974659 x 4
|
|
111
|
+
lib.set('option', 'var', 'yosys_driver_cell', "sg13g2_buf_4")
|
|
112
|
+
lib.set('option', 'var', 'yosys_buffer_cell', "sg13g2_buf_4")
|
|
113
|
+
lib.set('option', 'var', 'yosys_buffer_input', "A")
|
|
114
|
+
lib.set('option', 'var', 'yosys_buffer_output', "X")
|
|
115
|
+
for tool in ('yosys', 'openroad'):
|
|
116
|
+
lib.set('option', 'var', f'{tool}_tiehigh_cell', "sg13g2_tiehi")
|
|
117
|
+
lib.set('option', 'var', f'{tool}_tiehigh_port', "L_HI")
|
|
118
|
+
lib.set('option', 'var', f'{tool}_tielow_cell', "sg13g2_tielo")
|
|
119
|
+
lib.set('option', 'var', f'{tool}_tielow_port', "L_LO")
|
|
120
|
+
|
|
121
|
+
libs = [lib]
|
|
122
|
+
for libtype in ('stdlib', 'auxlib'):
|
|
123
|
+
lambda_lib = siliconcompiler.Library(f'lambdalib_{libtype}_{libname}',
|
|
124
|
+
package='lambdapdk')
|
|
125
|
+
register_data_source(lambda_lib)
|
|
126
|
+
lambda_lib.add('option', 'ydir', libdir + f'/lambda/{libtype}')
|
|
127
|
+
libs.append(lambda_lib)
|
|
128
|
+
|
|
129
|
+
return libs
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
#########################
|
|
133
|
+
if __name__ == "__main__":
|
|
134
|
+
lib = setup(siliconcompiler.Chip('<lib>'))
|
|
135
|
+
lib.write_manifest(f'{lib.top()}.json')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lambdapdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.32
|
|
4
4
|
Summary: Library of open source Process Design Kits
|
|
5
5
|
Author: Zero ASIC
|
|
6
6
|
License: Apache License
|
|
@@ -201,10 +201,10 @@ License-File: LICENSE
|
|
|
201
201
|
Requires-Dist: siliconcompiler >=0.27.0
|
|
202
202
|
Provides-Extra: test
|
|
203
203
|
Requires-Dist: flake8 ==7.1.1 ; extra == 'test'
|
|
204
|
-
Requires-Dist: pytest ==8.3.
|
|
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.
|
|
207
|
-
Requires-Dist: lambdalib ==0.2.
|
|
206
|
+
Requires-Dist: tclint ==0.4.0 ; extra == 'test'
|
|
207
|
+
Requires-Dist: lambdalib ==0.2.10 ; extra == 'test'
|
|
208
208
|
Requires-Dist: sc-leflib ==0.4.0 ; extra == 'test'
|
|
209
209
|
|
|
210
210
|
# Lambdapdk Introduction
|
|
@@ -220,6 +220,7 @@ Supported PDKs:
|
|
|
220
220
|
* [FreePDK45](lambdapdk/freepdk45/base/README.md)
|
|
221
221
|
* [Skywater130](lambdapdk/sky130/base/README.md)
|
|
222
222
|
* [Global Foundries 180](lambdapdk/gf180/README.md)
|
|
223
|
+
* [IHP 180](https://github.com/IHP-GmbH/IHP-Open-PDK)
|
|
223
224
|
|
|
224
225
|
# License
|
|
225
226
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
lambdapdk/__init__.py,sha256=
|
|
1
|
+
lambdapdk/__init__.py,sha256=V_r1oyk5w7uasGZtKO2qOQbivrI_cPfLn9672-BH2lc,1649
|
|
2
2
|
lambdapdk/asap7/__init__.py,sha256=hDK_dy0NeMbYWQqHGfR_g3su0eOL5rSZ2wDi7S-p-W0,4600
|
|
3
3
|
lambdapdk/asap7/libs/asap7sc7p5t.py,sha256=8i7g9yxahD_Xj9cQQxFCzH3QtQ9qvgLsOQiUbgCJ-8U,6159
|
|
4
4
|
lambdapdk/asap7/libs/fakeram7.py,sha256=thOHy0XyV2-pakoxrttGL3qU9C2OeL1-MVtlrSiTMu8,1112
|
|
@@ -9,12 +9,15 @@ lambdapdk/gf180/__init__.py,sha256=dn6T92KmoFbsR3YrjIV1sEorYuGe-1DPtye6bCDrf5g,6
|
|
|
9
9
|
lambdapdk/gf180/libs/gf180io.py,sha256=6WgsALOaKWYG6RfNFz6sg36zmfZZFl2HnsDWOWYy1UM,2751
|
|
10
10
|
lambdapdk/gf180/libs/gf180mcu.py,sha256=lISVNBGLYuRbfNSIs0Vx-U3qp8ylA3WUULD9RrS8EfE,6756
|
|
11
11
|
lambdapdk/gf180/libs/gf180sram.py,sha256=uNtf4JOaT6wlD7D6hN5XwCoIOPmAXkVxSJXQuqNdY6k,2140
|
|
12
|
+
lambdapdk/ihp130/__init__.py,sha256=ehzKHYig80HDtQwmMc_D_X9dm8VKzlKI_ivt4_L6OGQ,4908
|
|
13
|
+
lambdapdk/ihp130/libs/sg13g2_sram.py,sha256=yyE458QTfAV3IqUoBzcnp6FTp0-h0TeEtHxYGhdG08s,1783
|
|
14
|
+
lambdapdk/ihp130/libs/sg13g2_stdcell.py,sha256=4joYjceHE3xeEFlme4oHTkUJOxB4obPsUu2vj1BwZZM,4930
|
|
12
15
|
lambdapdk/sky130/__init__.py,sha256=LzqWdfoMHuzCfJpNyPw3QPWjf8qy4zZgdG8Pw3FKqZQ,4148
|
|
13
16
|
lambdapdk/sky130/libs/sky130io.py,sha256=wFmN9RC98f6OFM5E5acCUgPe35tVTKciJzIcUBlmumo,2029
|
|
14
17
|
lambdapdk/sky130/libs/sky130sc.py,sha256=wW6sAaPpuqqCDqUD2cdJZJXqQz6KRLz9xztQ-hLNaC8,9446
|
|
15
18
|
lambdapdk/sky130/libs/sky130sram.py,sha256=ILjAjbgDdvfiWqmjmj8mmHvU7YiYGZVHGO7jmyajnaY,1489
|
|
16
|
-
lambdapdk-0.1.
|
|
17
|
-
lambdapdk-0.1.
|
|
18
|
-
lambdapdk-0.1.
|
|
19
|
-
lambdapdk-0.1.
|
|
20
|
-
lambdapdk-0.1.
|
|
19
|
+
lambdapdk-0.1.32.dist-info/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
20
|
+
lambdapdk-0.1.32.dist-info/METADATA,sha256=ktH3j6yILPFqBv0WD664FMP_dY2WlWHyLtAGSvzkv-E,13835
|
|
21
|
+
lambdapdk-0.1.32.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
22
|
+
lambdapdk-0.1.32.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
23
|
+
lambdapdk-0.1.32.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|