Technology
Technology( name, version, layers, extrusion_specs, ports, background_medium, connected_layers=(),)Technology specifications.
Args
- name (str): Technology name.
- version (str): Technology version string.
- layers (dict[str, LayerSpec]): Layer specifications indexed by name.
- extrusion_specs (Iterable[ExtrusionSpec]): Extrusion specifications.
- ports (dict[str, PortSpec]): Port specifications indexed by name.
- background_medium (MediumType | dict[Literal[‘optical’, ‘electrical’], MediumType]): Tidy3D medium used for simulation background. Different media can be used for optical and electrical frequencies by using a dictionary (see note below).
- connected_layers (Iterable[tuple[tuple[int, int], tuple[int, int]]]): Layer pairs whose geometry connects across layers. Extraction treats the layers of each pair as conductive, warning about any that their
LayerSpecdoes not declare conductive.
Example
>>> layers = {... "Si": pf.LayerSpec((1, 0), "Silicon layer", "blue"),... "Metal": pf.LayerSpec((2, 0), "Routing metal", "red", conductive=True),... "Via": pf.LayerSpec((2, 1), "Metal via", "orange", conductive=True),... }>>> extrusion_specs = [... pf.ExtrusionSpec(... pf.MaskSpec((1, 0)),... td.Medium(permittivity=3.48**2),... (0, 0.250),... )... ]>>> port_specs = {... "STE": pf.PortSpec(... "Single mode strip",... 1.5,... (-0.5, 0.75),... path_profiles=[(0.45, 0, (1, 0))],... )... }>>> connected_layers = {((2, 0), (2, 1))}>>> technology = pf.Technology(... "Demo technology",... "1.0",... layers,... extrusion_specs,... port_specs,... td.Medium(permittivity=1.45**2),... connected_layers=connected_layers,... )Note
The medium used for simulations in optical and electrical frequency
ranges (see frequency_classification) can be set
individually with:
>>> media = {... "optical": td.Medium(permittivity=1.45**2),... "electrical": td.Medium(permittivity=4.2),... }>>> technology = pf.Technology(... "Demo technology",... "1.0",... layers,... extrusion_specs,... port_specs,... background_medium=media,... connected_layers=connected_layers,... )See Also
Methods
Section titled “Methods”| Method | Description |
|---|---|
add_connection | Add an electrical connection between layers to this technology. |
add_layer | Add a layer specification to this technology. |
add_port | Add a port specification to this technology. |
copy | Create a copy of this technology. |
extrusion_layers | Get the set of all layers used by any extrusion specification in this |
get_background_medium | Return electrical or optical background medium for this technology. |
insert_extrusion_spec | Insert an extrusion specification to this technology. |
pop_extrusion_spec | Remove an extrusion specification from this technology. |
remove_connection | Remove an electrical connection between layers in this technology. |
remove_layer | Remove a layer specification from this technology. |
remove_port | Remove a port specification from this technology. |
update | Update this technology if it was created as a parametric technology. |
add_connection
Section titled “add_connection”add_connection(self, layer1, layer2)Add an electrical connection between layers to this technology.
Matching layer specifications are marked conductive. Passing the same layer twice raises an error: same-layer geometry always connects, so it is not a contact rule.
Args
- layer1 (str | tuple[int, int]): First connected layer.
- layer2 (str | tuple[int, int]): Second connected layer.
Returns
Technology: This object.
add_layer
Section titled “add_layer”add_layer(self, layer_name, layer_spec)Add a layer specification to this technology.
Args
- layer_name (str): Name of the layer specification. If one with the same name already exists, it will be replaced.
- layer_spec (LayerSpec): Specification to be added.
Returns
Technology: This object.
add_port
Section titled “add_port”add_port(self, port_name, port_spec)Add a port specification to this technology.
Args
- port_name (str): Name of the port specification. If one with the same name already exists, it will be replaced.
- port_spec (PortSpec): Specification to be added.
Returns
Technology: This object.
copy(self, deep=False)Create a copy of this technology.
Args
- deep (bool): If set, creates copies of all extrusion specifiactions. Otherwise, only a shallow copy of this technology is created.
Returns
Technology: New copy.
extrusion_layers
Section titled “extrusion_layers”extrusion_layers(self)Get the set of all layers used by any extrusion specification in this technology.
Returns
set[tuple[int, int]]: Layer set.
get_background_medium
Section titled “get_background_medium”get_background_medium(self, classification)Return electrical or optical background medium for this technology.
Args
- classification (Literal[“electrical”, “optical”]): Classification of the desired medium.
Returns
MediumType: Background medium.
See Also
insert_extrusion_spec
Section titled “insert_extrusion_spec”insert_extrusion_spec(self, index, extrusion_spec)Insert an extrusion specification to this technology.
Args
- index (int): Index before which the extrusion specification will be inserted.
- extrusion_spec (ExtrusionSpec): Specification to be added.
Returns
Technology: This object.
pop_extrusion_spec
Section titled “pop_extrusion_spec”pop_extrusion_spec(self, index=-1)Remove an extrusion specification from this technology.
Args
- index (int): Index of the item to be removed.
Returns
ExtrusionSpec: Removed extrusion specification.
remove_connection
Section titled “remove_connection”remove_connection(self, layer1, layer2)Remove an electrical connection between layers in this technology.
Args
- layer1 (str | tuple[int, int]): First connected layer.
- layer2 (str | tuple[int, int]): Second connected layer.
Returns
Technology: This object.
remove_layer
Section titled “remove_layer”remove_layer(self, layer_name)Remove a layer specification from this technology.
Args
- layer_name (str): Name of the layer to be removed.
Returns
Technology: This object.
remove_port
Section titled “remove_port”remove_port(self, port_name)Remove a port specification from this technology.
Args
- port_name (str): Name of the port to be removed.
Returns
Technology: This object.
update
Section titled “update”update(self, *args, **kwargs)Update this technology if it was created as a parametric technology.
All contents of the technology are updated with the contents from the updated version. object contents or modifications introduced after the technology creation (outside of the original parametric function) are not propagated.
Args
- *args (object): Positional arguments to the parametric technology function.
- **kwargs (object): Keyword arguments to the parametric technology function.
Returns
Technology: This technology.
Note
The original keyword arguments used to generate the technology are
stored and updated with the passed kwargs. This updated version
is used in the function call and will be stored for future updates.
Positional arguments are not stored.
Attributes
Section titled “Attributes”| Attribute | Description |
|---|---|
background_medium | MediumType | dict[Literal[‘optical’, ‘electrical’], MediumType]: Background medium. |
connected_layers | list[tuple[tuple[int, int], tuple[int, int]]]: Layer pairs whose geometry connects across layers. Extraction treats the layers of each pair as conductive. |
extrusion_specs | list[ExtrusionSpec]: Extrusion specifications for this technology. |
layers | dict[str, LayerSpec]: Layer definitions for this technology. |
name | str: Technology name. |
parametric_function | str: Function used to update a parametric technology. |
parametric_kwargs | dict[str, object]: Keyword arguments used to update a parametric technology. |
ports | dict[str, PortSpec]: Port specifications for this technology. |
properties | Properties: Object properties. |
random_variables | list[RandomVariable]: Random variables associated to this technology’s parameters. |
version | str: Technology version. |
background_medium
Section titled “background_medium”MediumType | dict[Literal[‘optical’, ‘electrical’], MediumType]: Background medium.
connected_layers
Section titled “connected_layers”list[tuple[tuple[int, int], tuple[int, int]]]: Layer pairs whose geometry connects across layers. Extraction treats the layers of each pair as conductive.
extrusion_specs
Section titled “extrusion_specs”list[ExtrusionSpec]: Extrusion specifications for this technology.
layers
Section titled “layers”dict[str, LayerSpec]: Layer definitions for this technology.
str: Technology name.
parametric_function
Section titled “parametric_function”str: Function used to update a parametric technology.
parametric_kwargs
Section titled “parametric_kwargs”dict[str, object]: Keyword arguments used to update a parametric technology.
dict[str, PortSpec]: Port specifications for this technology.
properties
Section titled “properties”Properties: Object properties.
random_variables
Section titled “random_variables”list[RandomVariable]: Random variables associated to this technology’s parameters.
version
Section titled “version”str: Technology version.