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_RECORD
A NamedTuple
mapping semantic layer name Symbol
s 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 LayerVocabulary
Exports 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::ProcessTechnology
A ProcessTechnology
combining the ExamplePDK
layer record with process parameters for single chip assembly.
DeviceLayout.SchematicDrivenLayout.ExamplePDK.EXAMPLE_FLIPCHIP_TECHNOLOGY
— Constantconst EXAMPLE_FLIPCHIP_TECHNOLOGY::ProcessTechnology
A ProcessTechnology
combining the ExamplePDK
layer record with process parameters for flipchip assembly.
DeviceLayout.SchematicDrivenLayout.ExamplePDK.SINGLECHIP_SOLIDMODEL_TARGET
— Constantconst SINGLECHIP_SOLIDMODEL_TARGET::SolidModelTarget
A 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::SolidModelTarget
A 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 ChipTemplates
An 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 <: Component
A 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_direction
towards the edge of the chip, withi
beginning 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!
with its defaults.
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)
.
This method exists for use in demonstrations. The launcher design is not optimized for microwave properties.
ClawCapacitors
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ClawCapacitors
— Modulemodule ClawCapacitors
An 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 <: Component
Series 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_width
Parameters
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 <: Component
Similar 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
:CoordinateSystem
holding 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 ReadoutResonators
An 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 <: Component
Readout 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
:CoordinateSystem
containing a bridge
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ReadoutResonators.ExampleTappedHairpin
— TypeExampleTappedHairpin <: Component
A "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_length
Parameters
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_length
istotal_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
:CoordinateSystem
holding 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_style
totap_cap_style
tap_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:tap
hook
Hooks
p0
: Start of hairpin pathtap
: Distancetap_cap_coupling_distance
away from the end of the tap capacitor metal, within_direction
pointing back towards the hairpin
DeviceLayout.SchematicDrivenLayout.ExamplePDK.ReadoutResonators.ExampleFilteredHairpinReadout
— TypeExampleFilteredHairpinReadout <: CompositeComponent
A 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
, anExampleShuntClawCapacitor
efp
("extra filter path"), aPath
inserted between the claw and Purcell hairpinpurcell
, anExampleTappedHairpin
used for the Purcell filterreadout
, anExampleTappedHairpin
used 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μm
feedline_style = Paths.CPW(10μm, 6μm)
feedline_tap_length = 20μm
feedline_tap_style = Paths.CPW(10μm, 6μm)
feedline_bridge = nothing
inner_cap_width = 20μm
inner_cap_length = 200μm
claw_inner_gap = 5μm
claw_width = 10μm
claw_outer_gap = 20μm
rounding = 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μm
straight_length = 1.5mm # Long straight segment
filter_total_effective_length = 4mm
filter_assumed_extra_length = 1.0mm
readout_total_effective_length = 4mm
readout_assumed_extra_length = 1.0mm
readout_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_style
totap_cap_style
tap_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:tap
hook
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 component
SimpleJunctions
DeviceLayout.SchematicDrivenLayout.ExamplePDK.SimpleJunctions
— Modulemodule SimpleJunctions
An 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 <: Component
An 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 JUNCTIONPATTERN layer. The "simulation" geometry adds METALPOSITIVE rectangles representing junction leads, connected by a LUMPED_ELEMENT rectangle.
:island hook
↓
⋆ —
█ ↑
█ │
█ │
▒↕ h_jj h_ground_island
█ │
→█← w_jj │
█ ↓
⋆ —
↑
:ground hook
Parameters
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 <: CompositeComponent
An example SQUID consisting of two ExampleSimpleJunction
s.
The "artwork" geometry contains an unrealistic placeholder pattern in a single JUNCTIONPATTERN layer. The "simulation" geometry adds METALPOSITIVE rectangles representing junction leads, connected by a LUMPED_ELEMENT rectangle.
:island hook
↓
⋆ —
█ █ ↑
█ █ │
█ █ │
▒ ▒↕ h_jj h_ground_island
█ █ │
█ →█← w_jj │
█ █ ↓
⋆ —
↑
:ground hook
Parameters
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 Transmons
An 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, wherename
andh_ground_island
will 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:top
or:bottom
)island_rounding = 0µm
: Optional rounding radius to apply to the island; if zero, no rounding is applied to the island
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleRectangleIsland
— TypeExampleRectangleIsland <: Component
Example 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:top
or: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 <: CompositeComponent
Example 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; index5
is 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, wherename
andh_ground_island
will 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)
:Path
style for couplersresonator_style = Paths.CPW(10μm, 10μm)
:Path
style for readout resonator (coupler index5
includes a taper fromcoupler_style
toresonator_style
)grounded_couplers = Int[]
: List of grounded coupler indices (1 to 5, clockwise from 12 o'clock)coupler_bridge = nothing
:CoordinateSystem
holding 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
:CoordinateSystem
holding 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
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleStarIsland
— TypeExampleStarIsland <: Component
Example 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)
:Path
style for couplersrounding = 5μm
: Rounding applied to ground plane geometry
Hooks
coupler_i
, fori
from1
to5
: Interface point for coupler, clockwise from 12 o'clock, inward direction pointing back towards islandjunction
: Edge of star tip1
that 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
— TypeExampleXYTermination
Component 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_length
straight section before terimation (in the component coordinate system, where the path starts withfeedline_style
from 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_style
toxy_style
feedline_style = Paths.CPW(10μm, 6μm)
: Initial style before taper towards qubitbridge = nothing
:CoordinateSystem
holding 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_distance
beyond the edge of the termination, with inward direction back towards the XY line
DeviceLayout.SchematicDrivenLayout.ExamplePDK.Transmons.ExampleZTermination
— TypeExampleZTermination <: Component
Component 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_style
toz_style
feedline_style = Paths.CPW(10μm, 6μm)
: Initial style before taper towards qubitbridge = nothing
:CoordinateSystem
holding 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_distance
beyond the edge of the ground plane cut, with inward direction back towards the Z line