kqcircuits.util.merge.merge_layers(layout, cell_list, layer_1, layer_2, layer_merged)[source]

Inserts shapes in layer_1 and layer_2 to layer_merged.

  • layout – Layout of the cells

  • cell_list – list of Cells whose shapes are merged (recursively)

  • layer_1 – LayerInfo of the layer to be merged with layer_2

  • layer_2 – LayerInfo of the layer to be merged with layer_1

  • layer_merged – LayerInfo of the layer where the merged shapes are inserted

kqcircuits.util.merge.merge_layout_layers_on_face(layout, cell, face, tolerance=0.004)[source]

Creates “base_metal_gap” layer on given face.

The layer shape is combination of three layers using subtract (-) and insert (+) operations:

“base_metal_gap” = “base_metal_gap_wo_grid” - “base_metal_addition” + “ground_grid”

  • layout – Layout containing the cell

  • cell – Cell to merge

  • face – face dictionary containing layer names as keys and layer info objects as values

  • tolerance – gap length to be ignored while merging (µm)

kqcircuits.util.merge.convert_child_instances_to_static(layout: klayout.dbcore.Layout, cell: klayout.dbcore.Cell, only_elements: bool = True, prune: bool = True)[source]

Convert child instances of a cell to static.

This function avoids duplicating cells: in case there are multiple instances pointing to the same PCell, only one static cell is created and all instances are pointed to that cell. This is in contrast to calling Instance.convert_to_static() on each instance separately.

  • layout – the Layout that contains the cell

  • cell – static cell that may contain PCell instances to be converted

  • only_elements – if True (default), only PCells which are descendants of Element are made static

  • prune – if True, the PCells are deleted if they are no longer used anywhere in the layout.