lambdapdk 0.1.56__py3-none-any.whl → 0.2.0rc2__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 +262 -113
- lambdapdk/asap7/__init__.py +73 -96
- lambdapdk/asap7/libs/asap7sc7p5t.py +120 -159
- lambdapdk/asap7/libs/fakeio7.py +17 -26
- lambdapdk/asap7/libs/fakekit7.py +14 -19
- lambdapdk/asap7/libs/fakeram7.py +230 -33
- lambdapdk/freepdk45/__init__.py +59 -89
- lambdapdk/freepdk45/libs/fakeram45.py +72 -27
- lambdapdk/freepdk45/libs/nangate45.py +86 -125
- lambdapdk/gf180/__init__.py +216 -131
- lambdapdk/gf180/libs/gf180io.py +103 -68
- lambdapdk/gf180/libs/gf180mcu.py +184 -138
- lambdapdk/gf180/libs/gf180sram.py +121 -63
- lambdapdk/ihp130/__init__.py +84 -119
- lambdapdk/ihp130/libs/sg13g2_io.py +54 -41
- lambdapdk/ihp130/libs/sg13g2_sram.py +94 -52
- lambdapdk/ihp130/libs/sg13g2_stdcell.py +113 -135
- lambdapdk/interposer/__init__.py +110 -74
- lambdapdk/interposer/libs/bumps.py +41 -26
- lambdapdk/sky130/__init__.py +70 -92
- lambdapdk/sky130/libs/sky130io.py +44 -48
- lambdapdk/sky130/libs/sky130sc.py +170 -206
- lambdapdk/sky130/libs/sky130sram.py +44 -34
- {lambdapdk-0.1.56.dist-info → lambdapdk-0.2.0rc2.dist-info}/METADATA +3 -3
- lambdapdk-0.2.0rc2.dist-info/RECORD +30 -0
- lambdapdk-0.2.0rc2.dist-info/entry_points.txt +2 -0
- lambdapdk-0.1.56.dist-info/RECORD +0 -30
- lambdapdk-0.1.56.dist-info/entry_points.txt +0 -4
- {lambdapdk-0.1.56.dist-info → lambdapdk-0.2.0rc2.dist-info}/WHEEL +0 -0
- {lambdapdk-0.1.56.dist-info → lambdapdk-0.2.0rc2.dist-info}/licenses/LICENSE +0 -0
- {lambdapdk-0.1.56.dist-info → lambdapdk-0.2.0rc2.dist-info}/top_level.txt +0 -0
|
@@ -1,211 +1,175 @@
|
|
|
1
|
-
import
|
|
2
|
-
import siliconcompiler
|
|
3
|
-
from lambdapdk import register_data_source
|
|
1
|
+
from pathlib import Path
|
|
4
2
|
|
|
3
|
+
from lambdapdk import LambdaLibrary
|
|
4
|
+
from lambdapdk.sky130 import Sky130PDK
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
class _Sky130_SCLibrary(LambdaLibrary):
|
|
7
8
|
'''
|
|
8
9
|
Skywater130 standard cell library.
|
|
9
10
|
'''
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
'
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
'
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
'
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
lib.set('option', 'var', 'yosys_buffer_input', "A")
|
|
176
|
-
lib.set('option', 'var', 'yosys_buffer_output', "X")
|
|
177
|
-
for tool in ('yosys', 'openroad'):
|
|
178
|
-
lib.set('option', 'var', f'{tool}_tiehigh_cell', f"sky130_fd_sc_{libtype}__conb_1")
|
|
179
|
-
lib.set('option', 'var', f'{tool}_tiehigh_port', "HI")
|
|
180
|
-
lib.set('option', 'var', f'{tool}_tielow_cell', f"sky130_fd_sc_{libtype}__conb_1")
|
|
181
|
-
lib.set('option', 'var', f'{tool}_tielow_port', "LO")
|
|
182
|
-
|
|
183
|
-
# Bambu setup
|
|
184
|
-
lib.set('option', 'var', 'bambu_clock_multiplier', "1") # convert from ns -> ns
|
|
185
|
-
|
|
186
|
-
libs.append(lib)
|
|
187
|
-
|
|
188
|
-
std_lambda_lib = siliconcompiler.Library(f'lambdalib_stdlib_{libname}',
|
|
189
|
-
package='lambdapdk')
|
|
190
|
-
register_data_source(std_lambda_lib)
|
|
191
|
-
std_lambda_lib.add('option', 'ydir', libdir + '/lambda/stdlib')
|
|
192
|
-
std_lambda_lib.use(lib)
|
|
193
|
-
std_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
194
|
-
libs.append(std_lambda_lib)
|
|
195
|
-
aux_lambda_lib = siliconcompiler.Library(f'lambdalib_auxlib_{libname}',
|
|
196
|
-
package='lambdapdk')
|
|
197
|
-
register_data_source(aux_lambda_lib)
|
|
198
|
-
aux_lambda_lib.add('option', 'ydir', libdir + '/lambda/auxlib')
|
|
199
|
-
aux_lambda_lib.use(std_lambda_lib)
|
|
200
|
-
aux_lambda_lib.use(lib)
|
|
201
|
-
aux_lambda_lib.set('asic', 'logiclib', lib.design)
|
|
202
|
-
aux_lambda_lib.set('option', 'library', std_lambda_lib.design)
|
|
203
|
-
libs.append(aux_lambda_lib)
|
|
204
|
-
|
|
205
|
-
return libs
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
#########################
|
|
209
|
-
if __name__ == "__main__":
|
|
210
|
-
for lib in setup(siliconcompiler.Chip('<lib>')):
|
|
211
|
-
lib.write_manifest(f'{lib.top()}.json')
|
|
11
|
+
def __init__(self, libtype, slow_v):
|
|
12
|
+
super().__init__()
|
|
13
|
+
self.set_name(f"sky130{libtype}")
|
|
14
|
+
|
|
15
|
+
self.set_version("v0_0_2")
|
|
16
|
+
|
|
17
|
+
self.add_asic_pdk(Sky130PDK())
|
|
18
|
+
|
|
19
|
+
self.add_asic_site(["unithd", "unithddbl"])
|
|
20
|
+
|
|
21
|
+
lib_path = Path("lambdapdk", "sky130", "libs", self.name)
|
|
22
|
+
|
|
23
|
+
with self.active_dataroot("lambdapdk"):
|
|
24
|
+
for corner_name, filename in [
|
|
25
|
+
('slow', f'sky130_fd_sc_{libtype}__ss_n40C_{slow_v}.lib.gz'),
|
|
26
|
+
('typical', f'sky130_fd_sc_{libtype}__tt_025C_1v80.lib.gz'),
|
|
27
|
+
('fast', f'sky130_fd_sc_{libtype}__ff_100C_1v95.lib.gz')]:
|
|
28
|
+
with self.active_fileset(f"models.timing.{corner_name}.nldm"):
|
|
29
|
+
self.add_file(lib_path / "nldm" / filename)
|
|
30
|
+
self.add_asic_libcornerfileset(corner_name, "nldm")
|
|
31
|
+
|
|
32
|
+
with self.active_dataroot("lambdapdk"):
|
|
33
|
+
with self.active_fileset("models.physical"):
|
|
34
|
+
self.add_file(lib_path / "lef" / f"sky130_fd_sc_{libtype}_merged.lef")
|
|
35
|
+
self.add_file(lib_path / "gds" / f"sky130_fd_sc_{libtype}.gds")
|
|
36
|
+
self.add_asic_aprfileset()
|
|
37
|
+
|
|
38
|
+
with self.active_fileset("models.lvs"):
|
|
39
|
+
self.add_file(lib_path / "cdl" / f"sky130_fd_sc_{libtype}.cdl")
|
|
40
|
+
self.add_asic_aprfileset()
|
|
41
|
+
|
|
42
|
+
with self.active_fileset("rtl"):
|
|
43
|
+
self.add_file(lib_path / "verilog" / f"sky130_fd_sc_{libtype}.v")
|
|
44
|
+
self.add_file(lib_path / "verilog" / "primitives.v")
|
|
45
|
+
|
|
46
|
+
# antenna cells
|
|
47
|
+
self.add_asic_celllist('antenna', f'sky130_fd_sc_{libtype}__diode_2')
|
|
48
|
+
|
|
49
|
+
# clock buffers
|
|
50
|
+
self.add_asic_celllist('clkbuf', [f'sky130_fd_sc_{libtype}__clkbuf_1',
|
|
51
|
+
f'sky130_fd_sc_{libtype}__clkbuf_2',
|
|
52
|
+
f'sky130_fd_sc_{libtype}__clkbuf_4',
|
|
53
|
+
f'sky130_fd_sc_{libtype}__clkbuf_8',
|
|
54
|
+
f'sky130_fd_sc_{libtype}__clkbuf_16'])
|
|
55
|
+
if libtype == "hdll":
|
|
56
|
+
self.add_asic_celllist('clkbuf', [f'sky130_fd_sc_{libtype}__clkbuf_6',
|
|
57
|
+
f'sky130_fd_sc_{libtype}__clkbuf_12'])
|
|
58
|
+
|
|
59
|
+
# hold cells
|
|
60
|
+
self.add_asic_celllist('hold', [f'sky130_fd_sc_{libtype}__dlygate4sd1_1',
|
|
61
|
+
f'sky130_fd_sc_{libtype}__dlygate4sd2_1',
|
|
62
|
+
f'sky130_fd_sc_{libtype}__dlygate4sd3_1'])
|
|
63
|
+
if libtype == "hd":
|
|
64
|
+
self.add_asic_celllist('hold', [f'sky130_fd_sc_{libtype}__dlymetal6s2s_1',
|
|
65
|
+
f'sky130_fd_sc_{libtype}__dlymetal6s4s_1',
|
|
66
|
+
f'sky130_fd_sc_{libtype}__dlymetal6s6s_1'])
|
|
67
|
+
|
|
68
|
+
# filler
|
|
69
|
+
self.add_asic_celllist('filler', [f'sky130_fd_sc_{libtype}__fill_1',
|
|
70
|
+
f'sky130_fd_sc_{libtype}__fill_2',
|
|
71
|
+
f'sky130_fd_sc_{libtype}__fill_4',
|
|
72
|
+
f'sky130_fd_sc_{libtype}__fill_8'])
|
|
73
|
+
|
|
74
|
+
# Tapcell
|
|
75
|
+
self.add_asic_celllist('tap', f'sky130_fd_sc_{libtype}__tapvpwrvgnd_1')
|
|
76
|
+
|
|
77
|
+
# Endcap
|
|
78
|
+
self.add_asic_celllist('endcap', f'sky130_fd_sc_{libtype}__decap_4')
|
|
79
|
+
|
|
80
|
+
self.add_asic_celllist('dontuse', [
|
|
81
|
+
f'sky130_fd_sc_{libtype}__probe_p_8',
|
|
82
|
+
f'sky130_fd_sc_{libtype}__probec_p_8'
|
|
83
|
+
])
|
|
84
|
+
|
|
85
|
+
if libtype == "hd":
|
|
86
|
+
self.add_asic_celllist('dontuse', [
|
|
87
|
+
'sky130_fd_sc_hd__lpflow_bleeder_1',
|
|
88
|
+
'sky130_fd_sc_hd__lpflow_clkbufkapwr_1',
|
|
89
|
+
'sky130_fd_sc_hd__lpflow_clkbufkapwr_16',
|
|
90
|
+
'sky130_fd_sc_hd__lpflow_clkbufkapwr_2',
|
|
91
|
+
'sky130_fd_sc_hd__lpflow_clkbufkapwr_4',
|
|
92
|
+
'sky130_fd_sc_hd__lpflow_clkbufkapwr_8',
|
|
93
|
+
'sky130_fd_sc_hd__lpflow_clkinvkapwr_1',
|
|
94
|
+
'sky130_fd_sc_hd__lpflow_clkinvkapwr_16',
|
|
95
|
+
'sky130_fd_sc_hd__lpflow_clkinvkapwr_2',
|
|
96
|
+
'sky130_fd_sc_hd__lpflow_clkinvkapwr_4',
|
|
97
|
+
'sky130_fd_sc_hd__lpflow_clkinvkapwr_8',
|
|
98
|
+
'sky130_fd_sc_hd__lpflow_decapkapwr_12',
|
|
99
|
+
'sky130_fd_sc_hd__lpflow_decapkapwr_3',
|
|
100
|
+
'sky130_fd_sc_hd__lpflow_decapkapwr_4',
|
|
101
|
+
'sky130_fd_sc_hd__lpflow_decapkapwr_6',
|
|
102
|
+
'sky130_fd_sc_hd__lpflow_decapkapwr_8',
|
|
103
|
+
'sky130_fd_sc_hd__lpflow_inputiso0n_1',
|
|
104
|
+
'sky130_fd_sc_hd__lpflow_inputiso0p_1',
|
|
105
|
+
'sky130_fd_sc_hd__lpflow_inputiso1n_1',
|
|
106
|
+
'sky130_fd_sc_hd__lpflow_inputiso1p_1',
|
|
107
|
+
'sky130_fd_sc_hd__lpflow_inputisolatch_1',
|
|
108
|
+
'sky130_fd_sc_hd__lpflow_isobufsrc_1',
|
|
109
|
+
'sky130_fd_sc_hd__lpflow_isobufsrc_16',
|
|
110
|
+
'sky130_fd_sc_hd__lpflow_isobufsrc_2',
|
|
111
|
+
'sky130_fd_sc_hd__lpflow_isobufsrc_4',
|
|
112
|
+
'sky130_fd_sc_hd__lpflow_isobufsrc_8',
|
|
113
|
+
'sky130_fd_sc_hd__lpflow_isobufsrckapwr_16',
|
|
114
|
+
'sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1',
|
|
115
|
+
'sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2',
|
|
116
|
+
'sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4',
|
|
117
|
+
'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4',
|
|
118
|
+
'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1',
|
|
119
|
+
'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2',
|
|
120
|
+
'sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4'])
|
|
121
|
+
elif libtype == "hdll":
|
|
122
|
+
self.add_asic_celllist('dontuse', [
|
|
123
|
+
'sky130_fd_sc_hdll__inputiso0p_1',
|
|
124
|
+
'sky130_fd_sc_hdll__inputiso0n_1',
|
|
125
|
+
'sky130_fd_sc_hdll__inputiso1p_1',
|
|
126
|
+
'sky130_fd_sc_hdll__inputiso1n_1',
|
|
127
|
+
'sky130_fd_sc_hdll__isobufsrc_1',
|
|
128
|
+
'sky130_fd_sc_hdll__isobufsrc_2',
|
|
129
|
+
'sky130_fd_sc_hdll__isobufsrc_4',
|
|
130
|
+
'sky130_fd_sc_hdll__isobufsrc_8',
|
|
131
|
+
'sky130_fd_sc_hdll__isobufsrc_16'])
|
|
132
|
+
|
|
133
|
+
# tie cells
|
|
134
|
+
self.add_asic_celllist('tie', f'sky130_fd_sc_{libtype}__conb_1')
|
|
135
|
+
|
|
136
|
+
# Setup for yosys
|
|
137
|
+
with self.active_dataroot("lambdapdk"):
|
|
138
|
+
cap_table = {
|
|
139
|
+
'hd': 11,
|
|
140
|
+
'hdll': 11
|
|
141
|
+
}
|
|
142
|
+
self.set_yosys_driver_cell(f"sky130_fd_sc_{libtype}__buf_4")
|
|
143
|
+
self.set_yosys_buffer_cell(f"sky130_fd_sc_{libtype}__buf_4", "A", "X")
|
|
144
|
+
self.set_yosys_tielow_cell(f"sky130_fd_sc_{libtype}__conb_1", "LO")
|
|
145
|
+
self.set_yosys_tiehigh_cell(f"sky130_fd_sc_{libtype}__conb_1", "HI")
|
|
146
|
+
self.set_yosys_abc(1000, cap_table[libtype])
|
|
147
|
+
self.set_yosys_tristatebuffer_map(
|
|
148
|
+
lib_path / "techmap" / "yosys" / "cells_tristatebuf.v")
|
|
149
|
+
if libtype == "hd":
|
|
150
|
+
self.set_yosys_adder_map(lib_path / "techmap" / "yosys" / "cells_adders.v")
|
|
151
|
+
self.add_yosys_tech_map(lib_path / "techmap" / "yosys" / "cells_latch.v")
|
|
152
|
+
|
|
153
|
+
# Setup for OpenROAD
|
|
154
|
+
with self.active_dataroot("lambdapdk"):
|
|
155
|
+
self.set_openroad_placement_density(0.60)
|
|
156
|
+
self.set_openroad_tielow_cell(f"sky130_fd_sc_{libtype}__conb_1", "LO")
|
|
157
|
+
self.set_openroad_tiehigh_cell(f"sky130_fd_sc_{libtype}__conb_1", "HI")
|
|
158
|
+
self.set_openroad_macro_placement_halo(40, 40)
|
|
159
|
+
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
|
+
|
|
164
|
+
# Setup for bambu
|
|
165
|
+
self.set_bambu_clock_multiplier(1)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class Sky130_SCHDLibrary(_Sky130_SCLibrary):
|
|
169
|
+
def __init__(self):
|
|
170
|
+
super().__init__("hd", "1v40")
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class Sky130_SCHDLLLibrary(_Sky130_SCLibrary):
|
|
174
|
+
def __init__(self):
|
|
175
|
+
super().__init__("hdll", "1v44")
|
|
@@ -1,45 +1,55 @@
|
|
|
1
|
-
from
|
|
2
|
-
from lambdapdk import register_data_source
|
|
1
|
+
from pathlib import Path
|
|
3
2
|
|
|
3
|
+
from lambdalib import LambalibTechLibrary
|
|
4
|
+
from lambdapdk import LambdaLibrary, _LambdaPath
|
|
5
|
+
from lambdapdk.sky130 import Sky130PDK
|
|
4
6
|
|
|
5
|
-
def setup():
|
|
6
|
-
libs = []
|
|
7
|
-
stackup = '5M1LI'
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
path_base = 'lambdapdk/sky130/libs/sky130sram'
|
|
14
|
-
lib.add('output', stackup, 'lef', f'{path_base}/{mem_name}/lef/{mem_name}.lef.gz')
|
|
15
|
-
lib.add('output', stackup, 'gds', f'{path_base}/{mem_name}/gds/{mem_name}.gds')
|
|
16
|
-
lib.add('output', stackup, 'cdl', f'{path_base}/{mem_name}/spice/{mem_name}.lvs.sp')
|
|
8
|
+
class Sky130_SRAM_64x256(LambdaLibrary):
|
|
9
|
+
def __init__(self):
|
|
10
|
+
super().__init__()
|
|
11
|
+
self.set_name('sky130_sram_1rw1r_64x256_8')
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
lib.add('output', corner, 'nldm',
|
|
20
|
-
f'{path_base}/{mem_name}/nldm/{mem_name}_TT_1p8V_25C.lib')
|
|
21
|
-
lib.add('output', corner, 'spice', f'{path_base}/{mem_name}/spice/{mem_name}.sp')
|
|
13
|
+
self.add_asic_pdk(Sky130PDK())
|
|
22
14
|
|
|
23
|
-
|
|
24
|
-
f'{path_base}/apr/openroad/pdngen.tcl')
|
|
25
|
-
lib.set('option', 'file', 'openroad_global_connect',
|
|
26
|
-
f'{path_base}/apr/openroad/global_connect.tcl')
|
|
15
|
+
path_base = Path('lambdapdk', 'sky130', 'libs', "sky130sram")
|
|
27
16
|
|
|
28
|
-
|
|
17
|
+
with self.active_dataroot("lambdapdk"):
|
|
18
|
+
with self.active_fileset("models.timing.nldm"):
|
|
19
|
+
self.add_file(path_base / self.name / "nldm" / f"{self.name}_TT_1p8V_25C.lib")
|
|
20
|
+
self.add_asic_libcornerfileset("generic", "nldm")
|
|
29
21
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
lambda_lib.add('asic', 'macrolib', lib.design)
|
|
22
|
+
with self.active_dataroot("lambdapdk"):
|
|
23
|
+
with self.active_fileset("models.physical"):
|
|
24
|
+
self.add_file(path_base / self.name / "lef" / f"{self.name}.lef.gz")
|
|
25
|
+
self.add_file(path_base / self.name / "gds" / f"{self.name}.gds")
|
|
26
|
+
self.add_asic_aprfileset()
|
|
36
27
|
|
|
37
|
-
|
|
28
|
+
with self.active_fileset("models.lvs"):
|
|
29
|
+
self.add_file(path_base / self.name / "spice" / f"{self.name}.lvs.sp",
|
|
30
|
+
filetype="cdl")
|
|
31
|
+
self.add_asic_aprfileset()
|
|
38
32
|
|
|
39
|
-
|
|
33
|
+
with self.active_fileset("models.spice"):
|
|
34
|
+
self.add_file(path_base / self.name / "spice" / f"{self.name}.sp")
|
|
40
35
|
|
|
36
|
+
with self.active_dataroot("lambdapdk"):
|
|
37
|
+
self.add_openroad_power_grid_file(path_base / "apr" / "openroad" / "pdngen.tcl")
|
|
38
|
+
self.add_openroad_global_connect_file(
|
|
39
|
+
path_base / "apr" / "openroad" / "global_connect.tcl")
|
|
41
40
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
|
|
42
|
+
class Sky130Lambdalib_SinglePort(LambalibTechLibrary, _LambdaPath):
|
|
43
|
+
def __init__(self):
|
|
44
|
+
super().__init__("la_spram", [
|
|
45
|
+
Sky130_SRAM_64x256])
|
|
46
|
+
self.set_name("sky130_la_spram")
|
|
47
|
+
|
|
48
|
+
# version
|
|
49
|
+
self.set_version("v1")
|
|
50
|
+
|
|
51
|
+
lib_path = Path("lambdapdk", "sky130", "libs", "sky130sram")
|
|
52
|
+
|
|
53
|
+
with self.active_dataroot("lambdapdk"):
|
|
54
|
+
with self.active_fileset("rtl"):
|
|
55
|
+
self.add_file(lib_path / "lambda" / "la_spram.v")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lambdapdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0rc2
|
|
4
4
|
Summary: Library of open source Process Design Kits
|
|
5
5
|
Author: Zero ASIC
|
|
6
6
|
License: Apache License
|
|
@@ -198,13 +198,13 @@ 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.
|
|
201
|
+
Requires-Dist: siliconcompiler>=0.34.3
|
|
202
|
+
Requires-Dist: lambdalib==0.4.0-rc1
|
|
202
203
|
Provides-Extra: test
|
|
203
204
|
Requires-Dist: flake8==7.3.0; extra == "test"
|
|
204
205
|
Requires-Dist: pytest==8.4.1; extra == "test"
|
|
205
206
|
Requires-Dist: pytest-timeout==2.4.0; extra == "test"
|
|
206
207
|
Requires-Dist: tclint==0.6.0; extra == "test"
|
|
207
|
-
Requires-Dist: lambdalib==0.3.4; extra == "test"
|
|
208
208
|
Requires-Dist: sc-leflib==0.4.0; extra == "test"
|
|
209
209
|
Requires-Dist: Jinja2==3.1.6; extra == "test"
|
|
210
210
|
Dynamic: license-file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
lambdapdk/__init__.py,sha256=D-5fAL_Hac2rIqC0BbYuxGQcuUL-75VN76VZr8kFDRY,9830
|
|
2
|
+
lambdapdk/asap7/__init__.py,sha256=UprA-NESlw20dBdqhXhx-bfJ4d7KWotJYrWGmVbYbG8,4304
|
|
3
|
+
lambdapdk/asap7/libs/asap7sc7p5t.py,sha256=x1sOg01b0ayYUOe38WweazGu51VmOkgthrBEk3bbcBY,4858
|
|
4
|
+
lambdapdk/asap7/libs/fakeio7.py,sha256=E7jWC9YVhRdtDQlbkuRdhFY_0Lum209Bb7xSF0U68W4,773
|
|
5
|
+
lambdapdk/asap7/libs/fakekit7.py,sha256=3AG-xHYw9PyCwdMKeo529DiXreejYUxd16uS2t1Bt1M,597
|
|
6
|
+
lambdapdk/asap7/libs/fakeram7.py,sha256=JWENktqmrc_qzEG7X_ZAdBQJdLuvCl2UpXtWeM8y3Xo,6268
|
|
7
|
+
lambdapdk/freepdk45/__init__.py,sha256=mtdE-xFQRn7nnHsT8izcLJ1hBd_DNL13NHijh6hsmZE,3159
|
|
8
|
+
lambdapdk/freepdk45/libs/fakeram45.py,sha256=hJD7NuVI-JdXNR2t4a3I8_vgfHEESZL7HQ5SGnsGVQg,2391
|
|
9
|
+
lambdapdk/freepdk45/libs/nangate45.py,sha256=RCgqS616U9N_rEyyCoEsyXHMoDobtXUKDoJPKT0yYEY,3551
|
|
10
|
+
lambdapdk/gf180/__init__.py,sha256=uuF94SUCl0U1ibBFLfIVHjcXlAJLNtwogn9ZZBuh0j0,9154
|
|
11
|
+
lambdapdk/gf180/libs/gf180io.py,sha256=KiwhmxycF2R7pl8EGsacStR5WkmGSIk8vIf7WD2gdwQ,4312
|
|
12
|
+
lambdapdk/gf180/libs/gf180mcu.py,sha256=Xt0jorrrJhK0R2UDAE-LslrY3S_1yXC4LQi-TQ1ARRw,8419
|
|
13
|
+
lambdapdk/gf180/libs/gf180sram.py,sha256=72mAAov8QZgIQczeUJZxWWikqYekQYFvnXarCzl2jTo,4664
|
|
14
|
+
lambdapdk/ihp130/__init__.py,sha256=3IdnV5_rKzxwBD3pD2SX7LsQfYlUd-YZF0m96fH3KoE,4697
|
|
15
|
+
lambdapdk/ihp130/libs/sg13g2_io.py,sha256=kA2jT3AZfyNhR5RowhOLiOA2Sb9_uB5TJyF70b1x150,2995
|
|
16
|
+
lambdapdk/ihp130/libs/sg13g2_sram.py,sha256=SabP-8icWhhGpBiMZkFlgSAYVGBg7vxVTOdPAixwq9g,3273
|
|
17
|
+
lambdapdk/ihp130/libs/sg13g2_stdcell.py,sha256=dA8yOp2VHfFZn0K3LF1sp-ril0JP6DT86BZHr9A_Z2k,5010
|
|
18
|
+
lambdapdk/interposer/__init__.py,sha256=woXKReyGw3yuoaQ6FZIFWJ7twxCdtx_tmVFSwhyJTJ0,4739
|
|
19
|
+
lambdapdk/interposer/_generator.py,sha256=Uf9i7gfjgntUpLmxsRmOfzfgh26iQ3nfZmrdIx59UtA,15016
|
|
20
|
+
lambdapdk/interposer/libs/bumps.py,sha256=gLz05sR72NFVZkbEXB1LRUQVkIegrE8JeH5gyBOVRWE,1730
|
|
21
|
+
lambdapdk/sky130/__init__.py,sha256=85rjv0QvpP4VWG0N7UBSyWCH5YATZW8jlXA1O-54nXU,3790
|
|
22
|
+
lambdapdk/sky130/libs/sky130io.py,sha256=ZlgkezCpgFc13zy5UqpIRHGQvT1KdKiXTsADf-T8_80,2105
|
|
23
|
+
lambdapdk/sky130/libs/sky130sc.py,sha256=msRNxMT6MtbGEhX3hfMOo2JL5EQpAaqYhy-hGxcAjAI,8553
|
|
24
|
+
lambdapdk/sky130/libs/sky130sram.py,sha256=jvAI4RyQMOrQl6u9dZtZaOr7-uAfPB-9iZhsVgu7g8I,2117
|
|
25
|
+
lambdapdk-0.2.0rc2.dist-info/licenses/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
26
|
+
lambdapdk-0.2.0rc2.dist-info/METADATA,sha256=QG_tdOjUUkznBq2HgY85aygwSUqYXfu01kRF_uvQ2wQ,13953
|
|
27
|
+
lambdapdk-0.2.0rc2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
28
|
+
lambdapdk-0.2.0rc2.dist-info/entry_points.txt,sha256=M3DJNwBP0Yv7_3UQ4scoJihxcHncDMkD2cEAbaK2XOw,61
|
|
29
|
+
lambdapdk-0.2.0rc2.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
30
|
+
lambdapdk-0.2.0rc2.dist-info/RECORD,,
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
lambdapdk/__init__.py,sha256=dl2LeS3DgDIZgLSBya7T7q778FD4opRq2ALBx3q1vK0,4195
|
|
2
|
-
lambdapdk/asap7/__init__.py,sha256=kC5GWACMeA4MKKpKcJBDHoeZLvZKwdRLi3HQCajl1H8,4745
|
|
3
|
-
lambdapdk/asap7/libs/asap7sc7p5t.py,sha256=kIli2Uuyc3ubG9P58rpu4SJxod8A306-ORZmP95X9vg,6052
|
|
4
|
-
lambdapdk/asap7/libs/fakeio7.py,sha256=t4OQ7uljg4jh14bf3o4wsnI5gNkLEVpMs1drispc7LE,978
|
|
5
|
-
lambdapdk/asap7/libs/fakekit7.py,sha256=IpyAHOCXBPsHfAxW-vS0Vyanws9WnEUDnMbUAzxY2U4,604
|
|
6
|
-
lambdapdk/asap7/libs/fakeram7.py,sha256=oAn6nLYPGaWG7hOvCzPCoa_lrLMH30LwipFXQ1qSNZg,1559
|
|
7
|
-
lambdapdk/freepdk45/__init__.py,sha256=6Iv6zJ0It0KfH4e_3bjn_Yyv5uaLCh4N_tTZm_MoBEQ,3672
|
|
8
|
-
lambdapdk/freepdk45/libs/fakeram45.py,sha256=vX0bqC2xKP1sfihJKEHzHTighNqLOB2egavzIiQdAr4,1245
|
|
9
|
-
lambdapdk/freepdk45/libs/nangate45.py,sha256=XaIhQvwzpp2bsAShG2J3hMbL4ISAbqxOnO692KBG0m0,4892
|
|
10
|
-
lambdapdk/gf180/__init__.py,sha256=fbJ4z0kXBftIHAsgyqJmbpZfpWf9PWuxXgoQoG3IhQ0,7963
|
|
11
|
-
lambdapdk/gf180/libs/gf180io.py,sha256=6WgsALOaKWYG6RfNFz6sg36zmfZZFl2HnsDWOWYy1UM,2751
|
|
12
|
-
lambdapdk/gf180/libs/gf180mcu.py,sha256=N2ny2_OJu_0xJAEqyZ1aA0mO3vvy5u5NmXALFhlqpJs,6811
|
|
13
|
-
lambdapdk/gf180/libs/gf180sram.py,sha256=gE64wFo8wjDwmhL7_0UTl1gyfUZ8IeaILHNjwu7vfrg,2294
|
|
14
|
-
lambdapdk/ihp130/__init__.py,sha256=7UQLjQDjr3O8H-d3ds8tF9qZINUXcS46H-ZKVcyCZ2g,5500
|
|
15
|
-
lambdapdk/ihp130/libs/sg13g2_io.py,sha256=60Xxh2DC2n_nHsCKKjgQpNYqxf4ZuxxgfM3aaIfJBTQ,2158
|
|
16
|
-
lambdapdk/ihp130/libs/sg13g2_sram.py,sha256=CgzCB7TfOtFmBAy7Ogqlm4_f0ZCqcVDydCLdYkfDc1A,2081
|
|
17
|
-
lambdapdk/ihp130/libs/sg13g2_stdcell.py,sha256=rm1g2u8Bm-OpJzaEe2COiX-yfI18Cy96fRv3ikNwYoM,5097
|
|
18
|
-
lambdapdk/interposer/__init__.py,sha256=UEAxcCLo-0OheGNCOTLpwnF05HFAz3agStFBTdcgS58,4039
|
|
19
|
-
lambdapdk/interposer/_generator.py,sha256=Uf9i7gfjgntUpLmxsRmOfzfgh26iQ3nfZmrdIx59UtA,15016
|
|
20
|
-
lambdapdk/interposer/libs/bumps.py,sha256=-b3cNOUBKhzzxoWI1Y047g9Ev3a_mXBMLKO3BaHo1sI,771
|
|
21
|
-
lambdapdk/sky130/__init__.py,sha256=3-UxGN0A1Kr8tlq8hVkxqDjENuzkkK1MOqHteoih9m8,4113
|
|
22
|
-
lambdapdk/sky130/libs/sky130io.py,sha256=wFmN9RC98f6OFM5E5acCUgPe35tVTKciJzIcUBlmumo,2029
|
|
23
|
-
lambdapdk/sky130/libs/sky130sc.py,sha256=vDqt7mpEmwBwuK1kkEr6g2lxBs7dMpEs3HkbS8EC85Y,9606
|
|
24
|
-
lambdapdk/sky130/libs/sky130sram.py,sha256=CFn8Ve0WkHBdzlkZ1LPZJ3hknwE2IZGkV5Cr2qdiOZ8,1643
|
|
25
|
-
lambdapdk-0.1.56.dist-info/licenses/LICENSE,sha256=2TIhku7H905BsYloYoCwat2JsdkGYc_qsnvU-p7P-IQ,10766
|
|
26
|
-
lambdapdk-0.1.56.dist-info/METADATA,sha256=ZBVQYX1mZDlUT8Y7uwguP9ZKSDH_uFJIPUKct-YQRgA,13964
|
|
27
|
-
lambdapdk-0.1.56.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
28
|
-
lambdapdk-0.1.56.dist-info/entry_points.txt,sha256=pAsLLqQtg5qJC63h5tDVuyxPYJAkaTUgAxscBiohPD4,128
|
|
29
|
-
lambdapdk-0.1.56.dist-info/top_level.txt,sha256=5wk8psZwCcQgSjOlWTihBeDkSIViGn8I3j5yALbs59s,10
|
|
30
|
-
lambdapdk-0.1.56.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|