siepic-forge 1.2.2__tar.gz → 1.3.0__tar.gz

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.
Files changed (36) hide show
  1. {siepic_forge-1.2.2/siepic_forge.egg-info → siepic_forge-1.3.0}/PKG-INFO +2 -2
  2. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/pyproject.toml +5 -2
  3. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/__init__.py +1 -1
  4. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/_component_data.py +3 -3
  5. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/_layers.py +37 -11
  6. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/technology.py +9 -13
  7. {siepic_forge-1.2.2 → siepic_forge-1.3.0/siepic_forge.egg-info}/PKG-INFO +2 -2
  8. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge.egg-info/SOURCES.txt +1 -0
  9. siepic_forge-1.3.0/siepic_forge.egg-info/entry_points.txt +2 -0
  10. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge.egg-info/requires.txt +1 -1
  11. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/LICENSE +0 -0
  12. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/README.md +0 -0
  13. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/setup.cfg +0 -0
  14. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/component.py +0 -0
  15. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/GCs_BB.gds +0 -0
  16. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_adiabatic_te1550.gds +0 -0
  17. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_adiabatic_tm1550.gds +0 -0
  18. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_bdc_te1550.gds +0 -0
  19. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_crossing4.gds +0 -0
  20. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_gc_te1550.gds +0 -0
  21. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_gc_tm1550.gds +0 -0
  22. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_routing_taper_te1550_w=500nm_to_w=3000nm_L=20um.gds +0 -0
  23. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_routing_taper_te1550_w=500nm_to_w=3000nm_L=40um.gds +0 -0
  24. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_splitter_swg_assist_te1310.gds +0 -0
  25. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_splitter_swg_assist_te1550.gds +0 -0
  26. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_terminator_te1310.gds +0 -0
  27. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_terminator_te1550.gds +0 -0
  28. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_terminator_tm1550.gds +0 -0
  29. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_y_1310.gds +0 -0
  30. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_y_1550.gds +0 -0
  31. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_y_adiabatic.gds +0 -0
  32. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/ebeam_y_adiabatic_500pin.gds +0 -0
  33. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/taper_si_simm_1310.gds +0 -0
  34. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge/library/taper_si_simm_1550.gds +0 -0
  35. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge.egg-info/dependency_links.txt +0 -0
  36. {siepic_forge-1.2.2 → siepic_forge-1.3.0}/siepic_forge.egg-info/top_level.txt +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: siepic-forge
3
- Version: 1.2.2
3
+ Version: 1.3.0
4
4
  Summary: SiEPIC EBeam PDK implementation for PhotonForge
5
5
  Author-email: "Flexcompute Inc." <info@flexcompute.com>
6
6
  Project-URL: homepage, https://github.com/flexcompute/siepic-forge
7
7
  Project-URL: documentation, https://github.com/flexcompute/siepic-forge
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
- Requires-Dist: photonforge>=1.5.0
10
+ Requires-Dist: photonforge>=2.0
11
11
  Provides-Extra: test
12
12
  Requires-Dist: pytest>=7.2; extra == "test"
13
13
  Dynamic: license-file
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "siepic-forge"
7
- version = "1.2.2"
7
+ version = "1.3.0"
8
8
  authors = [{name = "Flexcompute Inc.", email = "info@flexcompute.com"}]
9
9
  description = "SiEPIC EBeam PDK implementation for PhotonForge"
10
10
  readme = "README.md"
11
- dependencies = ["photonforge >= 1.5.0"]
11
+ dependencies = ["photonforge >= 2.0"]
12
12
 
13
13
  [project.optional-dependencies]
14
14
  test = ["pytest >= 7.2"]
@@ -17,6 +17,9 @@ test = ["pytest >= 7.2"]
17
17
  homepage = "https://github.com/flexcompute/siepic-forge"
18
18
  documentation = "https://github.com/flexcompute/siepic-forge"
19
19
 
20
+ [project.entry-points."photonforge.pdk"]
21
+ "SiEPIC EBeam Si" = "siepic_forge"
22
+
20
23
  [tool.setuptools]
21
24
  packages = ["siepic_forge", "siepic_forge.library"]
22
25
 
@@ -1,7 +1,7 @@
1
1
  from .component import component, component_names # noqa: F401
2
2
  from .technology import ebeam
3
3
 
4
- __version__ = "1.2.2"
4
+ __version__ = "1.3.0"
5
5
 
6
6
 
7
7
  def plot_cross_section(technology=None):
@@ -30,7 +30,7 @@ _component_data = {
30
30
  ((-20.4, 0.0), (_vx, 0, _vy), _waist, 90),
31
31
  ],
32
32
  None,
33
- "grating-coupler",
33
+ "grating_coupler",
34
34
  ),
35
35
  "GC_TE_1550_8degOxide_BB": (
36
36
  "GCs_BB",
@@ -39,7 +39,7 @@ _component_data = {
39
39
  ((-20.4, 0.0), (_vx, 0, _vy), _waist, 90),
40
40
  ],
41
41
  None,
42
- "grating-coupler",
42
+ "grating_coupler",
43
43
  ),
44
44
  "GC_TM_1310_8degOxide_BB": (
45
45
  "GCs_BB",
@@ -48,7 +48,7 @@ _component_data = {
48
48
  ((-20.4, 0.0), (_vx, 0, _vy), _waist, 0),
49
49
  ],
50
50
  None,
51
- "grating-coupler",
51
+ "grating_coupler",
52
52
  ),
53
53
  "GC_TM_1550_8degOxide_BB": (
54
54
  "GCs_BB",
@@ -1,18 +1,40 @@
1
1
  import photonforge as pf
2
2
 
3
3
  _layers = {
4
- "Si": pf.LayerSpec((1, 0), "SiEPIC - Waveguide", "#ff80a818", ""),
4
+ "Si": pf.LayerSpec(
5
+ (1, 0), "SiEPIC - Waveguide", "#ff80a818", "", min_width=0.06, min_spacing=0.07
6
+ ),
5
7
  "PinRec": pf.LayerSpec((1, 10), "SiEPIC", "#ff80a818", ""),
6
8
  "PinRecM": pf.LayerSpec((1, 11), "SiEPIC", "#80000018", ""),
7
9
  "Si Slab": pf.LayerSpec(
8
10
  (2, 0), "Dedicated Run Layers - Device Layer Partial Etch", "#c080ff18", ""
9
11
  ),
10
- "Direct Metal": pf.LayerSpec((5, 0), "Dedicated Run Layers", "#80a8ff18", ""),
12
+ "Direct Metal": pf.LayerSpec(
13
+ (5, 0),
14
+ "Dedicated Run Layers",
15
+ "#80a8ff18",
16
+ "",
17
+ conductive=True,
18
+ min_width=5,
19
+ min_spacing=10,
20
+ ),
11
21
  "Oxide open to BOX": pf.LayerSpec((6, 0), "Dedicated Run Layers", "#ff000018", ""),
12
22
  "Text": pf.LayerSpec((10, 0), "Text-Not Fabricated", "#00000018", "hollow"),
13
- "M1_heater": pf.LayerSpec((11, 0), "TiW Heater", "#0000ff18", "\\\\"),
14
- "M2_router": pf.LayerSpec((12, 0), "TiW/Au Routing Bilayer", "#ffbf0018", "//"),
15
- "M_Open": pf.LayerSpec((13, 0), "Bond Pad Open", "#80005718", "\\\\"),
23
+ "M1_heater": pf.LayerSpec(
24
+ (11, 0), "TiW Heater", "#0000ff18", "\\\\", min_width=3, min_spacing=3
25
+ ),
26
+ "M2_router": pf.LayerSpec(
27
+ (12, 0),
28
+ "TiW/Au Routing Bilayer",
29
+ "#ffbf0018",
30
+ "//",
31
+ conductive=True,
32
+ min_width=5,
33
+ min_spacing=8,
34
+ ),
35
+ "M_Open": pf.LayerSpec(
36
+ (13, 0), "Bond Pad Open", "#80005718", "\\\\", min_width=10, min_spacing=10
37
+ ),
16
38
  "Si n": pf.LayerSpec((20, 0), "Dedicated Run Layers", "#afff8018", ""),
17
39
  "Si p": pf.LayerSpec((21, 0), "Dedicated Run Layers", "#ffd9df18", ""),
18
40
  "Si n+": pf.LayerSpec((22, 0), "Dedicated Run Layers", "#ff800018", ""),
@@ -21,14 +43,16 @@ _layers = {
21
43
  "Si p++": pf.LayerSpec((25, 0), "Dedicated Run Layers", "#00800018", ""),
22
44
  "ANT Reserved": pf.LayerSpec((31, 0), "SiEPIC/ANT Reserved", "#9580ff18", "/"),
23
45
  "ANT Reserved 1": pf.LayerSpec((33, 0), "ANT Reserved", "#9580ff18", "/"),
24
- "Via to silicon": pf.LayerSpec((40, 0), "Dedicated Run Layers", "#0000ff18", ""),
25
- "DevRec": pf.LayerSpec((68, 0), "SiEPIC", "#00800018", ""),
46
+ "Via to silicon": pf.LayerSpec(
47
+ (40, 0), "Dedicated Run Layers", "#0000ff18", "", conductive=True
48
+ ),
49
+ "DevRec": pf.LayerSpec((68, 0), "SiEPIC", "#00800018", "", device_marker=True),
26
50
  "FbrTgt": pf.LayerSpec((81, 0), "SiEPIC/Dedicated Run Layers", "#80808018", ""),
27
51
  "ANT Reserved 2": pf.LayerSpec((102, 0), "ANT Reserved", "#9580ff18", "/"),
28
52
  "ANT Reserved 3": pf.LayerSpec((110, 0), "ANT Reserved", "#9580ff18", "/"),
29
- "Custom Dicing": pf.LayerSpec((189, 0), "", "#00000018", "hollow"),
30
- "SEM Imaging": pf.LayerSpec((200, 0), "", "#ff000018", "x"),
31
- "Deep Trench": pf.LayerSpec((201, 0), "", "#00ff0018", "."),
53
+ "Custom Dicing": pf.LayerSpec((189, 0), "", "#00000018", "hollow", min_width=100),
54
+ "SEM Imaging": pf.LayerSpec((200, 0), "", "#ff000018", "x", min_width=0.5),
55
+ "Deep Trench": pf.LayerSpec((201, 0), "", "#00ff0018", ".", min_width=260),
32
56
  "Deep Trench Handling Exclusion": pf.LayerSpec((202, 0), "", "#00760018", ":"),
33
57
  "Thermal Isolation Trenches": pf.LayerSpec((203, 0), "", "#00800018", "\\"),
34
58
  "Laser Integration Shelf": pf.LayerSpec((205, 0), "Dedicated Run Layers", "#69ff0518", ""),
@@ -114,6 +138,8 @@ _layers = {
114
138
  "Error: Thermal isolation and device layer overlap, or spacing is less than design rule": pf.LayerSpec(
115
139
  (403, 3), "DRC Errors", "#50008018", ""
116
140
  ),
117
- "Dream Photonics Black Box-Not Fabricated": pf.LayerSpec((998, 0), "", "#00000018", "hollow"),
141
+ "Dream Photonics Black Box-Not Fabricated": pf.LayerSpec(
142
+ (998, 0), "", "#00000018", "hollow", device_marker=True
143
+ ),
118
144
  "Errors": pf.LayerSpec((999, 0), "SiEPIC", "#0000ff18", ""),
119
145
  }
@@ -127,7 +127,6 @@ def ebeam(
127
127
  num_modes=1,
128
128
  added_solver_modes=0,
129
129
  polarization=None,
130
- target_neff=3.5,
131
130
  path_profiles=((0.5, 0.0, (1, 0)),),
132
131
  ),
133
132
  "TE_1310_410": pf.PortSpec(
@@ -137,7 +136,6 @@ def ebeam(
137
136
  num_modes=1,
138
137
  added_solver_modes=0,
139
138
  polarization=None,
140
- target_neff=3.5,
141
139
  path_profiles=((0.41, 0.0, (1, 0)),),
142
140
  ),
143
141
  "TE_1310_350": pf.PortSpec(
@@ -147,7 +145,6 @@ def ebeam(
147
145
  num_modes=1,
148
146
  added_solver_modes=0,
149
147
  polarization=None,
150
- target_neff=3.5,
151
148
  path_profiles=((0.35, 0.0, (1, 0)),),
152
149
  ),
153
150
  "TM_1310_350": pf.PortSpec(
@@ -157,7 +154,6 @@ def ebeam(
157
154
  num_modes=1,
158
155
  added_solver_modes=1,
159
156
  polarization="TM",
160
- target_neff=3.5,
161
157
  path_profiles=((0.35, 0.0, (1, 0)),),
162
158
  ),
163
159
  "TM_1550_500": pf.PortSpec(
@@ -167,7 +163,6 @@ def ebeam(
167
163
  num_modes=1,
168
164
  added_solver_modes=1,
169
165
  polarization="TM",
170
- target_neff=3.5,
171
166
  path_profiles=((0.5, 0.0, (1, 0)),),
172
167
  ),
173
168
  "TE-TM_1550_450": pf.PortSpec(
@@ -177,7 +172,6 @@ def ebeam(
177
172
  num_modes=2,
178
173
  added_solver_modes=0,
179
174
  polarization=None,
180
- target_neff=3.5,
181
175
  path_profiles=((0.45, 0.0, (1, 0)),),
182
176
  ),
183
177
  "MM_TE_1550_2000": pf.PortSpec(
@@ -187,7 +181,6 @@ def ebeam(
187
181
  num_modes=10,
188
182
  added_solver_modes=0,
189
183
  polarization=None,
190
- target_neff=3.5,
191
184
  path_profiles=((2.0, 0.0, (1, 0)),),
192
185
  ),
193
186
  "MM_TE_1550_3000": pf.PortSpec(
@@ -197,7 +190,6 @@ def ebeam(
197
190
  num_modes=15,
198
191
  added_solver_modes=0,
199
192
  polarization=None,
200
- target_neff=3.5,
201
193
  path_profiles=((3.0, 0.0, (1, 0)),),
202
194
  ),
203
195
  "Slot_TE_1550_500": pf.PortSpec(
@@ -207,7 +199,6 @@ def ebeam(
207
199
  num_modes=1,
208
200
  added_solver_modes=0,
209
201
  polarization=None,
210
- target_neff=3.5,
211
202
  path_profiles=((0.2, -0.15, (1, 0)), (0.2, 0.15, (1, 0))),
212
203
  ),
213
204
  "eskid_TE_1550": pf.PortSpec(
@@ -217,7 +208,6 @@ def ebeam(
217
208
  num_modes=1,
218
209
  added_solver_modes=0,
219
210
  polarization=None,
220
- target_neff=3.5,
221
211
  path_profiles=(
222
212
  (0.35, 0.0, (1, 0)),
223
213
  (0.06, 0.265, (1, 0)),
@@ -237,7 +227,6 @@ def ebeam(
237
227
  num_modes=1,
238
228
  added_solver_modes=0,
239
229
  polarization=None,
240
- target_neff=3.5,
241
230
  path_profiles=((0.5, 0.0, (1, 0)), (3.0, 0.0, (2, 0))),
242
231
  ),
243
232
  "Rib_TE_1310_350": pf.PortSpec(
@@ -247,12 +236,19 @@ def ebeam(
247
236
  num_modes=1,
248
237
  added_solver_modes=0,
249
238
  polarization=None,
250
- target_neff=3.5,
251
239
  path_profiles=((0.35, 0.0, (1, 0)), (3.0, 0.0, (2, 0))),
252
240
  ),
253
241
  }
254
242
 
255
- result = pf.Technology("SiEPIC EBeam Si", "1.2.2", layers, extrusion_specs, ports, opening)
243
+ result = pf.Technology(
244
+ "SiEPIC EBeam Si",
245
+ "1.3.0",
246
+ layers,
247
+ extrusion_specs,
248
+ ports,
249
+ opening,
250
+ connected_layers=[((11, 0), (12, 0))],
251
+ )
256
252
  result.random_variables = [
257
253
  pf.monte_carlo.RandomVariable("si_thickness", value=0.22, stdev=0.0223 / 6),
258
254
  ]
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: siepic-forge
3
- Version: 1.2.2
3
+ Version: 1.3.0
4
4
  Summary: SiEPIC EBeam PDK implementation for PhotonForge
5
5
  Author-email: "Flexcompute Inc." <info@flexcompute.com>
6
6
  Project-URL: homepage, https://github.com/flexcompute/siepic-forge
7
7
  Project-URL: documentation, https://github.com/flexcompute/siepic-forge
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
- Requires-Dist: photonforge>=1.5.0
10
+ Requires-Dist: photonforge>=2.0
11
11
  Provides-Extra: test
12
12
  Requires-Dist: pytest>=7.2; extra == "test"
13
13
  Dynamic: license-file
@@ -9,6 +9,7 @@ siepic_forge/technology.py
9
9
  siepic_forge.egg-info/PKG-INFO
10
10
  siepic_forge.egg-info/SOURCES.txt
11
11
  siepic_forge.egg-info/dependency_links.txt
12
+ siepic_forge.egg-info/entry_points.txt
12
13
  siepic_forge.egg-info/requires.txt
13
14
  siepic_forge.egg-info/top_level.txt
14
15
  siepic_forge/library/GCs_BB.gds
@@ -0,0 +1,2 @@
1
+ [photonforge.pdk]
2
+ SiEPIC EBeam Si = siepic_forge
@@ -1,4 +1,4 @@
1
- photonforge>=1.5.0
1
+ photonforge>=2.0
2
2
 
3
3
  [test]
4
4
  pytest>=7.2
File without changes
File without changes
File without changes