Skip to content

Commit 12abfa8

Browse files
committed
fix interposer setup
1 parent 0600c77 commit 12abfa8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+1293
-832
lines changed

lambdapdk/interposer/__init__.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,15 @@ def setup():
5757
pdk.set('pdk', process, 'maxlayer', stackup, 'topmetal')
5858

5959
# DRC Runsets
60-
pdk.set('pdk', process, 'drc', 'runset', 'magic', stackup, 'drc',
60+
pdk.set('pdk', process, 'drc', 'runset', 'klayout', stackup, 'drc',
6161
pdkdir + f'/setup/klayout/{stackup}.drc')
6262

63+
key = 'drc_params:drc'
64+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'input=<input>')
65+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'topcell=<topcell>')
66+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'report=<report>')
67+
pdk.add('pdk', process, 'var', 'klayout', stackup, key, 'threads=<threads>')
68+
6369
# Layer map and display file
6470
pdk.set('pdk', process, 'layermap', 'klayout', 'def', 'gds', stackup,
6571
pdkdir + f'/apr/{stackup}.layermap')

lambdapdk/interposer/_generator.py

+21-4
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,11 @@ def build_tech(layer_count, name=None, width=None):
112112
layeridx = n + 1
113113

114114
metal_name = f"metal{layeridx}"
115+
max_width = 5.0
115116
if layeridx == layer_count:
116117
metal_name = "topmetal"
117118
gds_layer = 100
119+
max_width = None
118120

119121
layers.append(
120122
make_metal_layer(
@@ -134,12 +136,12 @@ def build_tech(layer_count, name=None, width=None):
134136
"TEXT": 20
135137
}
136138
},
137-
"HORIZONTAL" if layeridx % 2 == 1 else "VERITCAL",
139+
"HORIZONTAL" if layeridx % 2 == 1 else "VERTICAL",
138140
min_width=width[n],
139141
min_spacing=width[n],
140142
resistance_per_um=1.5000e-03,
141143
capacitance_per_um=1.0000E-01,
142-
max_width=5.0
144+
max_width=max_width
143145
))
144146

145147
if layeridx != layer_count:
@@ -175,7 +177,8 @@ def build_tech(layer_count, name=None, width=None):
175177
tech = {
176178
"name": name,
177179
"grid": 0.005,
178-
"layers": layers
180+
"layers": layers,
181+
"outline": (0, 0)
179182
}
180183

181184
return tech
@@ -203,6 +206,13 @@ def build_layermap(tech, path):
203206
str(gds_type)
204207
))
205208

209+
layermap.append((
210+
"DIEAREA",
211+
"ALL",
212+
str(tech["outline"][0]),
213+
str(tech["outline"][1])
214+
))
215+
206216
os.makedirs(path, exist_ok=True)
207217
with open(f'{path}/{tech["name"]}.layermap', 'w') as f:
208218
f.write(
@@ -294,7 +304,8 @@ def build_klayout_drc(tech, path):
294304
jinja2_env.get_template('drc.j2').render(
295305
license=LICENSE,
296306
grid=int(tech["grid"] * 1000),
297-
layers=layers
307+
layers=layers,
308+
outline={"number": tech["outline"][0], "type": tech["outline"][1]}
298309
)
299310
)
300311
f.write('\n')
@@ -358,6 +369,8 @@ def make_layer(name, gds):
358369
return prop
359370

360371
props = ET.Element("layer-properties")
372+
props.append(make_layer("outline", (tech["outline"][0], tech["outline"][1])))
373+
layeridx += 1
361374
for layer in tech["layers"]:
362375
gds_types = sorted(set([*layer["gds"]["types"].values(), *layer["gds"]["name"].values()]))
363376
for gds_type in gds_types:
@@ -436,8 +449,12 @@ def build_openroad_fill(tech, path):
436449
shapes.append(width)
437450

438451
fill["layers"][layer["name"]] = {
452+
"name": layer["name"],
453+
"layer": layer["gds"]["number"],
454+
"datatype": layer["gds"]["types"]["NET"],
439455
"space_to_outline": max_spacing,
440456
"non-opc": {
457+
"datatype": layer["gds"]["types"]["FILL"],
441458
"width": shapes,
442459
"height": shapes,
443460
"space_to_fill": layer["spacing"]["min"],

lambdapdk/interposer/base/apr/3ML_0400.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,4 @@ topmetal FILL 100 30
5656
NAME topmetal/PIN 100 20
5757
NAME topmetal/SPNET 100 20
5858
NAME topmetal/TEXT 100 20
59+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/3ML_0400.lef

+8-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 0.8 ;
4444
SPACING 0.4 ;
4545
WIDTH 0.4 ;
@@ -58,7 +58,6 @@ LAYER topmetal
5858
PITCH 0.8 ;
5959
SPACING 0.4 ;
6060
WIDTH 0.4 ;
61-
MAXWIDTH 5.0 ;
6261
END topmetal
6362

6463
VIA VIA1_1 DEFAULT
@@ -78,3 +77,10 @@ VIA VIA2_1 DEFAULT
7877
LAYER topmetal ;
7978
RECT -0.300 -0.300 0.300 0.300 ;
8079
END VIA2_1
80+
81+
82+
SITE dummy_site
83+
SYMMETRY X Y ;
84+
CLASS core ;
85+
SIZE 1.0 BY 1.0 ;
86+
END dummy_site

lambdapdk/interposer/base/apr/3ML_0400_2000.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,4 @@ topmetal FILL 100 30
5656
NAME topmetal/PIN 100 20
5757
NAME topmetal/SPNET 100 20
5858
NAME topmetal/TEXT 100 20
59+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/3ML_0400_2000.lef

+8-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 1.6 ;
4444
SPACING 0.8 ;
4545
WIDTH 0.8 ;
@@ -58,7 +58,6 @@ LAYER topmetal
5858
PITCH 4.0 ;
5959
SPACING 2.0 ;
6060
WIDTH 2.0 ;
61-
MAXWIDTH 5.0 ;
6261
END topmetal
6362

6463
VIA VIA1_1 DEFAULT
@@ -78,3 +77,10 @@ VIA VIA2_1 DEFAULT
7877
LAYER topmetal ;
7978
RECT -0.600 -0.600 0.600 0.600 ;
8079
END VIA2_1
80+
81+
82+
SITE dummy_site
83+
SYMMETRY X Y ;
84+
CLASS core ;
85+
SIZE 1.0 BY 1.0 ;
86+
END dummy_site

lambdapdk/interposer/base/apr/3ML_0800.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,4 @@ topmetal FILL 100 30
5656
NAME topmetal/PIN 100 20
5757
NAME topmetal/SPNET 100 20
5858
NAME topmetal/TEXT 100 20
59+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/3ML_0800.lef

+8-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 1.6 ;
4444
SPACING 0.8 ;
4545
WIDTH 0.8 ;
@@ -58,7 +58,6 @@ LAYER topmetal
5858
PITCH 1.6 ;
5959
SPACING 0.8 ;
6060
WIDTH 0.8 ;
61-
MAXWIDTH 5.0 ;
6261
END topmetal
6362

6463
VIA VIA1_1 DEFAULT
@@ -78,3 +77,10 @@ VIA VIA2_1 DEFAULT
7877
LAYER topmetal ;
7978
RECT -0.600 -0.600 0.600 0.600 ;
8079
END VIA2_1
80+
81+
82+
SITE dummy_site
83+
SYMMETRY X Y ;
84+
CLASS core ;
85+
SIZE 1.0 BY 1.0 ;
86+
END dummy_site

lambdapdk/interposer/base/apr/3ML_2000.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,4 @@ topmetal FILL 100 30
5656
NAME topmetal/PIN 100 20
5757
NAME topmetal/SPNET 100 20
5858
NAME topmetal/TEXT 100 20
59+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/3ML_2000.lef

+8-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 4.0 ;
4444
SPACING 2.0 ;
4545
WIDTH 2.0 ;
@@ -58,7 +58,6 @@ LAYER topmetal
5858
PITCH 4.0 ;
5959
SPACING 2.0 ;
6060
WIDTH 2.0 ;
61-
MAXWIDTH 5.0 ;
6261
END topmetal
6362

6463
VIA VIA1_1 DEFAULT
@@ -78,3 +77,10 @@ VIA VIA2_1 DEFAULT
7877
LAYER topmetal ;
7978
RECT -1.500 -1.500 1.500 1.500 ;
8079
END VIA2_1
80+
81+
82+
SITE dummy_site
83+
SYMMETRY X Y ;
84+
CLASS core ;
85+
SIZE 1.0 BY 1.0 ;
86+
END dummy_site

lambdapdk/interposer/base/apr/4ML_0400.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,4 @@ topmetal FILL 100 30
7272
NAME topmetal/PIN 100 20
7373
NAME topmetal/SPNET 100 20
7474
NAME topmetal/TEXT 100 20
75+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/4ML_0400.lef

+9-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 0.8 ;
4444
SPACING 0.4 ;
4545
WIDTH 0.4 ;
@@ -69,11 +69,10 @@ END via3
6969

7070
LAYER topmetal
7171
TYPE ROUTING ;
72-
DIRECTION VERITCAL ;
72+
DIRECTION VERTICAL ;
7373
PITCH 0.8 ;
7474
SPACING 0.4 ;
7575
WIDTH 0.4 ;
76-
MAXWIDTH 5.0 ;
7776
END topmetal
7877

7978
VIA VIA1_1 DEFAULT
@@ -102,3 +101,10 @@ VIA VIA3_1 DEFAULT
102101
LAYER topmetal ;
103102
RECT -0.300 -0.300 0.300 0.300 ;
104103
END VIA3_1
104+
105+
106+
SITE dummy_site
107+
SYMMETRY X Y ;
108+
CLASS core ;
109+
SIZE 1.0 BY 1.0 ;
110+
END dummy_site

lambdapdk/interposer/base/apr/4ML_0400_2000.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,4 @@ topmetal FILL 100 30
7272
NAME topmetal/PIN 100 20
7373
NAME topmetal/SPNET 100 20
7474
NAME topmetal/TEXT 100 20
75+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/4ML_0400_2000.lef

+9-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 0.8 ;
4444
SPACING 0.4 ;
4545
WIDTH 0.4 ;
@@ -69,11 +69,10 @@ END via3
6969

7070
LAYER topmetal
7171
TYPE ROUTING ;
72-
DIRECTION VERITCAL ;
72+
DIRECTION VERTICAL ;
7373
PITCH 4.0 ;
7474
SPACING 2.0 ;
7575
WIDTH 2.0 ;
76-
MAXWIDTH 5.0 ;
7776
END topmetal
7877

7978
VIA VIA1_1 DEFAULT
@@ -102,3 +101,10 @@ VIA VIA3_1 DEFAULT
102101
LAYER topmetal ;
103102
RECT -1.500 -1.500 1.500 1.500 ;
104103
END VIA3_1
104+
105+
106+
SITE dummy_site
107+
SYMMETRY X Y ;
108+
CLASS core ;
109+
SIZE 1.0 BY 1.0 ;
110+
END dummy_site

lambdapdk/interposer/base/apr/4ML_0800.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,4 @@ topmetal FILL 100 30
7272
NAME topmetal/PIN 100 20
7373
NAME topmetal/SPNET 100 20
7474
NAME topmetal/TEXT 100 20
75+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/4ML_0800.lef

+9-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 1.6 ;
4444
SPACING 0.8 ;
4545
WIDTH 0.8 ;
@@ -69,11 +69,10 @@ END via3
6969

7070
LAYER topmetal
7171
TYPE ROUTING ;
72-
DIRECTION VERITCAL ;
72+
DIRECTION VERTICAL ;
7373
PITCH 1.6 ;
7474
SPACING 0.8 ;
7575
WIDTH 0.8 ;
76-
MAXWIDTH 5.0 ;
7776
END topmetal
7877

7978
VIA VIA1_1 DEFAULT
@@ -102,3 +101,10 @@ VIA VIA3_1 DEFAULT
102101
LAYER topmetal ;
103102
RECT -0.600 -0.600 0.600 0.600 ;
104103
END VIA3_1
104+
105+
106+
SITE dummy_site
107+
SYMMETRY X Y ;
108+
CLASS core ;
109+
SIZE 1.0 BY 1.0 ;
110+
END dummy_site

lambdapdk/interposer/base/apr/4ML_2000.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,4 @@ topmetal FILL 100 30
7272
NAME topmetal/PIN 100 20
7373
NAME topmetal/SPNET 100 20
7474
NAME topmetal/TEXT 100 20
75+
DIEAREA ALL 0 0

lambdapdk/interposer/base/apr/4ML_2000.lef

+9-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ END via1
3939

4040
LAYER metal2
4141
TYPE ROUTING ;
42-
DIRECTION VERITCAL ;
42+
DIRECTION VERTICAL ;
4343
PITCH 4.0 ;
4444
SPACING 2.0 ;
4545
WIDTH 2.0 ;
@@ -69,11 +69,10 @@ END via3
6969

7070
LAYER topmetal
7171
TYPE ROUTING ;
72-
DIRECTION VERITCAL ;
72+
DIRECTION VERTICAL ;
7373
PITCH 4.0 ;
7474
SPACING 2.0 ;
7575
WIDTH 2.0 ;
76-
MAXWIDTH 5.0 ;
7776
END topmetal
7877

7978
VIA VIA1_1 DEFAULT
@@ -102,3 +101,10 @@ VIA VIA3_1 DEFAULT
102101
LAYER topmetal ;
103102
RECT -1.500 -1.500 1.500 1.500 ;
104103
END VIA3_1
104+
105+
106+
SITE dummy_site
107+
SYMMETRY X Y ;
108+
CLASS core ;
109+
SIZE 1.0 BY 1.0 ;
110+
END dummy_site

lambdapdk/interposer/base/apr/5ML_0400.layermap

+1
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,4 @@ topmetal FILL 100 30
8888
NAME topmetal/PIN 100 20
8989
NAME topmetal/SPNET 100 20
9090
NAME topmetal/TEXT 100 20
91+
DIEAREA ALL 0 0

0 commit comments

Comments
 (0)