PCells ====== airbridge --------- .. autofunction:: qpdk.cells.airbridge .. plot:: 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() bend_circular ------------- .. autofunction:: qpdk.cells.bend_circular .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.bend_circular(angle=90, radius=100, allow_min_radius_violation=True).copy() c.draw_ports() c.plot() bend_circular_all_angle ----------------------- .. autofunction:: qpdk.cells.bend_circular_all_angle .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.bend_circular_all_angle(radius=100, angle=90, allow_min_radius_violation=True).copy() c.draw_ports() c.plot() bend_euler ---------- .. autofunction:: qpdk.cells.bend_euler .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.bend_euler(angle=90, p=0.5, with_arc_floorplan=True, npoints=720, allow_min_radius_violation=True).copy() c.draw_ports() c.plot() bend_euler_all_angle -------------------- .. autofunction:: qpdk.cells.bend_euler_all_angle .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.bend_euler_all_angle(angle=90, p=0.5, with_arc_floorplan=True, allow_min_radius_violation=True).copy() c.draw_ports() c.plot() bend_s ------ .. autofunction:: qpdk.cells.bend_s .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.bend_s(size=(20, 3), allow_min_radius_violation=True).copy() c.draw_ports() c.plot() chip_edge --------- .. autofunction:: qpdk.cells.chip_edge .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.chip_edge(size=(10000, 10000), width=200, layer='M1_ETCH').copy() c.draw_ports() c.plot() circle ------ .. autofunction:: qpdk.cells.circle .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.circle(radius=10, angle_resolution=2.5, layer='WG').copy() c.draw_ports() c.plot() coupler_ring ------------ .. autofunction:: qpdk.cells.coupler_ring .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.coupler_ring(gap=16, length_x=20, cross_section='cpw').copy() c.draw_ports() c.plot() coupler_straight ---------------- .. autofunction:: qpdk.cells.coupler_straight .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.coupler_straight(length=10, gap=16, cross_section='cpw').copy() c.draw_ports() c.plot() double_pad_transmon ------------------- .. autofunction:: qpdk.cells.double_pad_transmon .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.double_pad_transmon(pad_size=(250, 400), pad_gap=15, layer_metal='M1_DRAW').copy() c.draw_ports() c.plot() double_pad_transmon_with_bbox ----------------------------- .. autofunction:: qpdk.cells.double_pad_transmon_with_bbox .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.double_pad_transmon_with_bbox(bbox_extension=200, pad_size=(250, 400), pad_gap=15, layer_metal='M1_DRAW', layer_etch='M1_ETCH').copy() c.draw_ports() c.plot() double_pad_transmon_with_resonator ---------------------------------- .. autofunction:: qpdk.cells.double_pad_transmon_with_resonator .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.double_pad_transmon_with_resonator(qubit='double_pad_transmon_with_bbox', resonator_meander_start=(-900, -1200), resonator_length=5000, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0)).copy() c.draw_ports() c.plot() double_pad_transmon_with_resonator_and_probeline ------------------------------------------------ .. autofunction:: qpdk.cells.double_pad_transmon_with_resonator_and_probeline .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.double_pad_transmon_with_resonator_and_probeline(qubit='double_pad_transmon_with_bbox', resonator_meander_start=(-900, -1200), resonator_length=5000, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0), probeline_coupling_gap=16).copy() c.draw_ports() c.plot() flipmon ------- .. autofunction:: qpdk.cells.flipmon .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.flipmon(inner_circle_radius=60, outer_ring_radius=110, outer_ring_width=60, top_circle_radius=110, layer_metal='M1_DRAW', layer_metal_top='M2_DRAW').copy() c.draw_ports() c.plot() flipmon_with_bbox ----------------- .. autofunction:: qpdk.cells.flipmon_with_bbox .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.flipmon_with_bbox(inner_circle_radius=60, outer_ring_radius=110, outer_ring_width=60, top_circle_radius=110, layer_metal='M1_DRAW', layer_metal_top='M2_DRAW', layer_etch='M1_ETCH', layer_etch_top='M2_ETCH', m1_etch_extension_gap=30, m2_etch_extension_gap=40).copy() c.draw_ports() c.plot() flipmon_with_resonator ---------------------- .. autofunction:: qpdk.cells.flipmon_with_resonator .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.flipmon_with_resonator(qubit='flipmon_with_bbox', resonator_meander_start=(-900, -1200), resonator_length=5000, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, qubit_rotation=-90, coupler_port='outer_ring_outside', coupler_offset=(-10, 0)).copy() c.draw_ports() c.plot() flipmon_with_resonator_and_probeline ------------------------------------ .. autofunction:: qpdk.cells.flipmon_with_resonator_and_probeline .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.flipmon_with_resonator_and_probeline(qubit='flipmon_with_bbox', resonator_meander_start=(-900, -1200), resonator_length=5000, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, qubit_rotation=-90, coupler_port='outer_ring_outside', coupler_offset=(-10, 0), probeline_coupling_gap=16).copy() c.draw_ports() c.plot() fluxonium --------- .. autofunction:: qpdk.cells.fluxonium .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.fluxonium(pad_size=(250, 400), pad_gap=25, junction_margin=1, inductor_n_turns=155, inductor_margin_x=1, connection_wire_width=2, layer_metal='M1_DRAW').copy() c.draw_ports() c.plot() fluxonium_with_bbox ------------------- .. autofunction:: qpdk.cells.fluxonium_with_bbox .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.fluxonium_with_bbox(bbox_extension=200, pad_size=(250, 400), pad_gap=25, junction_margin=1, inductor_n_turns=155, inductor_margin_x=1, connection_wire_width=2, layer_metal='M1_DRAW').copy() c.draw_ports() c.plot() half_circle_coupler ------------------- .. autofunction:: qpdk.cells.half_circle_coupler .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.half_circle_coupler(radius=50, angle=180, extension_length=10, cross_section='cpw', extra_straight_length=20, open_end=True).copy() c.draw_ports() c.plot() indium_bump ----------- .. autofunction:: qpdk.cells.indium_bump .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.indium_bump(diameter=15).copy() c.draw_ports() c.plot() interdigital_capacitor ---------------------- .. autofunction:: qpdk.cells.interdigital_capacitor .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.interdigital_capacitor(fingers=4, finger_length=20, finger_gap=2, thickness=5, layer_metal='M1_DRAW', etch_layer='M1_ETCH', etch_bbox_margin=2, cross_section='cpw', half=False).copy() c.draw_ports() c.plot() josephson_junction ------------------ .. autofunction:: qpdk.cells.josephson_junction .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.josephson_junction(junction_overlap_displacement=1.8, wide_straight_length=8.3, narrow_straight_length=0.5, taper_length=4.7, layer_patch='JJ_PATCH', size_patch=(1.5, 1)).copy() c.draw_ports() c.plot() josephson_junction_long ----------------------- .. autofunction:: qpdk.cells.josephson_junction_long .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.josephson_junction_long().copy() c.draw_ports() c.plot() launcher -------- .. autofunction:: qpdk.cells.launcher .. plot:: 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() lumped_element_resonator ------------------------ .. autofunction:: qpdk.cells.lumped_element_resonator .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.lumped_element_resonator(fingers=20, finger_length=20, finger_gap=2, finger_thickness=5, n_turns=15, bus_bar_spacing=4, etch_bbox_margin=2).copy() c.draw_ports() c.plot() meander_inductor ---------------- .. autofunction:: qpdk.cells.meander_inductor .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.meander_inductor(n_turns=5, turn_length=200, etch_bbox_margin=2, add_etch=True).copy() c.draw_ports() c.plot() nxn --- .. autofunction:: qpdk.cells.nxn .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.nxn(xsize=10, ysize=10, wg_width=10, layer='M1_DRAW', wg_margin=0, north=1, east=1, south=1, west=1).copy() c.draw_ports() c.plot() plate_capacitor --------------- .. autofunction:: qpdk.cells.plate_capacitor .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.plate_capacitor(length=26, width=5, gap=7, etch_layer='M1_ETCH', etch_bbox_margin=2, cross_section='cpw').copy() c.draw_ports() c.plot() plate_capacitor_single ---------------------- .. autofunction:: qpdk.cells.plate_capacitor_single .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.plate_capacitor_single(length=26, width=5, layer_metal='M1_DRAW', etch_layer='M1_ETCH', etch_bbox_margin=2, cross_section='cpw').copy() c.draw_ports() c.plot() quarter_wave_resonator_coupled ------------------------------ .. autofunction:: qpdk.cells.quarter_wave_resonator_coupled .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.quarter_wave_resonator_coupled(length=4000, meanders=6, cross_section='cpw', start_with_bend=False, end_with_bend=False, open_start=True, open_end=False, cross_section_non_resonator='cpw', coupling_straight_length=200, coupling_gap=20).copy() c.draw_ports() c.plot() rectangle --------- .. autofunction:: qpdk.cells.rectangle .. plot:: 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() resonator --------- .. autofunction:: qpdk.cells.resonator .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator(length=4000, meanders=6, cross_section='cpw', start_with_bend=False, end_with_bend=False, open_start=True, open_end=False).copy() c.draw_ports() c.plot() resonator_coupled ----------------- .. autofunction:: qpdk.cells.resonator_coupled .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_coupled(length=4000, meanders=6, cross_section='cpw', start_with_bend=False, end_with_bend=False, open_start=True, open_end=False, cross_section_non_resonator='cpw', coupling_straight_length=200, coupling_gap=20).copy() c.draw_ports() c.plot() resonator_half_wave ------------------- .. autofunction:: qpdk.cells.resonator_half_wave .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_half_wave(length=4000, meanders=6, cross_section='cpw', start_with_bend=False, end_with_bend=False, open_start=True, open_end=True).copy() c.draw_ports() c.plot() resonator_half_wave_bend_both ----------------------------- .. autofunction:: qpdk.cells.resonator_half_wave_bend_both .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_half_wave_bend_both(length=4000, meanders=6, cross_section='cpw', start_with_bend=True, end_with_bend=True, open_start=True, open_end=True).copy() c.draw_ports() c.plot() resonator_half_wave_bend_end ---------------------------- .. autofunction:: qpdk.cells.resonator_half_wave_bend_end .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_half_wave_bend_end(length=4000, meanders=6, cross_section='cpw', start_with_bend=False, end_with_bend=True, open_start=True, open_end=True).copy() c.draw_ports() c.plot() resonator_half_wave_bend_start ------------------------------ .. autofunction:: qpdk.cells.resonator_half_wave_bend_start .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_half_wave_bend_start(length=4000, meanders=6, cross_section='cpw', start_with_bend=True, end_with_bend=False, open_start=True, open_end=True).copy() c.draw_ports() c.plot() resonator_quarter_wave ---------------------- .. autofunction:: qpdk.cells.resonator_quarter_wave .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_quarter_wave(length=4000, meanders=6, cross_section='cpw', start_with_bend=False, end_with_bend=False, open_start=False, open_end=True).copy() c.draw_ports() c.plot() resonator_quarter_wave_bend_both -------------------------------- .. autofunction:: qpdk.cells.resonator_quarter_wave_bend_both .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_quarter_wave_bend_both(length=4000, meanders=6, cross_section='cpw', start_with_bend=True, end_with_bend=True, open_start=False, open_end=True).copy() c.draw_ports() c.plot() resonator_quarter_wave_bend_end ------------------------------- .. autofunction:: qpdk.cells.resonator_quarter_wave_bend_end .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_quarter_wave_bend_end(length=4000, meanders=6, cross_section='cpw', start_with_bend=False, end_with_bend=True, open_start=False, open_end=True).copy() c.draw_ports() c.plot() resonator_quarter_wave_bend_start --------------------------------- .. autofunction:: qpdk.cells.resonator_quarter_wave_bend_start .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.resonator_quarter_wave_bend_start(length=4000, meanders=6, cross_section='cpw', start_with_bend=True, end_with_bend=False, open_start=False, open_end=True).copy() c.draw_ports() c.plot() ring ---- .. autofunction:: qpdk.cells.ring .. plot:: 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() single_josephson_junction_wire ------------------------------ .. autofunction:: qpdk.cells.single_josephson_junction_wire .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.single_josephson_junction_wire(wide_straight_length=8.3, narrow_straight_length=0.5, taper_length=4.7, layer_patch='JJ_PATCH', size_patch=(1.5, 1)).copy() c.draw_ports() c.plot() snspd ----- .. autofunction:: qpdk.cells.snspd .. plot:: 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='NbTiN', port_type='electrical').copy() c.draw_ports() c.plot() squid_junction -------------- .. autofunction:: qpdk.cells.squid_junction .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.squid_junction(loop_area=4).copy() c.draw_ports() c.plot() squid_junction_long ------------------- .. autofunction:: qpdk.cells.squid_junction_long .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.squid_junction_long().copy() c.draw_ports() c.plot() straight -------- .. autofunction:: qpdk.cells.straight .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.straight(length=10, npoints=2).copy() c.draw_ports() c.plot() straight_all_angle ------------------ .. autofunction:: qpdk.cells.straight_all_angle .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.straight_all_angle(length=10, npoints=2).copy() c.draw_ports() c.plot() straight_double_open -------------------- .. autofunction:: qpdk.cells.straight_double_open .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.straight_double_open(length=10, npoints=2).copy() c.draw_ports() c.plot() straight_open ------------- .. autofunction:: qpdk.cells.straight_open .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.straight_open(length=10, npoints=2).copy() c.draw_ports() c.plot() straight_shorted ---------------- .. autofunction:: qpdk.cells.straight_shorted .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.straight_shorted(length=10, npoints=2).copy() c.draw_ports() c.plot() taper_cross_section ------------------- .. autofunction:: qpdk.cells.taper_cross_section .. plot:: 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() tee --- .. autofunction:: qpdk.cells.tee .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.tee(cross_section='cpw').copy() c.draw_ports() c.plot() transform_component ------------------- .. autofunction:: qpdk.cells.transform_component transmon_with_resonator ----------------------- .. autofunction:: qpdk.cells.transmon_with_resonator .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.transmon_with_resonator(qubit='double_pad_transmon_with_bbox', resonator_meander_start=(-900, -1200), resonator_length=5000, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0)).copy() c.draw_ports() c.plot() transmon_with_resonator_and_probeline ------------------------------------- .. autofunction:: qpdk.cells.transmon_with_resonator_and_probeline .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.transmon_with_resonator_and_probeline(qubit='double_pad_transmon_with_bbox', resonator_meander_start=(-900, -1200), resonator_length=5000, resonator_meanders=5, resonator_bend_spec='bend_circular', resonator_cross_section='cpw', resonator_open_start=False, resonator_open_end=True, qubit_rotation=90, coupler_port='left_pad', coupler_offset=(-45, 0), probeline_coupling_gap=16).copy() c.draw_ports() c.plot() tsv --- .. autofunction:: qpdk.cells.tsv .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.tsv(diameter=15).copy() c.draw_ports() c.plot() unimon ------ .. autofunction:: qpdk.cells.unimon .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.unimon(arm_length=3000, arm_meanders=6, cross_section='cpw', junction_gap=10, junction_etch_width=22).copy() c.draw_ports() c.plot() unimon_arm ---------- .. autofunction:: qpdk.cells.unimon_arm .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.unimon_arm(arm_length=3000, arm_meanders=6, cross_section='cpw', junction_gap=6).copy() c.draw_ports() c.plot() unimon_coupled -------------- .. autofunction:: qpdk.cells.unimon_coupled .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.unimon_coupled(arm_length=3000, arm_meanders=6, cross_section='cpw', junction_gap=6, junction_etch_width=22, coupling_gap=30, coupling_angle=180, coupling_extension_length=50, cross_section_non_resonator='cpw').copy() c.draw_ports() c.plot() xmon_transmon ------------- .. autofunction:: qpdk.cells.xmon_transmon .. plot:: from qpdk import cells, PDK PDK.activate() c = cells.xmon_transmon(arm_width=(30, 20, 30, 20), arm_lengths=(160, 120, 160, 120), gap_width=10, layer_metal='M1_DRAW', layer_etch='M1_ETCH').copy() c.draw_ports() c.plot() References ---------- .. bibliography:: :filter: docname in docnames