Cells QPDK#
airbridge#
- qpdk.cells.airbridge(bridge_length=30.0, bridge_width=8.0, pad_width=15.0, pad_length=12.0, bridge_layer=<LayerMapQPDK.AB_DRAW: 48>, pad_layer=<LayerMapQPDK.AB_VIA: 49>)[source]#
Generate a superconducting airbridge component.
Creates an airbridge consisting of a suspended bridge span and landing pads on either side. The bridge allows transmission lines to cross over each other without electrical contact, which is essential for complex quantum circuit routing without crosstalk.
The bridge_layer (AB_DRAW) represents the elevated metal bridge structure, while the pad_layer (AB_VIA) represents the contact/landing pads that connect to the underlying circuit.
Note
To be used with
ComponentAlongPath
the unrotated version should be _oriented for placement on a horizontal line_.- Parameters:
bridge_length (float) – Total length of the airbridge span in µm.
bridge_width (float) – Width of the suspended bridge in µm.
pad_width (float) – Width of the landing pads in µm.
pad_length (float) – Length of each landing pad in µm.
bridge_layer (LayerSpec) – Layer for the suspended bridge metal (default: AB_DRAW).
pad_layer (LayerSpec) – Layer for the landing pads/contacts (default: AB_VIA).
- Returns:
Component containing the airbridge geometry with appropriate ports.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.airbridge(bridge_length=30, bridge_width=8, pad_width=15, pad_length=12, bridge_layer='AB_DRAW', pad_layer='AB_VIA').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_circular#
- qpdk.cells.bend_circular(**kwargs)[source]#
Returns circular bend.
- Parameters:
**kwargs (Unpack[BendCircularKwargs]) – Arguments passed to gf.c.bend_circular.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.bend_circular().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_circular_all_angle#
- qpdk.cells.bend_circular_all_angle(**kwargs)[source]#
Returns circular bend with arbitrary angle.
- Parameters:
**kwargs (Unpack[BendCircularAllAngleKwargs]) – Arguments passed to gf.c.bend_circular_all_angle.
- Return type:
ComponentAllAngle
from qpdk import cells, PDK
PDK.activate()
c = cells.bend_circular_all_angle().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_euler#
- qpdk.cells.bend_euler(**kwargs)[source]#
Regular degree euler bend.
- Parameters:
**kwargs (Unpack[BendEulerKwargs]) – Arguments passed to gf.c.bend_euler.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.bend_euler().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_euler_all_angle#
- qpdk.cells.bend_euler_all_angle(**kwargs)[source]#
Returns regular degree euler bend with arbitrary angle.
- Parameters:
**kwargs (Unpack[BendEulerAllAngleKwargs]) – Arguments passed to gf.c.bend_euler_all_angle.
- Return type:
ComponentAllAngle
from qpdk import cells, PDK
PDK.activate()
c = cells.bend_euler_all_angle().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_s#
- qpdk.cells.bend_s(**kwargs)[source]#
Return S bend with bezier curve.
stores min_bend_radius property in self.info[‘min_bend_radius’] min_bend_radius depends on height and length
- Parameters:
**kwargs (Unpack[BendSKwargs]) – Arguments passed to gf.c.bend_s.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.bend_s().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

circle#
- qpdk.cells.circle(radius=10.0, angle_resolution=2.5, layer='WG')[source]#
Generate a circle geometry.
- Parameters:
radius (float) – of the circle.
angle_resolution (float) – number of degrees per point.
layer (LayerSpec) – layer.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.circle(radius=10, angle_resolution=2.5, layer='WG').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

coupler_tunable#
- qpdk.cells.coupler_tunable(pad_width=30.0, pad_height=40.0, gap=3.0, tuning_pad_width=15.0, tuning_pad_height=20.0, tuning_gap=1.0, feed_width=10.0, feed_length=30.0, layer_metal=<LayerMapQPDK.M1_DRAW: 1>, port_type='electrical')[source]#
Creates a tunable capacitive coupler with voltage control.
A tunable coupler includes additional electrodes that can be voltage-biased to change the coupling strength dynamically.
- Parameters:
pad_width (float) – Width of main coupling pads in μm.
pad_height (float) – Height of main coupling pads in μm.
gap (float) – Gap between main coupling pads in μm.
tuning_pad_width (float) – Width of tuning pads in μm.
tuning_pad_height (float) – Height of tuning pads in μm.
tuning_gap (float) – Gap to tuning pads in μm.
feed_width (float) – Width of feed lines in μm.
feed_length (float) – Length of feed lines in μm.
layer_metal (LayerSpec) – Layer for main metal structures.
port_type (str) – Type of port to add to the component.
- Returns:
A gdsfactory component with the tunable coupler geometry.
- Return type:
Component
(connected to feed) _______ | | | tpad1 | | | |_______| tuning gap ______ ______ _______ | | | | _______ | | | | | || | | feed1 | | pad1 | gap | pad2 || feed2 | | | | | | || | |_______| | | | ||_______| |______| |______| tuning gap _______ | | | tpad2 | | | |_______| (connected to feed)
from qpdk import cells, PDK
PDK.activate()
c = cells.coupler_tunable(pad_width=30, pad_height=40, gap=3, tuning_pad_width=15, tuning_pad_height=20, tuning_gap=1, feed_width=10, feed_length=30, layer_metal='M1_DRAW', port_type='electrical').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

double_pad_transmon#
- qpdk.cells.double_pad_transmon(**kwargs)[source]#
Creates a double capacitor pad transmon qubit with Josephson junction.
A transmon qubit consists of two capacitor pads connected by a Josephson junction. The junction creates an anharmonic oscillator that can be used as a qubit.
See [KYG+07] for details.
- Parameters:
**kwargs (Unpack[DoublePadTransmonParams]) –
DoublePadTransmonParams
for the transmon qubit.- Returns:
A gdsfactory component with the transmon geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.double_pad_transmon().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

double_pad_transmon_with_bbox#
- qpdk.cells.double_pad_transmon_with_bbox(bbox_extension=200.0, **kwargs)[source]#
Creates a double capacitor pad transmon qubit with Josephson junction and an etched bounding box.
See
double_pad_transmon()
for more details.- Parameters:
bbox_extension (float) – Extension size for the bounding box in μm.
**kwargs (Unpack[DoublePadTransmonParams]) –
DoublePadTransmonParams
for the transmon qubit.
- Returns:
A gdsfactory component with the transmon geometry and etched box.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.double_pad_transmon_with_bbox(bbox_extension=200).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

flipmon#
- qpdk.cells.flipmon(**kwargs)[source]#
Creates a circular transmon qubit with flipmon geometry.
A circular variant of the transmon qubit with another circle as the inner pad.
See [LWJ+25, LZY+21] for details about the flipmon design.
- Parameters:
**kwargs (Unpack[FlipmonParams]) –
FlipmonParams
for the flipmon qubit.- Keyword Arguments:
inner_ring_radius – Central radius of the inner circular capacitor pad in μm.
inner_ring_width – Width of the inner circular capacitor pad in μm.
outer_ring_radius – Central radius of the outer circular capacitor pad in μm.
outer_ring_width – Width of the outer circular capacitor pad in μm.
top_circle_radius – Central radius of the top circular capacitor pad in μm. There is no separate width as the filled circle is not a ring.
junction_spec – Component specification for the Josephson junction component.
junction_displacement – Optional complex transformation to apply to the junction.
layer_metal – Layer for the metal pads.
layer_metal_top – Layer for the other metal layer pad for flip-chip.
- Returns:
A gdsfactory component with the circular transmon geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.flipmon().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

flipmon_with_bbox#
- qpdk.cells.flipmon_with_bbox(flipmon_params=None, m1_etch_extension_gap=30.0, m2_etch_extension_gap=40.0)[source]#
Creates a circular transmon qubit with flipmon geometry and a circular etched bounding box.
See
flipmon()
for more details.- Parameters:
flipmon_params (FlipmonParams | None) –
FlipmonParams
for the flipmon qubit.m1_etch_extension_gap (float) – Radius extension length for the M1 etch bounding box in μm.
m2_etch_extension_gap (float) – Radius extension length for the M2 etch bounding box in μm.
- Returns:
A gdsfactory component with the flipmon geometry and etched box.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.flipmon_with_bbox(m1_etch_extension_gap=30, m2_etch_extension_gap=40).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

indium_bump#
- qpdk.cells.indium_bump(diameter=15.0)[source]#
Creates an indium bump component for 3D integration.
See [RKD+17] for details.
- Parameters:
diameter (float) – Diameter of the indium bump in µm.
- Returns:
A gdsfactory Component representing the indium bump.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.indium_bump(diameter=15).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

interdigital_capacitor#
- qpdk.cells.interdigital_capacitor(**kwargs)[source]#
Generate an interdigital capacitor component with ports on both ends.
An interdigital capacitor consists of interleaved metal fingers that create a distributed capacitance. This component creates a planar capacitor with two sets of interleaved fingers extending from opposite ends.
See for example [LeiZhuW00].
Note
finger_length=0
effectively provides a parallel plate capacitor. The capacitance scales approximately linearly with the number of fingers and finger length.- Parameters:
kwargs (Unpack[InterdigitalCapacitorParams]) –
InterdigitalCapacitorParams
for the interdigital capacitor.- Returns:
- A gdsfactory component with the interdigital capacitor geometry
and two ports (‘o1’ and ‘o2’) on opposing sides.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.interdigital_capacitor().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

josephson_junction#
- qpdk.cells.josephson_junction(junction_overlap_displacement=1.8, **kwargs)[source]#
Creates a single Josephson junction component.
A Josephson junction consists of two superconducting electrodes separated by a thin insulating barrier allowing tunnelling.
- Parameters:
junction_overlap_displacement (float) – Displacement of the overlap region in µm. Measured from the centers of the junction ports
kwargs (Unpack[SingleJosephsonJunctionWireParams]) –
SingleJosephsonJunctionWireParams
for single wires.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.josephson_junction(junction_overlap_displacement=1.8).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

launcher#
- qpdk.cells.launcher(straight_length=200.0, taper_length=100.0, cross_section_big=<function launcher_cross_section_big>, cross_section_small='cpw')[source]#
Generate an RF launcher pad for wirebonding or probe testing.
Creates a launcher component consisting of a straight section with large cross-section connected to a tapered transition down to a smaller cross-section. This design facilitates RF signal access through probes or wirebonds while maintaining good impedance matching.
The default dimensions are taken from [TSKivijarvi+25].
- Parameters:
straight_length (float) – Length of the straight, wirebond landing area, section in µm.
taper_length (float) – Length of the taper section in µm.
cross_section_big (CrossSectionSpec) – Cross-section specification for the large end of the launcher (probe/wirebond interface).
cross_section_small (CrossSectionSpec) – Cross-section specification for the small end of the launcher (circuit interface).
- Returns:
- A gdsfactory component containing the complete launcher
geometry with one output port (“o1”) at the small end.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.launcher(straight_length=200, taper_length=100, cross_section_small='cpw').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

nxn#
- qpdk.cells.nxn(**kwargs)[source]#
Returns a tee waveguide.
- Parameters:
**kwargs (Unpack[NxnKwargs]) – Arguments passed to gf.c.nxn.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.nxn().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

plate_capacitor#
- qpdk.cells.plate_capacitor(**kwargs)[source]#
Creates a plate capacitor.
A capacitive coupler consists of two metal pads separated by a small gap, providing capacitive coupling between circuit elements like qubits and resonators.
Note
This is a special case of the interdigital capacitor with zero finger length.
- Parameters:
**kwargs (Unpack[InterdigitalCapacitorParams]) –
InterdigitalCapacitorParams
for the interdigital- Returns:
A gdsfactory component with the plate capacitor geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.plate_capacitor().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

plate_capacitor_single#
- qpdk.cells.plate_capacitor_single(**kwargs)[source]#
Creates a single plate capacitor for coupling.
This is essentially half of a
plate capacitor()
.- Parameters:
**kwargs (Unpack[InterdigitalCapacitorParams]) –
InterdigitalCapacitorParams
- Returns:
A gdsfactory component with the plate capacitor geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.plate_capacitor_single().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

rectangle#
- qpdk.cells.rectangle(size=(4.0, 2.0), layer='M1_DRAW', centered=False, port_type='electrical', port_orientations=(180, 90, 0, -90))[source]#
Returns a rectangle.
- Parameters:
size (tuple[float, float]) – (tuple) Width and height of rectangle.
layer (tuple[int, int] | str | int | LayerEnum) – Specific layer to put polygon geometry on.
centered (bool) – True sets center to (0, 0), False sets south-west to (0, 0).
port_type (str | None) – optical, electrical.
port_orientations (tuple[int, ...] | list[int] | None) – list of port_orientations to add. None adds no ports.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.rectangle(size=(4, 2), layer='M1_DRAW', centered=False, port_type='electrical', port_orientations=(180, 90, 0, -90)).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

resonator#
- qpdk.cells.resonator(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', *, open_start=False, open_end=False)[source]#
Creates a meandering coplanar waveguide resonator.
Changing open_start and open_end appropriately allows creating a shorted quarter-wave resonator or an open half-wave resonator.
See [MP12] for details
- Parameters:
length (float) – Length of the resonator in μm.
meanders (int) – Number of meander sections to fit the resonator in a compact area.
bend_spec (ComponentSpec) – Specification for the bend component used in meanders.
cross_section (CrossSectionSpec) – Cross-section specification for the resonator.
open_start (bool) – If True, adds an etch section at the start of the resonator.
open_end (bool) – If True, adds an etch section at the end of the resonator.
- Returns:
A gdsfactory component with meandering resonator geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.resonator(length=4000, meanders=6, cross_section='cpw', open_start=False, open_end=False).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

resonator_coupled#
- qpdk.cells.resonator_coupled(resonator_params=None, cross_section_non_resonator='cpw', coupling_straight_length=200.0, coupling_gap=12.0)[source]#
Creates a meandering coplanar waveguide resonator with a coupling waveguide.
This component combines a resonator with a parallel coupling waveguide placed at a specified gap for proximity coupling. Similar to the design described in [BM18].
- Parameters:
resonator_params (ResonatorParams | None) – Parameters for the resonator component. If None, defaults will be used.
cross_section_non_resonator (CrossSectionSpec) – Cross-section specification for the coupling waveguide.
coupling_straight_length (float) – Length of the coupling waveguide section in μm.
coupling_gap (float) – Gap between the resonator and coupling waveguide in μm. Measured from edges of the center conductors.
- Returns:
A gdsfactory component with meandering resonator and coupling waveguide.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.resonator_coupled(cross_section_non_resonator='cpw', coupling_straight_length=200, coupling_gap=12).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

resonator_half_wave#
- qpdk.cells.resonator_half_wave(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', *, open_start=True, open_end=True)#
Creates a meandering coplanar waveguide resonator.
Changing open_start and open_end appropriately allows creating a shorted quarter-wave resonator or an open half-wave resonator.
See [MP12] for details
- Parameters:
length (float) – Length of the resonator in μm.
meanders (int) – Number of meander sections to fit the resonator in a compact area.
bend_spec (ComponentSpec) – Specification for the bend component used in meanders.
cross_section (CrossSectionSpec) – Cross-section specification for the resonator.
open_start (bool) – If True, adds an etch section at the start of the resonator.
open_end (bool) – If True, adds an etch section at the end of the resonator.
- Returns:
A gdsfactory component with meandering resonator geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.resonator_half_wave(length=4000, meanders=6, cross_section='cpw', open_start=True, open_end=True).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

resonator_quarter_wave#
- qpdk.cells.resonator_quarter_wave(length=4000.0, meanders=6, bend_spec=<function bend_circular>, cross_section='cpw', *, open_start=False, open_end=True)#
Creates a meandering coplanar waveguide resonator.
Changing open_start and open_end appropriately allows creating a shorted quarter-wave resonator or an open half-wave resonator.
See [MP12] for details
- Parameters:
length (float) – Length of the resonator in μm.
meanders (int) – Number of meander sections to fit the resonator in a compact area.
bend_spec (ComponentSpec) – Specification for the bend component used in meanders.
cross_section (CrossSectionSpec) – Cross-section specification for the resonator.
open_start (bool) – If True, adds an etch section at the start of the resonator.
open_end (bool) – If True, adds an etch section at the end of the resonator.
- Returns:
A gdsfactory component with meandering resonator geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.resonator_quarter_wave(length=4000, meanders=6, cross_section='cpw', open_start=False, open_end=True).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

ring#
- qpdk.cells.ring(radius=10.0, width=0.5, angle_resolution=2.5, layer='WG', angle=360)[source]#
Returns a ring.
- Parameters:
radius (float) – ring radius.
width (float) – of the ring.
angle_resolution (float) – number of points per degree.
layer (LayerSpec) – layer.
angle (float) – angular coverage of the ring
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.ring(radius=10, width=0.5, angle_resolution=2.5, layer='WG', angle=360).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

single_josephson_junction_wire#
- qpdk.cells.single_josephson_junction_wire(**kwargs)[source]#
Creates a single wire to use in a Josephson junction.
- Parameters:
kwargs (Unpack[SingleJosephsonJunctionWireParams]) –
SingleJosephsonJunctionWireParams
parameters.- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.single_josephson_junction_wire().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

snspd#
- qpdk.cells.snspd(wire_width=0.2, wire_pitch=0.6, size=(10, 8), num_squares=None, turn_ratio=4, terminals_same_side=False, *, layer=<LayerMapQPDK.M1_DRAW: 1>, port_type='electrical')#
Creates an optimally-rounded SNSPD.
- Parameters:
wire_width (float) – Width of the wire.
wire_pitch (float) – Distance between two adjacent wires. Must be greater than width.
size (Size) – Float2 (width, height) of the rectangle formed by the outer boundary of the SNSPD.
num_squares (int | None) – int | None = None Total number of squares inside the SNSPD length.
turn_ratio (float) – float Specifies how much of the SNSPD width is dedicated to the 180 degree turn. A turn_ratio of 10 will result in 20% of the width being comprised of the turn.
terminals_same_side (bool) – If True, both ports will be located on the same side of the SNSPD.
layer (LayerSpec) – layer spec to put polygon geometry on.
port_type (str) – type of port to add to the component.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.snspd(wire_width=0.2, wire_pitch=0.6, size=(10, 8), turn_ratio=4, terminals_same_side=False, layer='M1_DRAW', port_type='electrical').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

squid_junction#
- qpdk.cells.squid_junction(junction_spec=<function josephson_junction>, loop_area=4)[source]#
Creates a SQUID (Superconducting Quantum Interference Device) junction component.
A SQUID consists of two Josephson junctions connected in parallel, forming a loop.
See [CB04] for details.
- Parameters:
junction_spec (ComponentSpec) – Component specification for the Josephson junction component.
loop_area (float) – Area of the SQUID loop in µm². This does not take into account the junction wire widths.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.squid_junction(loop_area=4).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

straight#
- qpdk.cells.straight(**kwargs)[source]#
Returns a Straight waveguide.
- Parameters:
**kwargs (Unpack[StraightKwargs]) – Arguments passed to gf.c.straight.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.straight().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

straight_all_angle#
- qpdk.cells.straight_all_angle(**kwargs)[source]#
Returns a Straight waveguide with offgrid ports.
- Parameters:
**kwargs (Unpack[StraightAllAngleKwargs]) – Arguments passed to gf.c.straight_all_angle.
- Return type:
ComponentAllAngle
o1 ──────────────── o2 length
from qpdk import cells, PDK
PDK.activate()
c = cells.straight_all_angle().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

taper_cross_section#
- qpdk.cells.taper_cross_section(*, cross_section1='cpw', cross_section2='cpw', length=10, npoints=100, linear=False, width_type='sine')#
Returns taper transition between cross_section1 and cross_section2.
- Parameters:
cross_section1 (CrossSectionSpec) – start cross_section factory.
cross_section2 (CrossSectionSpec) – end cross_section factory.
length (float) – transition length.
npoints (int) – number of points.
linear (bool) – shape of the transition, sine when False.
width_type (str) – shape of the transition ONLY IF linear is False
- Return type:
Component
_____________________ / _______/______________________ / cross_section1 | cross_section2 ______\_______________________ \ \_____________________
from qpdk import cells, PDK
PDK.activate()
c = cells.taper_cross_section(cross_section1='cpw', cross_section2='cpw', length=10, npoints=100, linear=False, width_type='sine').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

tee#
- qpdk.cells.tee(cross_section='cpw')[source]#
Returns a three-way tee waveguide.
- Parameters:
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – specification (CrossSection, string or dict).
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.tee(cross_section='cpw').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

transform_component#
- qpdk.cells.transform_component(component, transform)[source]#
Applies a complex transformation to a component.
For use with
container()
.- Parameters:
component (Component)
transform (DCplxTrans)
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.transform_component().copy()
c.draw_ports()
c.plot()
transmon_with_resonator#
- qpdk.cells.transmon_with_resonator(transmon='double_pad_transmon_with_bbox', resonator=functools.partial(<function resonator>, open_start=False, open_end=True, length=4000, meanders=6), resonator_meander_start=(-700, -1300), resonator_length=5000.0, resonator_params=None, coupler=functools.partial(<function plate_capacitor_single>, thickness=20, fingers=18))[source]#
Returns a transmon qubit coupled to a quarter wave resonator.
- Parameters:
transmon (ComponentSpec) – Transmon component.
resonator (ComponentSpec) – Resonator component.
resonator_meander_start (tuple[float, float]) – (x, y) position of the start of the resonator meander.
resonator_length (float) – Length of the resonator in µm.
resonator_params (ResonatorParams | None) – Parameters for the resonator component if it accepts any.
coupler (ComponentSpec) – Coupler component.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.transmon_with_resonator(transmon='double_pad_transmon_with_bbox', resonator_meander_start=(-700, -1300), resonator_length=5000).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

tsv#
- qpdk.cells.tsv(diameter=15.0)[source]#
Creates a Through-silicon via (TSV) component for 3D integration.
See [YSM+20].
- Parameters:
diameter (float) – Diameter of the via in µm.
- Returns:
A gdsfactory Component representing the TSV.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.tsv(diameter=15).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

xmon_transmon#
- qpdk.cells.xmon_transmon(**kwargs)[source]#
Creates an Xmon style transmon qubit with cross-shaped geometry.
An Xmon transmon consists of a cross-shaped capacitor pad with four arms extending from a central region, connected by a Josephson junction at the center. The design provides better control over the coupling to readout resonators and neighboring qubits through the individual arm geometries.
See [BKM+13] for details about the Xmon design.
- Parameters:
**kwargs (Unpack[XmonTransmonParams]) –
XmonTransmonParams
for the Xmon transmon qubit.- Returns:
A gdsfactory component with the Xmon transmon geometry.
- Return type:
Component
from qpdk import cells, PDK
PDK.activate()
c = cells.xmon_transmon().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

References#
R. Barends, J. Kelly, A. Megrant, D. Sank, E. Jeffrey, Y. Chen, Y. Yin, B. Chiaro, J. Mutus, C. Neill, P. O'Malley, P. Roushan, J. Wenner, T. C. White, A. N. Cleland, and John M. Martinis. Coherent Josephson Qubit Suitable for Scalable Quantum Integrated Circuits. Physical Review Letters, 111(8):080502, August 2013. URL: https://link.aps.org/doi/10.1103/PhysRevLett.111.080502 (visited on 2025-09-06), doi:10.1103/PhysRevLett.111.080502.
Ilya Besedin and Alexey P Menushenkov. Quality factor of a transmission line coupled coplanar waveguide resonator. EPJ Quantum Technology, 5(1):2, December 2018. URL: https://epjquantumtechnology.springeropen.com/articles/10.1140/epjqt/s40507-018-0066-3 (visited on 2025-09-10), doi:10.1140/epjqt/s40507-018-0066-3.
John Clarke and Alex I. Braginski. The SQUID Handbook. Wiley-VCH, Weinheim, 2004. ISBN 978-3-527-40229-8.
Jens Koch, Terri M. Yu, Jay Gambetta, A. A. Houck, D. I. Schuster, J. Majer, Alexandre Blais, M. H. Devoret, S. M. Girvin, and R. J. Schoelkopf. Charge-insensitive qubit design derived from the Cooper pair box. Physical Review A, 76(4):042319, October 2007. URL: https://link.aps.org/doi/10.1103/PhysRevA.76.042319 (visited on 2025-09-04), doi:10.1103/PhysRevA.76.042319.
Xuegang Li, Junhua Wang, Yao-Yao Jiang, Guang-Ming Xue, Xiaoxia Cai, Jun Zhou, Ming Gong, Zhao-Feng Liu, Shuang-Yu Zheng, Deng-Ke Ma, Mo Chen, Wei-Jie Sun, Shuang Yang, Fei Yan, Yi-Rong Jin, S. P. Zhao, Xue-Feng Ding, and Hai-Feng Yu. Cosmic-ray-induced correlated errors in superconducting qubit array. Nature Communications, 16(1):4677, May 2025. URL: https://www.nature.com/articles/s41467-025-59778-z (visited on 2025-09-04), doi:10.1038/s41467-025-59778-z.
Xuegang Li, Yingshan Zhang, Chuhong Yang, Zhiyuan Li, Junhua Wang, Tang Su, Mo Chen, Yongchao Li, Chengyao Li, Zhenyu Mi, Xuehui Liang, Chenlu Wang, Zhen Yang, Yulong Feng, Kehuan Linghu, Huikai Xu, Jiaxiu Han, Weiyang Liu, Peng Zhao, Teng Ma, Ruixia Wang, Jingning Zhang, Yu Song, Pei Liu, Ziting Wang, Zhaohua Yang, Guangming Xue, Yirong Jin, and Haifeng Yu. Vacuum-gap transmon qubits realized using flip-chip technology. Applied Physics Letters, 119(18):184003, November 2021. URL: https://pubs.aip.org/apl/article/119/18/184003/40593/Vacuum-gap-transmon-qubits-realized-using-flip (visited on 2025-09-04), doi:10.1063/5.0068255.
David M. Pozar. Microwave Engineering. John Wiley & Sons, Inc., 4 edition, 2012. ISBN 978-0-470-63155-3.
D. Rosenberg, D. Kim, R. Das, D. Yost, S. Gustavsson, D. Hover, P. Krantz, A. Melville, L. Racz, G. O. Samach, S. J. Weber, F. Yan, J. L. Yoder, A. J. Kerman, and W. D. Oliver. 3D integrated superconducting qubits. npj Quantum Information, 3(1):42, October 2017. URL: https://www.nature.com/articles/s41534-017-0044-0 (visited on 2025-09-05), doi:10.1038/s41534-017-0044-0.
Mikko Tuokkola, Yoshiki Sunada, Heidi Kivijärvi, Jonatan Albanese, Leif Grönberg, Jukka-Pekka Kaikkonen, Visa Vesterinen, Joonas Govenius, and Mikko Möttönen. Methods to achieve near-millisecond energy relaxation and dephasing times for a superconducting transmon qubit. Nature Communications, 16(1):5421, July 2025. URL: https://www.nature.com/articles/s41467-025-61126-0 (visited on 2025-08-29), doi:10.1038/s41467-025-61126-0.
D. R. W. Yost, M. E. Schwartz, J. Mallek, D. Rosenberg, C. Stull, J. L. Yoder, G. Calusine, M. Cook, R. Das, A. L. Day, E. B. Golden, D. K. Kim, A. Melville, B. M. Niedzielski, W. Woods, A. J. Kerman, and W. D. Oliver. Solid-state qubits integrated with superconducting through-silicon vias. npj Quantum Information, 6(1):59, July 2020. URL: https://www.nature.com/articles/s41534-020-00289-8 (visited on 2025-09-05), doi:10.1038/s41534-020-00289-8.
Lei Zhu and Ke Wu. Accurate circuit model of interdigital capacitor and its application to design of new quasi-lumped miniaturized filters with suppression of harmonic resonance. IEEE Transactions on Microwave Theory and Techniques, 48(3):347–356, March 2000. URL: https://ieeexplore.ieee.org/document/826833/ (visited on 2025-09-01), doi:10.1109/22.826833.