Technology

image.png

A typical fabrication process for microelectronics or photonics involves many layers of materials and processing steps to create active and passive devices. A process design kit (PDK) provided by the foundry describes this fabrication process, allowing us to convert 2D layout files to 3D representation of devices needed for electromagnetic simulations. In PhotonForge, this information is stored as a Technology object.

Loading a Technology

PhotonForge makes it really easy to load a technology and customize it. Each available PDK includes a technology function that can be called to create a Technology object with the desired specifications.

As an example, we will use the SiEPIC OpenEBL PDK through the siepic_forge module.

[1]:
import photonforge as pf
import siepic_forge as siepic

The technology function in the siepic_forge module is called ebeam, which defines the various layers, materials, thicknesses, and ports that we can use to build devices in this open-source platform.

If we want to, we can inspect the function to find out which parameters can be set:

[2]:
siepic.ebeam?

The default parameters represent the normal fabrication process for SiEPIC e-beam runs, but we can change those defaults if we want to test process variations.

We use the defaults to configure our project:

[3]:
pf.config.default_technology = siepic.ebeam()

That’s it! In 3 lines, we have loaded SiEPIC’s e-beam PDK and configured it to be the default technology in this PhotonForge project.

Note: PhotonForge supports a growing list of PDKs, and we are happy to assist you in creating your own custom technology if you require a specific process!

Technology Contents

Now that we have loaded the e-beam PDK, we can inspect this technology to find its definitions.

[4]:
pf.config.default_technology
[4]:
Name: SiEPIC EBeam
Version: 0.4.32
Layers
NameLayerDescriptionColorPattern
Si(1, 0)Waveguides#ff80a818\\
PinRec(1, 10)SiEPIC#00408018/
PinRecM(1, 11)SiEPIC#00408018/
Si_Litho193nm(1, 69)Waveguides#cc80a818\
Waveguide(1, 99)Waveguides#ff80a818\
Si slab(2, 0)Waveguides#80a8ff18/
SiN(4, 0)Waveguides#a6cee318\\
Oxide open (to BOX)(6, 0)Waveguides#ffae0018\
Text(10, 0)#0000ff18\
M1_heater(11, 0)Metal#ebc63418xx
M2_router(12, 0)Metal#90857018xx
M_Open(13, 0)Metal#3471eb18xx
Si N(20, 0)Doping#7000ff18\\
Si N++(24, 0)Doping#0000ff18:
VC(40, 0)Metal#3a027f18xx
DevRec(68, 0)SiEPIC#00408018hollow
FbrTgt(81, 0)SiEPIC#00408018/
FloorPlan(99, 0)Misc#8000ff18hollow
SEM(200, 0)Misc#ff00ff18\
Deep Trench(201, 0)Misc#c0c0c018solid
Keep out(202, 0)Misc#a0a0c018//
Isolation Trench(203, 0)Misc#c0c0c018solid
Dicing(210, 0)Misc#a0a0c018solid
Chip design area(290, 0)Misc#80005718hollow
FDTD(733, 0)SiEPIC#80005718hollow
BlackBox(998, 0)SiEPIC#00408018solid
Errors(999, 0)SiEPIC#00008018/
Extrusion Specs
#MaskLimits (μm)Sidewal (°)Opt. MediumElec. Medium
0'Oxide open (to BOX)'0, inf0Medium(permittivity=1.0)Medium(permittivity=1.0)
1'Si'0, 0.220cSi_Li1993_293KSi
2'Si slab'0, 0.090cSi_Li1993_293KSi
3'SiN'0, 0.40Si3N4_Luke2015_PMLStableSi3N4
4
'M2_router' +…… 'M1_heater'
2.42, 2.620W_Werner2009
LossyMetalMedium(fit_param=……{'attrs': {}, 'max_num_poles': 16, 'tolerance_rms': 0.001, 'frequency_sampling_points': 20, 'log_sampling': True, 'type': 'SurfaceImpedanceFitterParam'}, frequency_range=(100000000.0, 200000000000.0), conductivity=1.6)
5'M2_router'2.62, 3.020Au_JohnsonChristy1972
LossyMetalMedium(fit_param=……{'attrs': {}, 'max_num_poles': 16, 'tolerance_rms': 0.001, 'frequency_sampling_points': 20, 'log_sampling': True, 'type': 'SurfaceImpedanceFitterParam'}, frequency_range=(100000000.0, 200000000000.0), conductivity=17.0)
6'M_Open'3.02, inf0Medium(permittivity=1.0)Medium(permittivity=1.0)
7
'Deep Trench' +…… 'Isolation Trench' + 'Dicing'
-inf, inf0Medium(permittivity=1.0)Medium(permittivity=1.0)
Ports
NameClassificationDescriptionWidth (μm)Limits (μm)Radius (μm)ModesTarget n_effPath profiles (μm)Voltage pathCurrent path
MM_SiN_TE_1550_3000optical
Multimode SiN Strip TE 1550 nm,…… w=3000 nm
8-2.5, 2.9072.1'SiN': 3
MM_TE_1550_2000optical
Multimode Strip TE 1550 nm,…… w=2000 nm
6-2, 2.220123.5'Si': 2
MM_TE_1550_3000optical
Multimode Strip TE 1550 nm,…… w=3000 nm
6-2, 2.220173.5'Si': 3
Rib_TE_1310_350optical
Rib (90 nm slab) TE 1310 nm,…… w=350 nm
2.35-1, 1.22013.5
'Si slab': 3,…… 'Si': 0.35
Rib_TE_1550_500optical
Rib (90 nm slab) TE 1550 nm,…… w=500 nm
2.5-1, 1.22013.5
'Si slab': 3,…… 'Si': 0.5
SiN_TE-TM_1550_1000opticalSiN Strip TM 1550 nm, w=1000 nm3-1.5, 1.9022.1'SiN': 1
SiN_TE_1310_750opticalSiN Strip TE 1310 nm, w=750 nm3-1, 1.4012.1'SiN': 0.75
SiN_TE_1310_800opticalSiN Strip TE 1310 nm, w=800 nm3-1, 1.4012.1'SiN': 0.8
SiN_TE_1550_1000opticalSiN Strip TE 1550 nm, w=1000 nm3-1, 1.4012.1'SiN': 1
SiN_TE_1550_750opticalSiN Strip TE 1550 nm, w=750 nm3-1, 1.4012.1'SiN': 0.75
SiN_TE_1550_800opticalSiN Strip TE 1550 nm, w=800 nm3-1, 1.4012.1'SiN': 0.8
SiN_TE_895_450opticalSiN Strip TE 895 nm, w=450 nm2-1, 1.4012.1'SiN': 0.45
SiN_TM_1310_750opticalSiN Strip TM 1310 nm, w=750 nm3-1.5, 1.901 + 1 (TM)2.1'SiN': 0.75
SiN_TM_1550_1000opticalSiN Strip TM 1550 nm, w=1000 nm3-1.5, 1.901 + 1 (TM)2.1'SiN': 1
Slot_TE_1550_500optical
Slot TE 1550 nm, w=500 nm,…… gap=100nm
2-1, 1.22013.5
'Si': 0.2 (+0.15),…… 'Si': 0.2 (-0.15)
TE-TM_1550_450opticalStrip TE-TM 1550, w=450 nm2-1, 1.22023.5'Si': 0.45
TE_1310_350opticalStrip TE 1310 nm, w=350 nm2-1, 1.22013.5'Si': 0.35
TE_1310_410opticalStrip TE 1310 nm, w=410 nm2-1, 1.22013.5'Si': 0.41
TE_1550_500opticalStrip TE 1550 nm, w=500 nm2-1, 1.22013.5'Si': 0.5
TM_1310_350opticalStrip TM 1310 nm, w=350 nm2-1, 1.2201 + 1 (TM)3.5'Si': 0.35
TM_1550_500opticalStrip TM 1550 nm, w=500 nm2.5-1, 1.2201 + 1 (TM)3.5'Si': 0.5
eskid_TE_1550opticaleskid TE 15503.31-1, 1.22013.5
'Si': 0.06 (-0.625),…… 'Si': 0.06 (+0.625), 'Si': 0.06 (+0.505), 'Si': 0.06 (-0.385), 'Si': 0.06 (-0.265), 'Si': 0.06 (+0.385), 'Si': 0.06 (+0.265), 'Si': 0.06 (-0.505), 'Si': 0.35
Background medium
  • Optical: SiO2_Palik_Lossless
  • Electrical: SiO2
Connections: []

Besides a name and version, all technologies contain 5 main attributes:

In most cases, the layer and port dictionaries are the most used when creating components. These are the layers defined in the SiEPIC e-beam PDK:

[5]:
pf.config.default_technology.layers
[5]:
NameLayerDescriptionColorPattern
Si(1, 0)Waveguides#ff80a818\\
PinRec(1, 10)SiEPIC#00408018/
PinRecM(1, 11)SiEPIC#00408018/
Si_Litho193nm(1, 69)Waveguides#cc80a818\
Waveguide(1, 99)Waveguides#ff80a818\
Si slab(2, 0)Waveguides#80a8ff18/
SiN(4, 0)Waveguides#a6cee318\\
Oxide open (to BOX)(6, 0)Waveguides#ffae0018\
Text(10, 0)#0000ff18\
M1_heater(11, 0)Metal#ebc63418xx
M2_router(12, 0)Metal#90857018xx
M_Open(13, 0)Metal#3471eb18xx
Si N(20, 0)Doping#7000ff18\\
Si N++(24, 0)Doping#0000ff18:
VC(40, 0)Metal#3a027f18xx
DevRec(68, 0)SiEPIC#00408018hollow
FbrTgt(81, 0)SiEPIC#00408018/
FloorPlan(99, 0)Misc#8000ff18hollow
SEM(200, 0)Misc#ff00ff18\
Deep Trench(201, 0)Misc#c0c0c018solid
Keep out(202, 0)Misc#a0a0c018//
Isolation Trench(203, 0)Misc#c0c0c018solid
Dicing(210, 0)Misc#a0a0c018solid
Chip design area(290, 0)Misc#80005718hollow
FDTD(733, 0)SiEPIC#80005718hollow
BlackBox(998, 0)SiEPIC#00408018solid
Errors(999, 0)SiEPIC#00008018/

Any place where a layer must be specified will accept a layer name instead of the layer tuple and use this dictionary to match the name. More information about layers can be found in the layers guide.

Similarly, we can take a look at the available ports:

[6]:
pf.config.default_technology.ports
[6]:
NameClassificationDescriptionWidth (μm)Limits (μm)Radius (μm)ModesTarget n_effPath profiles (μm)Voltage pathCurrent path
MM_SiN_TE_1550_3000optical
Multimode SiN Strip TE 1550 nm,…… w=3000 nm
8-2.5, 2.9072.1'SiN': 3
MM_TE_1550_2000optical
Multimode Strip TE 1550 nm,…… w=2000 nm
6-2, 2.220123.5'Si': 2
MM_TE_1550_3000optical
Multimode Strip TE 1550 nm,…… w=3000 nm
6-2, 2.220173.5'Si': 3
Rib_TE_1310_350optical
Rib (90 nm slab) TE 1310 nm,…… w=350 nm
2.35-1, 1.22013.5
'Si slab': 3,…… 'Si': 0.35
Rib_TE_1550_500optical
Rib (90 nm slab) TE 1550 nm,…… w=500 nm
2.5-1, 1.22013.5
'Si slab': 3,…… 'Si': 0.5
SiN_TE-TM_1550_1000opticalSiN Strip TM 1550 nm, w=1000 nm3-1.5, 1.9022.1'SiN': 1
SiN_TE_1310_750opticalSiN Strip TE 1310 nm, w=750 nm3-1, 1.4012.1'SiN': 0.75
SiN_TE_1310_800opticalSiN Strip TE 1310 nm, w=800 nm3-1, 1.4012.1'SiN': 0.8
SiN_TE_1550_1000opticalSiN Strip TE 1550 nm, w=1000 nm3-1, 1.4012.1'SiN': 1
SiN_TE_1550_750opticalSiN Strip TE 1550 nm, w=750 nm3-1, 1.4012.1'SiN': 0.75
SiN_TE_1550_800opticalSiN Strip TE 1550 nm, w=800 nm3-1, 1.4012.1'SiN': 0.8
SiN_TE_895_450opticalSiN Strip TE 895 nm, w=450 nm2-1, 1.4012.1'SiN': 0.45
SiN_TM_1310_750opticalSiN Strip TM 1310 nm, w=750 nm3-1.5, 1.901 + 1 (TM)2.1'SiN': 0.75
SiN_TM_1550_1000opticalSiN Strip TM 1550 nm, w=1000 nm3-1.5, 1.901 + 1 (TM)2.1'SiN': 1
Slot_TE_1550_500optical
Slot TE 1550 nm, w=500 nm,…… gap=100nm
2-1, 1.22013.5
'Si': 0.2 (+0.15),…… 'Si': 0.2 (-0.15)
TE-TM_1550_450opticalStrip TE-TM 1550, w=450 nm2-1, 1.22023.5'Si': 0.45
TE_1310_350opticalStrip TE 1310 nm, w=350 nm2-1, 1.22013.5'Si': 0.35
TE_1310_410opticalStrip TE 1310 nm, w=410 nm2-1, 1.22013.5'Si': 0.41
TE_1550_500opticalStrip TE 1550 nm, w=500 nm2-1, 1.22013.5'Si': 0.5
TM_1310_350opticalStrip TM 1310 nm, w=350 nm2-1, 1.2201 + 1 (TM)3.5'Si': 0.35
TM_1550_500opticalStrip TM 1550 nm, w=500 nm2.5-1, 1.2201 + 1 (TM)3.5'Si': 0.5
eskid_TE_1550opticaleskid TE 15503.31-1, 1.22013.5
'Si': 0.06 (-0.625),…… 'Si': 0.06 (+0.625), 'Si': 0.06 (+0.505), 'Si': 0.06 (-0.385), 'Si': 0.06 (-0.265), 'Si': 0.06 (+0.385), 'Si': 0.06 (+0.265), 'Si': 0.06 (-0.505), 'Si': 0.35

If required, new port specifications can also be included to allow us to work with custom waveguide interconnections.