Source code for squadds.components.airbridge.airbridge
from qiskit_metal import Dict, draw
from qiskit_metal.qlibrary.core.base import QComponent
[docs]
class Airbridge(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
"""
# Default drawing options
default_options = Dict(pos_x=0,
pos_y=0,
orientation=0,
crossover_length='20um',
RR_layer=30,
BR_layer=31)
"""Default drawing options"""
# Name prefix of component, if user doesn't provide name
component_metadata = Dict(short_name='component')
"""Component metadata"""
[docs]
def make(self):
"""Convert self.options into QGeometry."""
p = self.parse_options()
l = p.crossover_length
# These parameters define the dimensions of the airbridge components
bridge_pad_gap = 0.0015 #1.5um distance between edge of bridge and pad
if l >= 0.005 and l <= 0.016:
bridge_width = 0.005
pad_length = 0.008
pad_width = 0.008
elif l > 0.016 and l <= 0.027:
bridge_width = 0.0075
pad_length = 0.010
pad_width = 0.0105
elif l > 0.027 and l <= 0.032:
bridge_width = 0.010
pad_length = 0.014
pad_width = 0.013
# Make the pad Structure
left_inside = draw.rectangle(pad_length, pad_width, 0, 0)
right_inside = draw.translate(left_inside, l / 2 + pad_length / 2 + bridge_pad_gap,
0)
left_inside = draw.translate(left_inside,
-(l / 2 + pad_length / 2 + bridge_pad_gap), 0)
# Make the bridge Structure
bridge = draw.rectangle(l, bridge_width, 0, 0)
left_outside = draw.rectangle(pad_length + 2 * bridge_pad_gap, pad_width + 2 * bridge_pad_gap,
0, 0)
right_outside = draw.translate(left_outside,
l / 2 + pad_length / 2 + bridge_pad_gap, 0)
left_outside = draw.translate(left_outside,
-(l / 2 + pad_length / 2 + bridge_pad_gap), 0)
bridge_struct = draw.union(bridge, left_outside, right_outside)
### Final adjustments to allow repositioning
final_design = [bridge_struct, left_inside, right_inside]
final_design = draw.rotate(final_design, p.orientation, origin=(0, 0))
final_design = draw.translate(final_design, p.pos_x, p.pos_y)
bridge_struct, left_inside, right_inside = final_design
### Add everything as a QGeometry
self.add_qgeometry('poly', {'bridge_struct': bridge_struct},
layer=p.BR_layer,
subtract=False)
self.add_qgeometry('poly', {'left_inside': left_inside},
layer=p.RR_layer,
subtract=False)
self.add_qgeometry('poly', {'right_inside': right_inside},
layer=p.RR_layer,
subtract=False)