kqcircuits.chips.chip

class kqcircuits.chips.chip.Chip[source]

Bases: kqcircuits.elements.element.Element

Base PCell declaration for chips.

Produces labels in pixel corners, dicing edge, markers and optionally grid for all chip faces. Contains methods for producing launchers in face 0 and connectors between faces 0 and 1.

LIBRARY_NAME = 'Chip Library'
LIBRARY_DESCRIPTION = 'Superconducting quantum circuit library for chips.'
LIBRARY_PATH = 'chips'
display_text_impl()[source]

default implementation

can_create_from_shape_impl()[source]

default implementation

parameters_from_shape_impl()[source]

default implementation

transformation_from_shape_impl()[source]

default implementation

static get_launcher_assignments(chip_cell)[source]

Returns a dictionary of launcher assignments (port_id: launcher_id) for the chip.

Parameters

chip_cell – Cell object of the chip

produce_junction_tests(junction_type='Manhattan')[source]

Produces junction test pads in the chip.

Parameters

junction_type – A string defining the type of junction used in the test pads.

produce_opt_lit_tests()[source]

Produces optical lithography test stripes at chip corners.

produce_ground_grid()[source]

Produces ground grid on all faces with ChipFrames.

This method is called in build(). Override this method to produce a different set of chip frames.

produce_ground_on_face_grid(box, face_id)[source]

Produces ground grid in the given face of the chip.

Parameters
  • box – pya.DBox within which the grid is created

  • face_id (int) – ID of the face where the grid is created

produce_frame(frame_parameters, trans=r0 0, 0)[source]

Produces a chip frame and markers for the given face.

Parameters
  • frame_parameters – PCell parameters for the chip frame

  • trans – DTrans for the chip frame, default=pya.DTrans()

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

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

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

merge_layout_layers()[source]

Creates “base_metal_gap” layers on all faces.

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”

This method is called in build(). Override this method to produce a different set of chip frames.

produce_structures()[source]

Produces chip frame and possibly other structures before the ground grid.

This method is called in build(). Override this method to produce a different set of chip frames.

get_box(face=0)[source]

Get the chip frame box for the specified face, correctly resolving defaults.

Parameters

face – Integer specifying face, default 0

Returns: pya.DBox box for the specified face

get_ground_bump_locations(bump_box)[source]

Define the locations for a grid. This method returns the full grid.

Parameters

bump_box – DBox specifying the region that should be filled with ground bumps

Returns: list of DPoint coordinates where a ground bump can be placed

post_build()[source]

Child classes re-define this method for post-build operations

produce_launchers(sampleholder_type, launcher_assignments=None, enabled=None, face_id=0)[source]

Produces launchers for typical sample holders and sets chip size (self.box) accordingly.

This is a wrapper around produce_n_launchers() to generate typical launcher configurations.

Parameters
  • sampleholder_type – name of the sample holder type

  • launcher_assignments – dictionary of (port_id: name) that assigns a name to some of the launchers

  • enabled – list of enabled launchers, empty means all

  • face_id – index of face_ids in which to insert the launchers

Returns

launchers as a dictionary {name: (point, heading, distance from chip edge)}

produce_n_launchers(n, launcher_type, launcher_width, launcher_gap, launcher_indent, pad_pitch, launcher_assignments=None, port_id_remap=None, launcher_frame_gap=None, enabled=None, chip_box=None, face_id=0)[source]

Produces n launchers at default locations and optionally changes the chip size.

Launcher pads are equally distributed around the chip. This may be overridden by specifying the number of pads desired per chip side if n is an array of 4 numbers.

Pads not in launcher_assignments are disabled by default. The enabled argument may override this. If neither argument is defined then all pads are enabled with default names.

Parameters
  • n – number of launcher pads or an array of pad numbers per side

  • launcher_type – type of the launchers, “RF” or “DC”

  • launcher_width – width of the launchers

  • launcher_gap – pad to ground gap of the launchers

  • launcher_indent – distance between the chip edge and pad port

  • pad_pitch – distance between pad centers

  • launcher_frame_gap – gap of the launcher pad at the frame

  • launcher_assignments – dictionary of (port_id: name) that assigns a name to some of the launchers

  • port_id_remap – by default, left-most top edge launcher has port_id set to 1 and port_ids increment for other launchers in clockwise order. port_id_remap is a dictionary [1..n] -> [1..n] such that for port_id_remap[x] = y, x is the port_id of the launcher in default order and y is the port_id of that launcher in your desired order. For example, to flip the launcher order by chip’s y-axis, set port_id_remap to {i+1: ((n - i + n/4-1) % n) + 1 for i in range(n)}

  • enabled – optional list of enabled launchers

  • chip_box – optionally changes the chip size (self.box)

  • face_id – index of face_ids in which to insert the launchers

Returns

launchers as a dictionary {name: (point, heading, distance from chip edge)}

make_grid_locations(box, delta_x=100, delta_y=100)[source]

Define the locations for a grid. This method returns the full grid.

Parameters
  • box – DBox specifying a region for a grid

  • delta_x – Int or float specifying the grid separation along the x dimension

  • delta_y – Int or float specifying the grid separation along the y dimension

Returns: list of DPoint coordinates for the grid.

get_ground_tsv_locations(tsv_box)[source]

Define the locations for a grid. This method returns the full grid.

Parameters

box – DBox specifying the region that should be filled with TSVs

Returns: list of DPoint coordinates where a ground bump can be placed

insert_tsvs(tsv, translations)[source]

Insert the tsv element at locations specified in the translations list

Parameters
  • tsv – An instance of a TSV class

  • translations – A list of pya.DVector elements specifying

PCell parameters:

  • with_grid (Boolean) - Make ground plane grid, default=False

  • merge_base_metal_gap (Boolean) - Merge grid and other gaps into base_metal_gap layer, default=False

  • a_capped (Double) - Width of center conductor in the capped region (μm), default=10, unit=μm

  • b_capped (Double) - Width of gap in the capped region , default=10, unit=μm

  • with_gnd_tsvs (Boolean) - Make ground TSVs, default=False

  • tsv_grid_spacing (Double) - TSV grid distance (center to center), default=300, unit=μm

  • tsv_edge_to_tsv_edge_separation (Double) - Ground TSV clearance to manually placed TSVs (edge to edge), default=250, unit=μm

  • tsv_edge_to_nearest_element (Double) - Ground TSV clearance to other elements (edge to edge), default=100, unit=μm

  • edge_from_tsv (Double) - Ground TSV center clearance to chip edge, default=550, unit=μm

  • with_face1_gnd_tsvs (Boolean) - Make ground TSVs on the top face, default=False

  • with_gnd_bumps (Boolean) - Make ground bumps, default=False

  • bump_grid_spacing (Double) - Bump grid distance (center to center), default=120, unit=μm

  • bump_edge_to_bump_edge_separation (Double) - In bump clearance to manually placed Bumps (edge to edge), default=95, unit=μm

  • edge_from_bump (Double) - Spacing between bump and chip edge, default=550, unit=μm

  • frames_enabled (List) - List of face ids (integers) for which a ChipFrame is drawn, default=[0]

  • frames_marker_dist (List) - Marker distance from edge for each chip frame, default=[1500, 1000], unit=[μm]

  • frames_diagonal_squares (List) - Number of diagonal marker squares for each chip frame, default=[10, 2]

  • frames_mirrored (List) - List of booleans specifying if the frame is mirrored for each chip frame, default=[False, True]

  • frames_dice_width (List) - Dicing street width for each chip frame, default=[200, 140], unit=[μm]

  • face_boxes (Shape) - List of chip frame sizes (type DBox) for each face. None uses the chips box parameter., default=[None, (1500,1500;8500,8500)]

  • dice_grid_margin (Double) - Margin of the ground grid avoidance layer for dicing edge, default=100

  • name_mask (String) - Name of the mask, default=M000

  • name_chip (String) - Name of the chip, default=CTest

  • name_copy (String) - Name of the copy, default=None

  • name_brand (String) - Name of the brand, default=IQM

  • marker_types (List) - Marker type for each chip corner, clockwise starting from lower left, default=['Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard', 'Marker Standard']

  • box (Shape) - Bounding box of the chip frame, default=(0,0;10000,10000)

  • connector_type (String) - Connector type, default=Coax, choices=['Single', 'GSG', 'Coax']

  • tsv_elliptical_width (Double) - TSV elliptical width, default=30, unit=μm

  • tsv_type (String) - TSV type, default=Tsv Standard, choices=['Tsv Standard', 'Tsv Ellipse']

  • tsv_diameter (Double) - TSV diameter, default=100, unit=μm

../_images/kqcircuits.chips.chip.png