ipkiss3.all.device_sim.SimulationGeometry
- class ipkiss3.all.device_sim.SimulationGeometry
Defines the geometry of the electromagnetic simulation.
- Parameters:
- layout: required
LayoutView of the component to simulate
- waveguide_growth: float and Real, number and number >= 0, optional
Distance to grow the waveguides at their unconnected ports.
- bounding_box: optional
Bounding box of the simulation. Default is [None, None, None]. [None, None, (-2.0, 10.0)] means to derive x and y span from the component, but use (-2.0, 10.0) in the z-direction (out-of-plane).
- layers: optional
List of layers that need to be virtually fabricated. By default all layers used in the layout are virtually fabricated. Setting this overrides the behavior of ‘excluded_layers’
- excluded_layers: optional
List of layers that need to be excluded. Default is not to exclude any layer.
- process_flow: optional
The process flow used for virtual fabrication. By default use TECH.VFABRICATION.PROCESS_FLOW. Can be changed to customize the process flow, in order to simulate various changes to the process.
Examples
import si_fab.all as pdk # noqa: F401 import ipkiss3.all as i3 class LucedaPhotonicsText(i3.PCell): class Layout(i3.LayoutView): def _generate_elements(self, elems): elems += i3.PolygonText( layer=i3.TECH.PPLAYER.SI, coordinate=(0.0, 15.0), text="Luceda Photonics", alignment=(i3.TEXT.ALIGN.CENTER, i3.TEXT.ALIGN.BOTTOM), font=i3.TEXT.FONT.DEFAULT, height=8, ).elements return elems luceda = LucedaPhotonicsText() layout = luceda.Layout() layout.visualize_2d() sim_geom = i3.device_sim.SimulationGeometry(layout=layout) # Write the geometry to an OBJ and MTL file: sim_geom.write_obj(filename="luceda.obj") # Write the geometry to multiple STL files into a 'luceda' folder with the "luceda" prefix, # one STL file per material: sim_geom.write_stl(folder_name="luceda", prefix="luceda") # Write the geometry to multiple STL files into a 'luceda_prisms' folder, one STL file per Prism: sim_geom.write_stl(folder_name="luceda_prisms", only_prisms=True)
- write_obj(filename, unit=<ipkiss3.technology.TechValue object>, opaque=False)
Writes a simulation geometry to a Wavefront OBJ and an MTL file.
- Parameters:
- filename: str
Name of the file. Needs to end with “.obj”, the MTL file will have the same name except with “.mtl”
- unit: positive number
The User units to be used in the OBJ file. By default, the value is extracted from TECH.METRICS.UNIT.
- opaque: bool = False
If True, will make every material opaque. Default is False.
- write_stl(folder_name, prefix='', unit=<ipkiss3.technology.TechValue object>, only_prisms=False)
Writes a simulation geometry to STL files, one file for each material in the geometry. When ‘only_prisms’ is True, it will write the individual prisms to STL files instead.
- Parameters:
- folder_name: string
the name of the folder where the STLs will be written to.
- prefix: string
the prefix of names of the STL files. By default, they will have no prefix.
- unit: positive number
The User units to be used in the STL file. By default, the value is extracted from TECH.METRICS.UNIT.
- only_prisms: bool = False
When only_prisms is True, each Prism in the simulation geometry is individually written to an STL file. Default is False.