ExamplePDK
ExamplePDK is a DeviceLayout.jl PDK containing layer definitions, components, and rendering targets for an example process technology.
ExamplePDK is intended for demonstrations, tutorials, and tests. While we aim to demonstrate best practices for Julia code and DeviceLayout.jl usage, these components are not optimized for device performance. Most importantly: Breaking changes to ExamplePDK may occur within major versions. In other words, don't depend on ExamplePDK in your own PDK or for real devices!
ExamplePDK is written to model best practices for developing your own PDK, with a small caveat about how the PDK is packaged. For the sake of convenient testing and tutorials, ExamplePDK is just a SchematicDrivenLayout submodule, and component modules are defined as submodules within ExamplePDK by including their source files. However, when you create your own PDK, we recommend making separate packages for each independent component, each of which has your PDK package as a dependency and uses its layer vocabulary. That way, you can add, edit, and version technologies and components independently. The files can be organized in a similar way within a single repository, but as separate packages registered to your private Julia package registry. Each subfolder in MyPDK/components/ would represent its own package (e.g., MyClawCapacitors.jl) with its own Project.toml specifying a version number, dependencies, and compatibility requirements. See the documentation on PDKs for more detail.
DeviceLayout.SchematicDrivenLayout.ExamplePDK.LAYER_RECORD — Constantconst LAYER_RECORDA NamedTuple mapping semantic layer name Symbols to GDS layer and datatype.
Process layers:
metal_positive = GDSMeta(1, 1)
metal_negative = GDSMeta(1, 2)
dielectric = GDSMeta(2, 0)
marker = GDSMeta(3, 0)
junction_pattern = GDSMeta(10, 0)
bridge_base = GDSMeta(20, 0)
bridge = GDSMeta(21, 0)
bump = GDSMeta(30, 0)Informational layers:
chip_area = GDSMeta(100, 0)
writeable_area = GDSMeta(101, 0)
annotation = GDSMeta(102, 0)Simulation layers:
simulated_area = GDSMeta(200, 0)
port = GDSMeta(210, 0)
lumped_element = GDSMeta(211, 0)
mesh_control = GDSMeta(220, 0)
integration = GDSMeta(230, 0)See also ExamplePDK.LayerVocabulary
DeviceLayout.SchematicDrivenLayout.ExamplePDK.LayerVocabulary — Modulemodule LayerVocabularyExports constants for each layer name in ExamplePDK.LAYER_RECORD.
For example, defines const METAL_NEGATIVE = SemanticMeta(:metal_negative), then exports it so that using LayerVocabulary brings METAL_NEGATIVE into the namespace.
DeviceLayout.SchematicDrivenLayout.ExamplePDK.EXAMPLE_SINGLECHIP_TECHNOLOGY — Constantconst EXAMPLE_SINGLECHIP_TECHNOLOGY::ProcessTechnologyA ProcessTechnology combining the ExamplePDK layer record with process parameters for single chip assembly.
DeviceLayout.SchematicDrivenLayout.ExamplePDK.EXAMPLE_FLIPCHIP_TECHNOLOGY — Constantconst EXAMPLE_FLIPCHIP_TECHNOLOGY::ProcessTechnologyA ProcessTechnology combining the ExamplePDK layer record with process parameters for flipchip assembly.
DeviceLayout.SchematicDrivenLayout.ExamplePDK.SINGLECHIP_SOLIDMODEL_TARGET — Constantconst SINGLECHIP_SOLIDMODEL_TARGET::SolidModelTargetA Target for rendering to a SolidModel using the ExamplePDK's process technology.
Contains rendering options and postrendering operations to create a solid model suitable for simulation of a single-chip device (as opposed to a flipchip device).
DeviceLayout.SchematicDrivenLayout.ExamplePDK.singlechip_solidmodel_target — Functionsinglechip_solidmodel_target(boundary_groups)Helper function for creating a SolidModelTarget for a single chip, with additional boundary groups to be retained specified by boundary_groups
DeviceLayout.SchematicDrivenLayout.ExamplePDK.FLIPCHIP_SOLIDMODEL_TARGET — Constantconst FLIPCHIP_SOLIDMODEL_TARGET::SolidModelTargetA Target for rendering to a SolidModel using the ExamplePDK's process technology.
Contains rendering options and postrendering operations to create a solid model suitable for simulation of a flipchip device.
DeviceLayout.SchematicDrivenLayout.ExamplePDK.flipchip_solidmodel_target — Functionflipchip_solidmodel_target(boundary_groups)Helper function for creating a SolidModelTarget for a single chip, with additional boundary groups to be retained specified by boundary_groups
ChipTemplates
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ChipTemplates — Modulemodule ChipTemplatesAn ExamplePDK component module containing simple chips and coplanar-waveguide launchers.
ExamplePDK is intended for demonstrations, tutorials, and tests. While we aim to demonstrate best practices for Julia code and DeviceLayout.jl usage, these components are not optimized for device performance. Most importantly: Breaking changes to ExamplePDK may occur within major versions. In other words, don't depend on ExamplePDK in your own PDK or for real devices!
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ChipTemplates.ExampleChip — Typestruct ExampleChip <: ComponentA Component with rectangular geometry in the CHIP_AREA layer and uniformly spaced hooks.
Parameters
name = "chip": Name of componentnum_ports_lr = 12: Number of ports on the left and right edgesnum_ports_tb = 12: Number of ports on the top and bottom edgeslength_x = 15mm: x length of chiplength_y = 15mm: y length of chipdx = 1mm: x spacing of ports on top and bottomdy = 1mm: y spacing of ports on left and rightedge_gap_lr = 0.050mm: Gap between chip edge and ports on left and rightedge_gap_tb = 0.050mm: Gap between chip edge and ports on top and bottom
Hooks
port_i: Uniformly spaced around the edge of the chip within_directiontowards the edge of the chip, withibeginning at 1 at the top left and increasing clockwise
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ChipTemplates.example_launcher — Functionexample_launcher(port_spec)Create a coplanar-waveguide "launcher" in METAL_NEGATIVE created using launch!.
Returns a Path named "launcher_$role_$target", where role and target are the first two elements of port_spec. Hooks are given by hooks(::Path). Uses default parameters for launch! with rounding turned off.
This method exists for use in demonstrations. The launcher design is not optimized for microwave properties.
ClawCapacitors
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ClawCapacitors — Modulemodule ClawCapacitorsAn ExamplePDK component module containing claw capacitors for coupling coplanar waveguides in shunt and series configurations.
ExamplePDK is intended for demonstrations, tutorials, and tests. While we aim to demonstrate best practices for Julia code and DeviceLayout.jl usage, these components are not optimized for device performance. Most importantly: Breaking changes to ExamplePDK may occur within major versions. In other words, don't depend on ExamplePDK in your own PDK or for real devices!
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ClawCapacitors.ExampleSeriesClawCapacitor — TypeExampleSeriesClawCapacitor <: ComponentSeries capacitor between two coplanar lines. The input forms a claw around a pad at the output.
Contains hooks p0 at the input and p1 at the output, as well as left-handed versions p0_lh and p1_lh. (When left-handed hooks are fused to right-handed hooks, an extra reflection is applied when aligning the hooks—see HandedPointHook.)
This component is intended for use in demonstrations.
claw_inner_gap
←——→ ←——→
███████████████████
██ ██
██ ███████████ ██ ↑ claw_inner_gap
██ ███████████ ██ ↓
←input_length→██ ████ ↑ ████ ██
████████████████ ████ | ████████
input_style ████ inner_cap_length ↕ output_style.trace
████████████████ ████ | ████████ ↕ output_style.gap
██ ████ ↓ ████ ██
██ ███████████ ██
██←→███████████ ██
██claw_width↕ ██
↕███████████████████
claw_outer_gap←→ ←—→ inner_cap_widthParameters
name = "claw": Name of componentinput_length = 2μm: Length of input segmentinput_style = Paths.CPW(10μm, 6μm): Style of input pathinner_cap_width = 20μm: Width (short dimension, usually) of inner capacitor padinner_cap_length = 200μm: Length (long dimension) of inner capacitor padclaw_inner_gap = 5μm: Gap between claw and inner padclaw_width = 10μm: Width of claw metal traceclaw_outer_gap = 20μm: Outer gap around clawoutput_style = Paths.CPW(10μm, 6μm): Style of output pathrounding = 2μm: Rounding radius applied to the capacitor
Hooks
p0: Inputp1: Outputp0_lh: Input (left-handed)p1_lh: Output (left-handed)
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ClawCapacitors.ExampleShuntClawCapacitor — TypeExampleShuntClawCapacitor <: ComponentSimilar to ExampleSeriesClawCapacitor, but the capacitor is teed off a feedline.
Contains hooks p0 at the feedline input and p1 at the feedline output, as well as p2 at the capacitively coupled output, as well as left-handed versions. (When left-handed hooks are fused to right-handed hooks, an extra reflection is applied when aligning the hooks—see HandedPointHook.)
This component is intended for use in demonstrations.
Parameters
name = "claw": Name of componentfeedline_length = 300μm: Total length of feedlinefeedline_style = Paths.CPW(10μm, 6μm): Style of feedline pathinput_length = 20μm: Length of "input" path between edge of feedline and clawinput_style = Paths.CPW(10μm, 6μm): Style of "input" pathinner_cap_width = 20μm: Width (short dimension, usually) of inner capacitor padinner_cap_length = 200μm: Length (long dimension) of inner capacitor padclaw_inner_gap = 5μm: Gap between claw and inner padclaw_width = 10μm: Width of claw metal traceclaw_outer_gap = 20μm: Outer gap around clawoutput_style = Paths.CPW(10μm, 6μm): Style of output pathrounding = 2μm: Rounding radius applied to the capacitorbridge = nothing:CoordinateSystemholding the air bridge geometry for the feedline and input
Hooks
p0: Feedline inputp1: Feedline outputp2: Capacitively coupled outputp0_lh: Feedline input (left-handed)p1_lh: Feedline output (left-handed)p2_lh: Capacitively coupled output (left-handed)
ReadoutResonators
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ReadoutResonators — Modulemodule ReadoutResonatorsAn ExamplePDK component module containing resonators for transmon readout.
ExamplePDK is intended for demonstrations, tutorials, and tests. While we aim to demonstrate best practices for Julia code and DeviceLayout.jl usage, these components are not optimized for device performance. Most importantly: Breaking changes to ExamplePDK may occur within major versions. In other words, don't depend on ExamplePDK in your own PDK or for real devices!
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ReadoutResonators.ExampleClawedMeanderReadout — Typestruct ExampleClawedMeanderReadout <: ComponentReadout resonator consisting of a meander with short and claw-capacitor terminations.
This component is intended for use in demonstrations with ExampleRectangleTransmon.
Parameters
name: Name of componentstyle: Resonator CPW styletotal_length: Total length of resonatorcoupling_length: Length of coupling sectioncoupling_gap: Width of ground plane between coupling section and coupled linebend_radius: Meander bend radiusn_meander_turns: Number of meander turnstotal_height: Total height from top hook to bottom hookhanger_length: Length of hanger section between coupling section and meanderw_shield: Width of claw capacitor ground plane shieldw_claw: Claw trace widthl_claw: Claw finger lengthclaw_gap: Claw capacitor gapw_grasp: Width between inner edges of ground plane shieldbridge:CoordinateSystemcontaining a bridge
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ReadoutResonators.ExampleTappedHairpin — TypeExampleTappedHairpin <: ComponentA "hairpin" component with a tap and coupling capacitor before the bend and a meander after.
This component is intended for use in demonstrations.
Diagram shows positive metal path for simplicity, but the path is drawn in the METAL_NEGATIVE layer. Hooks are marked with ⋆ and an arrow in their inward direction.
:tap
↓
⋆
↕ tap_cap_coupling_distance
█████ ↑ ⤒
█████ tap_cap_length │
█████ ↓ tap_depth
███ ↕ tap_cap_taper_length │
←————tap_position————→█ ↓
:p0→⋆█████████████████████████████████ —
←————————straight_length————————→██
|← ... ██
██
███████████████████████████
|← ... total path length + assumed_extra_length = total_effective_lengthParameters
Note that when this component is created within an ExampleFilteredHairpinReadout, most of these defaults are overridden.
name = "res": Name of componenttotal_effective_length = 4mm: Total effective length, such that the resonant frequency occurs when this length is a quarter wavelength at that frequency (assuming some effective index)assumed_extra_length = 1.0mm: Assumed extra effective length such that the physical path length plusassumed_extra_lengthistotal_effective_length. For example, bends, bridges, and coupling capacitors may affect the effective length.r_bend = 50μm: Radius of hairpin bendstyle = Paths.CPW(10μm, 10μm): Path styleinitial_snake = Point(0μm, 0μm): If nonzero, add an initial s-curve to this point (in the hairpin coordinate system, where the path starts from the origin pointing along the positive x-axis)straight_length = 1.25μm: Length of first long straight section in hairpinbridge = nothing:CoordinateSystemholding the air bridge geometryParameters for tap and coupling capacitor to other resonator
tap_position = 0.7mm: Position of tap along initial straight segmenttap_location = -1: Side of hairpin for tap (+1 for right-hand side starting from qubit)tap_depth = 35μm: Distance from center of hairpin CPW to end of coupling capacitortap_style = Paths.CPW(5μm, 25μm): Style of tap pathtap_cap_taper_length = 5μm: Length of taper fromtap_styletotap_cap_styletap_cap_length = 10μm: Length of capacitive pad after tapertap_cap_style = Paths.CPW(25μm, 15μm): Width and gap-width of coupling capacitor as a CPW styletap_cap_termination_gap = 5μm: Gap between coupling capacitor metal and ground in the direction of couplingtap_cap_coupling_distance = 7.5μm: Distance from end of capacitor metal to:taphook
Hooks
p0: Start of hairpin pathtap: Distancetap_cap_coupling_distanceaway from the end of the tap capacitor metal, within_directionpointing back towards the hairpin
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ReadoutResonators.ExampleFilteredHairpinReadout — TypeExampleFilteredHairpinReadout <: CompositeComponentA pair of hairpin meanders to be used together with a transmon for Purcell-filtered readout.
This component is intended for use in demonstrations with ExampleStarTransmon.
Subcomponents
claw, anExampleShuntClawCapacitorefp("extra filter path"), aPathinserted between the claw and Purcell hairpinpurcell, anExampleTappedHairpinused for the Purcell filterreadout, anExampleTappedHairpinused for the readout resonator
Parameters
ExampleFilteredHairpinReadout mostly passes parameters directly to subcomponents.
name = "readout": Name of componentFeedline, tap, and claw capacitor (see
ExampleShuntClawCapacitor)feedline_length = 300μmfeedline_style = Paths.CPW(10μm, 6μm)feedline_tap_length = 20μmfeedline_tap_style = Paths.CPW(10μm, 6μm)feedline_bridge = nothinginner_cap_width = 20μminner_cap_length = 200μmclaw_inner_gap = 5μmclaw_width = 10μmclaw_outer_gap = 20μmrounding = 2μm
Extra claw-to-filter path
extra_filter_l1 = 300μm: Initial straight lengthextra_filter_θ1 = 0°: Bend angle following initial straightextra_filter_l2 = 0μm: Straight length following first bendextra_filter_θ2 = 0°: Second bend following second straight
Resonators (see
ExampleTappedHairpin)resonator_style = Paths.CPW(10μm, 10μm)r_bend = 50μmstraight_length = 1.5mm # Long straight segmentfilter_total_effective_length = 4mmfilter_assumed_extra_length = 1.0mmreadout_total_effective_length = 4mmreadout_assumed_extra_length = 1.0mmreadout_initial_snake = Point(600μm, 200μm)
Parameters for tap and coupling capacitor between resonators
tap_position = 0.77mm: Position of tap along initial straight segmenttap_location = -1: Side of hairpin for tap (+1 for right-hand side starting from qubit)hairpin_tap_depth = 35μm: Distance from center of hairpin CPW to end of coupling capacitorhairpin_tap_style = Paths.CPW(5μm, 25μm): Style of hairpin tap pathtap_cap_taper_length = 5μm: Length of taper fromtap_styletotap_cap_styletap_cap_length = 10μm: Length of capacitive pad after tapertap_cap_style = Paths.CPW(25μm, 15μm): Width and gap-width of coupling capacitor as a CPW styletap_cap_termination_gap = 5μm: Gap between coupling capacitor metal and ground in the direction of couplingtap_cap_coupling_distance = 7.5μm: Distance from end of capacitor metal to:taphook
Hooks
- `p0`: Input of the readout feedline
- `p1`: Output of the readout feedline # Feedline and tap
- `qubit`: End of the readout hairpin that connects galvanically to a capacitive pad in a qubit componentSimpleJunctions
DeviceLayout.SchematicDrivenLayout.ExamplePDK.SimpleJunctions — Modulemodule SimpleJunctionsAn ExamplePDK component module containing simple placeholder Josephson junctions and SQUIDs.
ExamplePDK is intended for demonstrations, tutorials, and tests. While we aim to demonstrate best practices for Julia code and DeviceLayout.jl usage, these components are not optimized for device performance. Most importantly: Breaking changes to ExamplePDK may occur within major versions. In other words, don't depend on ExamplePDK in your own PDK or for real devices!
DeviceLayout.SchematicDrivenLayout.ExamplePDK.SimpleJunctions.ExampleSimpleJunction — TypeExampleSimpleJunction <: ComponentAn example Josephson junction component with placeholder artwork.
This example component showcases that you can draw different geometry for different rendering targets. Junctions are often defined using double-angle evaporation, resulting in a physical metal pattern distinct from the geometry used for lithography. While it's possible to calculate that metal pattern based on process parameters like resist thicknesses and deposition angles, in this case, we take a shortcut and just define different rectangles for "artwork" and "simulation" which will be used or ignored based on rendering options.
The "artwork" geometry contains an unrealistic placeholder pattern in a single JUNCTION_PATTERN layer. The "simulation" geometry adds METAL_POSITIVE rectangles representing junction leads, connected by a LUMPED_ELEMENT rectangle.
:island hook
↓
⋆ —
█ ↑
█ │
█ │
▒↕ h_jj h_ground_island
█ │
→█← w_jj │
█ ↓
⋆ —
↑
:ground hookParameters
name = "junction": Name of componentw_jj = 1μm: Width of JJ and leadh_jj = 1μm: Height of JJ port rectangle / gap between leadsh_ground_island = 20μm: Total JJ ground-to-island heighth_excess = 2μm: Additional JJ lead height overlapping each of ground and island
Hooks
island: Hook where the "top" (in JJ coordinate system) JJ lead should meet the island, inward direction pointing downground: Hook where the "bottom" JJ lead should meet ground, inward direction pointing up
DeviceLayout.SchematicDrivenLayout.ExamplePDK.SimpleJunctions.ExampleSimpleSQUID — TypeExampleSimpleSQUID <: CompositeComponentAn example SQUID consisting of two ExampleSimpleJunctions.
The "artwork" geometry contains an unrealistic placeholder pattern in a single JUNCTION_PATTERN layer. The "simulation" geometry adds METAL_POSITIVE rectangles representing junction leads, connected by a LUMPED_ELEMENT rectangle.
:island hook
↓
⋆ —
█ █ ↑
█ █ │
█ █ │
▒ ▒↕ h_jj h_ground_island
█ █ │
█ →█← w_jj │
█ █ ↓
⋆ —
↑
:ground hookParameters
name = "squid": Name of componentjj_templates = (ExampleSimpleJunction(), ExampleSimpleJunction()): Templates for left and right (in the SQUID coordinate system) JJs, respectively, used to specify parameters not overridden by the SQUIDh_ground_island = 20μm: Total JJ ground-to-island heighth_excess = 2μm: Additional JJ lead height overlapping each of ground and islandw_squid: Distance between left and right JJs
Hooks
island: Hook at the center of the "top" (in SQUID coordinate system) edge of the SQUID loop meant to coincide with the edge of the island metal, inward direction pointing down
Transmons
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons — Modulemodule TransmonsAn ExamplePDK component module containing simple transmons and associated elements like static couplers and control lines.
ExamplePDK is intended for demonstrations, tutorials, and tests. While we aim to demonstrate best practices for Julia code and DeviceLayout.jl usage, these components are not optimized for device performance. Most importantly: Breaking changes to ExamplePDK may occur within major versions. In other words, don't depend on ExamplePDK in your own PDK or for real devices!
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleRectangleTransmon — Typestruct ExampleRectangleTransmon <: CompositeComponent
ExampleRectangleTransmon(base_parameters::NamedTuple=default_parameters(ExampleRectangleTransmon);
kwargs...)Transmon component with a rectangular island acting as a shunt capacitor across a junction or SQUID.
Parameters
name = "island": Name of componentjj_template = ExampleSimpleJunction(): Template to generate JJ or SQUID, wherenameandh_ground_islandwill be overriddencap_width = 24μm: The width of the rectangular islandcap_length = 520μm: The length of the rectangular islandcap_gap = 30μm: The gap surrounding the rectangular island, except the side with the junction/SQUIDjunction_gap = 12μm: The gap on the side of the island where the junction/SQUID will gojunction_pos = :bottom: Location to place junction/SQUID (options:topor:bottom)island_rounding = 0µm: Optional rounding radius to apply to the island; if zero, no rounding is applied to the island
Hooks
readout: The center edge of the ground plane on the opposite side of the island from the SQUID.xy: The left side of the capacitor gap.z: The center edge of the ground plane in the SQUID loop.
Subcomponents
island::ExampleRectangleIslandjunction::typeof(jj_template)
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleRectangleIsland — TypeExampleRectangleIsland <: ComponentExample transmon capacitor consisting of a rectangle.
The transmon island is a rectangle with surrounding gap and optional rounding.
Parameters
Note that when this component is created within an ExampleRectangleTransmon, these defaults are overwritten.
name = "island": Name of componentcap_width = 24μm: The width of the rectangular islandcap_length = 520μm: The length of the rectangular islandcap_gap = 30μm: The gap surrounding the rectangular island, except the side with the junction/SQUIDjunction_gap = 12μm: The gap on the side of the island where the junction/SQUID will gojunction_pos = :bottom: Location to place junction/SQUID (options:topor:bottom)island_rounding = 0µm: Optional rounding radius to apply to the island; if zero, no rounding is applied to the island
Hooks
junction: Attachment point where junction leads meet the islandreadout: Claw attachment point for the readout resonator, opposite thejunction_pos.xy: Attachment point for the XY line (left side, midpoint of island)z: Attachment point for the Z line
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleStarTransmon — TypeExampleStarTransmon <: CompositeComponentExample transmon component with five capacitive couplers and control lines.
The transmon island is a five-pointed star ⋆ with truncated tips. A Josephson junction subcomponent connects the top of the star (in the default orientation) to ground. Five wedge-shaped capacitive coupling pads fill the gaps between star arms. Four of them extend in the cardinal directions to half of the lattice_spacing from the island's center, while the other extends at an angle to couple to a readout resonator. XY and Z control line terminations are also included.
This component is intended for use in demonstrations.
Parameters
name = "transmon": Name of componentisland_outer_radius = 135μm: Radius of island at the tips of the starisland_inner_radius = [80, 80, 80, 80, 80]μm: Radii of island between the tips of stars, clockwise from 12 o'clock (smaller radius produces a larger coupler pad at that location; index5is the coupler to the readout resonator)island_ground_gap = 15μm: Gap between island (tips of star) and groundisland_coupler_gap = 15μm: Gap between island and couplersstar_tip_width = 50μm: Width of star tipsrounding = 5μm: Rounding applied to ground plane geometryjj_template = ExampleSimpleSQUID(): Template to generate JJ or SQUID, wherenameandh_ground_islandwill be overriddenlattice_spacing = 1.65mm: Spacing between transmons (determines coupler length)right_handed = true: Iffalse, is reflected when attached to right-handed transmonscoupler_style = Paths.CPW(10μm, 10μm):Pathstyle for couplersresonator_style = Paths.CPW(10μm, 10μm):Pathstyle for readout resonator (coupler index5includes a taper fromcoupler_styletoresonator_style)grounded_couplers = Int[]: List of grounded coupler indices (1 to 5, clockwise from 12 o'clock)coupler_bridge = nothing:CoordinateSystemholding a bridge to place over couplersfeedline_style = Paths.CPW(10μm, 6μm): XY/Z control feedline style (before taper)xy_length = 100μm: Straight length of XY line before terminationxy_style = Paths.CPW(3.3μm, 2μm): XY control line style after taper (near the qubit)xy_distance = 50μm: Distance from XY termination to ground plane edge near qubitz_length = 100μm: Straight length of Z line before terminationz_style = Paths.CPW(3.3μm, 2μm): Style of the Z line after taper (near the qubit)z_cut_offset = 0μm: Offset of z cut relative to SQUID axis of symmetryz_cut_length = 16μm: Length of cut defining a return current path shared by the SQUID loopz_distance = 2μm: Distance from edge of ground plane cut to qubitcontrol_bridge = nothing:CoordinateSystemholding a bridge to place over control lines
Hooks
origin: Center of transmon island, with inward direction pointing rightreadout: Readout couplercoupler_{N,E,S,W}: North/South/East/West (in transmon coordinate system)xy: End of XY line to be connected to control feedlinez: End of Z line to be connected to control feedline
Subcomponents
island::ExampleStarIslandjunction::typeof(jj_template)readout_coupler::Pathcoupler_1::Path(N in transmon coordinate system)coupler_2::Path(E)coupler_3::Path(S)coupler_4::Path(W)xy::ExampleXYTerminationz::ExampleZTermination
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleStarIsland — TypeExampleStarIsland <: ComponentExample transmon capacitor with five capacitive couplers.
The transmon island is a five-pointed star with truncated tips. Five wedge-shaped capacitive coupling pads fill the gaps between star arms.
Parameters
Note that when this component is created within an ExampleStarTransmon, these defaults are overridden.
name = "island": Name of componentisland_outer_radius = 135μm: Radius of island at the tips of the starisland_inner_radius = [80, 80, 80, 80, 80]μm: Radii of island between the tips of stars, clockwise from 12 o'clock (smaller radius produces a larger coupler pad at that location)island_ground_gap = 15μm: Gap between island (tips of star) and groundisland_coupler_gap = 15μm: Gap between island and couplersstar_tip_width = 50μm: Width of star tipscoupler_style = Paths.CPW(10μm, 10μm):Pathstyle for couplersrounding = 5μm: Rounding applied to ground plane geometry
Hooks
coupler_i, forifrom1to5: Interface point for coupler, clockwise from 12 o'clock, inward direction pointing back towards islandjunction: Edge of star tip1that connects to junction or SQUID, inward direction pointing downorigin: Center of star, with inward direction pointing rightxy: Edge of ground plane opposite star tip5, inward direction pointing rightz: Edge of ground plane opposite star tip5, inward direction pointing down
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleXYTermination — TypeExampleXYTerminationComponent for terminating a coplanar waveguide with an open for driving a qubit via weak capacitive coupling.
Contains a taper to the desired CPW dimensions and an optional s-curve for floorplanning convenience.
Parameters
name = "xyterm": Name of componentxy_length = 100μm: Straight length of XY line before terminationxy_style = Paths.CPW(3.3μm, 2μm): XY control line style after taper (near the qubit)xy_snake = Point(350μm, -100μm): If nonzero, add an s-curve to this point before the finalxy_lengthstraight section before terimation (in the component coordinate system, where the path starts withfeedline_stylefrom the origin pointing along the positive x-axis)xy_distance = 50μm: Distance from XY termination to ground plane edge near qubittaper_length = 100μm: Length of taper fromfeedline_styletoxy_stylefeedline_style = Paths.CPW(10μm, 6μm): Initial style before taper towards qubitbridge = nothing:CoordinateSystemholding the air bridge geometrybridge_spacing = 100μm: Spacing of bridges on the linelast_bridge = 50μm: Distance from the last bridge to the end of the line
Hooks
line: Input to be connected to a feedlinequbit: Distancexy_distancebeyond the edge of the termination, with inward direction back towards the XY line
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleZTermination — TypeExampleZTermination <: ComponentComponent for terminating a coplanar waveguide with an asymmetric short, as to apply flux bias to a SQUID.
Contains a taper to the desired CPW dimensions and an optional bend for floorplanning convenience.
This component is intended for use in demonstrations.
Example (hooks marked with ⋆ and an arrow in their inward direction):
██ (+z_cut_length + z_cut_offset) / 2 ⤒
██
z_style.gap →██←
██
██████████████
:line→⋆ z_style ██|←z_distance→|⋆←:qubit 0 —
██████████ ██
←z_length→ ██
██
██ (-z_cut_length + z_cut_offset) / 2 ⤓Parameters
Note that when this component is created within an ExampleStarTransmon, most of these defaults are overridden.
name = "zterm": Name of componentz_length = 100μm: Straight length of Z line before terminationz_style = Paths.CPW(3.3μm, 2μm): Style of the Z line near the qubitz_cut_offset = 0μm: Offset of z cut relative to SQUID axis of symmetryz_cut_length = 16μm: Length of cut defining a return current path shared by the SQUID loopz_distance = 2μm: Distance from edge of ground plane cut to qubitz_bend_angle = -45°: Angle of bend in Z line (moving towards the qubit)z_bend_radius = 140μm: Radius of bend in Z linetaper_length = 100μm: Length of taper fromfeedline_styletoz_stylefeedline_style = Paths.CPW(10μm, 6μm): Initial style before taper towards qubitbridge = nothing:CoordinateSystemholding the air bridge geometrybridge_spacing = 30μm: Spacing of bridges on the linelast_bridge = 20μm: Distance from the last bridge to the end of the line
Hooks
line: Input to be connected to a feedlinequbit: Distancez_distancebeyond the edge of the ground plane cut, with inward direction back towards the Z line