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
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)}
- 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_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).
- 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.
- 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)