Skip to content

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 LayerSpec does 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

MethodDescription
add_connectionAdd an electrical connection between layers to this technology.
add_layerAdd a layer specification to this technology.
add_portAdd a port specification to this technology.
copyCreate a copy of this technology.
extrusion_layersGet the set of all layers used by any extrusion specification in this
get_background_mediumReturn electrical or optical background medium for this technology.
insert_extrusion_specInsert an extrusion specification to this technology.
pop_extrusion_specRemove an extrusion specification from this technology.
remove_connectionRemove an electrical connection between layers in this technology.
remove_layerRemove a layer specification from this technology.
remove_portRemove a port specification from this technology.
updateUpdate this technology if it was created as a parametric technology.

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(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(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(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(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

frequency_classification.

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(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(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(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(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(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.

AttributeDescription
background_mediumMediumType | dict[Literal[‘optical’, ‘electrical’], MediumType]: Background medium.
connected_layerslist[tuple[tuple[int, int], tuple[int, int]]]: Layer pairs whose geometry connects across layers. Extraction treats the layers of each pair as conductive.
extrusion_specslist[ExtrusionSpec]: Extrusion specifications for this technology.
layersdict[str, LayerSpec]: Layer definitions for this technology.
namestr: Technology name.
parametric_functionstr: Function used to update a parametric technology.
parametric_kwargsdict[str, object]: Keyword arguments used to update a parametric technology.
portsdict[str, PortSpec]: Port specifications for this technology.
propertiesProperties: Object properties.
random_variableslist[RandomVariable]: Random variables associated to this technology’s parameters.
versionstr: Technology version.

MediumType | dict[Literal[‘optical’, ‘electrical’], MediumType]: Background medium.

list[tuple[tuple[int, int], tuple[int, int]]]: Layer pairs whose geometry connects across layers. Extraction treats the layers of each pair as conductive.

list[ExtrusionSpec]: Extrusion specifications for this technology.

dict[str, LayerSpec]: Layer definitions for this technology.

str: Technology name.

str: Function used to update a parametric technology.

dict[str, object]: Keyword arguments used to update a parametric technology.

dict[str, PortSpec]: Port specifications for this technology.

Properties: Object properties.

list[RandomVariable]: Random variables associated to this technology’s parameters.

str: Technology version.