kqcircuits.simulations.export.cross_section.cut_simulation

class kqcircuits.simulations.export.cross_section.cut_simulation.CutSimulation(layout, **kwargs)[source]

Bases: CrossSectionSimulation

Class for cross-section simulations with geometry generated from a 3D Simulation.

By default, renames the layers such that partition regions of source simulation are basically ignored. The region_map can be used to define new partition regions or copy partition regions from source simulation.

Adds interface layers ‘ma’, ‘ms’, and ‘sa’ if tls_layer_thickness and tls_layer_material are set properly.

Initialize a CrossSectionSimulation.

The initializer parses parameters, creates a top cell, and then calls self.build to create the simulation geometry.

Parameters:

layout – the layout on which to create the simulation

Keyword Arguments:

**kwargs – Any parameter can be passed as a keyword argument.

build()[source]

Build simulation geometry.

This method is to be overridden, and the overriding method should create the geometry to be simulated.

process_geometry()[source]
limited_region(box: DBox)[source]
insert_cross_section_layers()[source]

Insert cross sections from each layer of self.source_sim into self.layers. Thicken sheet metals by self.metal_height.

insert_sheet_metals(sheet_metals: dict[str, dict[str, Any]])[source]

Inserts sheet metal layers thickened by self.metal_height on vacuum side.

get_partition_regions() dict[str, Region][source]

Return partition regions defined by self.region_map.

Returns:

dictionary containing the layer name suffixes as keys and regions as values.

apply_partition_regions(regions: dict[str, Region])[source]

Partition every non-metal layer into regions.

Parameters:

regions – dictionary containing the layer name suffixes as keys and regions as values.

regroup_layers()[source]

Group and rename layers such that a layer name doesn’t start other layer name.

For example, if there are two source layers ‘vacuum’, ‘vacuum_part’, then both are merged into ‘vacuum’ layer.

insert_tls_layers()[source]

Insert TLS interface layers into the model.

get_metals_vacuums_substrates() tuple[list[str], list[str], list[str]][source]

Return layer names for metals, vacuums, and substrates.

sum_region(layers)[source]

Return union of regions of given layers.

subtract_region(layers, region)[source]

Subtract region from given layers.

get_material_dict()[source]

Override CrossSectionSimulation method to combine source simulation and self materials

get_parameters()[source]

Override CrossSectionSimulation method to combine source simulation and self parameters

PCell parameters:

  • source_sim (None) - Instance of Simulation subclass from which the cross section is generated, default=None

  • cut_start (Shape) - Start point of the cut segment, default=0,0

  • cut_end (Shape) - End point of the cut segment, default=100,0

  • cut_bottom (Double) - Bottom of the cross section, default=-1e+30, unit=µm

  • cut_top (Double) - Top of the cross section, default=1e+30, unit=µm

  • region_map (String) - The region definition is a list of pya.DBox or string instances. Use string instance to copy partition region from the source simulation., default={}

  • metal_height (Double) - Thickness of metal layer if sheet in the source simulation., default=0.2, unit=µm

  • tls_layer_thickness (List) - Thickness of TLS interface layers (MA, MS, and SA, respectively), default=[0.0], unit=µm

  • tls_layer_material (List) - Use only keywords introduced in material_dict. Valid only if tls_sheet_approximation=False., default=['vacuum', 'silicon', 'silicon']

../_images/kqcircuits.simulations.export.cross_section.cut_simulation.png