squadds.components.airbridge package#

Submodules#

squadds.components.airbridge.airbridge module#

class squadds.components.airbridge.airbridge.Airbridge(*args, **kwargs)[source]#

Bases: QComponent

The base “Airbridge” inherits the “QComponent” class.

NOTE TO USER: Please be aware that when designing with this qcomponent, one must take care in accounting for the junction qgeometry when exporting to to GDS and/or to a simulator. This qcomponent should not be rendered for EM simulation.

Default Options:
  • crossover_length: ‘20um’ – Distance between the two outter squares.

    This should be the same length as (cpw_width + 2 * cpw_gap)

  • RR_layer: 3 – GDS layer of inner squares

  • BR_layer: 4 – GDS layer of bridge

Return type:

Any

component_metadata#

Component metadata

default_options#

Default drawing options

make()[source]#

Convert self.options into QGeometry.

squadds.components.airbridge.airbridge_generator module#

class squadds.components.airbridge.airbridge_generator.AirbridgeGenerator(design, target_comps=[], crossover_length=[0.027], min_spacing=0.005, pitch=0.07, add_curved_ab=True)[source]#

Bases: object

The Airbrdige_Generator class generates a set of airbridges given a CPW.

NOTE TO USER: * These QComponents should not be rendered into Ansys for simulation,

instead these are to be exported to GDS for fabrication.

  • I recommend calling this right before you export to GDS, as this process tends to slow down Metal’s GUI.

Input: * design: (qiskit_metal.design) * target_comps: (list of QComponent) – which CPW do you want to generate airbridges on?

  • TODO: if target_cpw == None, default to all CPWs

  • crossover_length: (float, in units mm) – The length of the bridge (Defaults to 27um)

Parameters for airbridge placement: * min_spacing: (float, in units mm) – Bridge Minimum Spacing (Defaults to 5um) * pitch: (float, in units mm) – Bridge Pitch, spacing between the centers of each bridge (Defaults to 70um)

Places all airbridges for a specific CPW given a minimum spacing and pitch.

calculate_component_bounding_boxes()[source]#

Calculates the bounding boxes of all QComponents in the design.

Returns: A dictionary of component names and their bounding boxes in the format {component_name: (min_x, max_x, min_y, max_y)}

cleanup()[source]#

Cleans up any resources used by the AirbridgeGenerator.

clear_all()[source]#

Clears all airbridges from the design.

find_ab_placement(target_cpw, precision=12)[source]#

Determines where to place the wirebonds given a CPW

Inputs: * precision: (int) – How precise did you define your CPWs?

This parameter is meant to take care of floating point errors. References # of decimal points relative to millimeters.

Outputs: Where the airbridges should be placed given set up

Data structure is in the form of list of tuples [(x0, y0, theta0, new_crossover_length0),

(x1, y1, theta1, new_crossover_length1), …, (x_n, y_n, theta_n, new_crossover_length_n)]

Units: - x, y, new_crossover_length are in mm - theta is in degrees

get_all_airbridges()[source]#

Returns all airbridges generated by the AirbridgeGenerator.

Returns: list: A list of all airbridges generated by the AirbridgeGenerator.

get_all_coordinates()[source]#

Generates all airbridge coordinates for the target CPWs.

get_corner_bounds(corner_point, fillet)[source]#

Calculates the bounding box of a corner based on the corner point and fillet.

Args: corner_point (tuple): The (x, y) coordinates of the corner point. fillet (float): The fillet radius of the corner.

Returns: tuple: The bounding box of the corner in the format (min_x, min_y, max_x, max_y).

get_coupler_bbox()[source]#

Determines if an airbridge is too close to the cavity.

get_non_overlap_zones()[source]#

Determines if an airbridge is too close to the cavity.

is_close_to_components(x, y, margin, bounding_boxes)[source]#

Determines if a point is too close to any component’s bounding box.

Args: x (float): The x-coordinate of the point to check. y (float): The y-coordinate of the point to check. margin (float): The safety margin to maintain from any component. bounding_boxes (dict): The bounding boxes of all components.

Returns: bool: True if the point is too close, False otherwise.

is_overlapping(component1, component2)[source]#
is_overlapping_with_coupler(component1, coupler)[source]#
make_single_ab(coord, name, crossover_length=0.027)[source]#

Tells Qiskit to add a single airbridge into your design

Input: * coord (tuple) – formatted (x,y,orientation,modulated crossover_length) * name (string) – Name this airbridge.

Note: if you’re making multiple, you’ll want to increment the name

  • crossover_length (float) – The length of the bridge (Defaults to 27um)

render_all()[source]#

Renders all airbridges in the design.

validate_airbridge(airbridge)[source]#

Validates the generated airbridge to ensure it fits properly within the desired component.

Args: airbridge (Airbridge): The generated airbridge component to validate.

Raises: ValueError: If the airbridge does not meet the validation criteria.

Module contents#