{ "cells": [ { "cell_type": "markdown", "id": "0a9a7735", "metadata": {}, "source": [ "# A.2 Reference design — Two coupled transmons\n", "\n", "Two transmons, each with its own multiplexed readout resonator, joined by a meandered coplanar-waveguide coupling bus — the building block of a two-qubit gate.\n", "\n", "> **Reference design — attribution.** Adapted, with attribution, from the open-source [SQDMetal](https://github.com/sqdlab/SQDMetal) project (Apache-2.0) and its benchmark devices in D. Sommers, P. Pakkiam, Z. Degnan, C.-C. Chiu, D. Gautam, Y.-H. Chen, and A. Fedorov, *\"Open-Source Highly Parallel Electromagnetic Simulations for Superconducting Circuits,\"* [arXiv:2511.01220](https://arxiv.org/abs/2511.01220) (2025). Re-implemented here with stock Quantum Metal components." ] }, { "cell_type": "markdown", "id": "4737c02b", "metadata": {}, "source": [ "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/qiskit-community/qiskit-metal/blob/main/docs/tut/full-design-examples/A.2-Two-coupled-transmons.ipynb)\n", "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/qiskit-community/qiskit-metal/main?labpath=docs%2Ftut%2Ffull-design-examples%2FA.2-Two-coupled-transmons.ipynb)\n", "\n", "> 💡 **Running in Colab or Binder?** Skip the desktop GUI install — the cell below grabs the lite (no-Qt) wheel, and `qm.gui(design)` auto-picks an inline matplotlib viewer with the same API as the desktop `MetalGUI`." ] }, { "cell_type": "code", "execution_count": 1, "id": "134cc2be", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:17.302619Z", "iopub.status.busy": "2026-06-18T21:27:17.302439Z", "iopub.status.idle": "2026-06-18T21:27:17.306253Z", "shell.execute_reply": "2026-06-18T21:27:17.305148Z" } }, "outputs": [], "source": [ "# In Colab / Binder, uncomment to install Quantum Metal (lite, no Qt).\n", "# Locally you should already have it via `pip install quantum-metal` or\n", "# `pip install 'quantum-metal[gui]'` for the desktop GUI.\n", "# !pip install -q quantum-metal" ] }, { "cell_type": "code", "execution_count": 2, "id": "add83f69", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:17.308231Z", "iopub.status.busy": "2026-06-18T21:27:17.308063Z", "iopub.status.idle": "2026-06-18T21:27:19.361806Z", "shell.execute_reply": "2026-06-18T21:27:19.360487Z" } }, "outputs": [], "source": [ "import qiskit_metal as qm\n", "from qiskit_metal import Dict, designs\n", "from qiskit_metal.qlibrary.qubits.transmon_pocket import TransmonPocket\n", "from qiskit_metal.qlibrary.tlines.meandered import RouteMeander\n", "from qiskit_metal.qlibrary.tlines.pathfinder import RoutePathfinder\n", "from qiskit_metal.qlibrary.couplers.coupled_line_tee import CoupledLineTee\n", "from qiskit_metal.qlibrary.terminations.launchpad_wb import LaunchpadWirebond\n", "\n", "design = designs.DesignPlanar()\n", "design.overwrite_enabled = True\n", "\n", "# The default die is 9mm x 6mm; the launchpads below sit outside it.\n", "design.chips.main.size.size_x = \"14mm\"\n", "design.chips.main.size.size_y = \"9mm\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "806dd9a7", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:19.363928Z", "iopub.status.busy": "2026-06-18T21:27:19.363718Z", "iopub.status.idle": "2026-06-18T21:27:19.368449Z", "shell.execute_reply": "2026-06-18T21:27:19.367523Z" } }, "outputs": [], "source": [ "def feed(a, ap, b, bp, name):\n", " \"\"\"Auto-route a coplanar-waveguide feedline segment between two pins.\"\"\"\n", " RoutePathfinder(\n", " design,\n", " name,\n", " options=dict(\n", " fillet=\"90um\",\n", " pin_inputs=Dict(\n", " start_pin=Dict(component=a, pin=ap), end_pin=Dict(component=b, pin=bp)\n", " ),\n", " ),\n", " )\n", "\n", "\n", "def readout(clt, q, name, length):\n", " \"\"\"Meandered lambda/4 readout resonator: coupled-line tee -> qubit readout pad.\"\"\"\n", " RouteMeander(\n", " design,\n", " name,\n", " options=dict(\n", " fillet=\"90um\",\n", " total_length=length,\n", " lead=Dict(start_straight=\"100um\", end_straight=\"100um\"),\n", " pin_inputs=Dict(\n", " start_pin=Dict(component=clt, pin=\"second_end\"),\n", " end_pin=Dict(component=q, pin=\"readout\"),\n", " ),\n", " ),\n", " )" ] }, { "cell_type": "markdown", "id": "62588bde", "metadata": {}, "source": [ "## 1. Two transmons\n", "\n", "Each transmon gets a `readout` pad (top, outward) and a `coupler` pad (bottom, facing its neighbour)." ] }, { "cell_type": "code", "execution_count": 4, "id": "40d21413", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:19.370318Z", "iopub.status.busy": "2026-06-18T21:27:19.370136Z", "iopub.status.idle": "2026-06-18T21:27:19.473597Z", "shell.execute_reply": "2026-06-18T21:27:19.472415Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
Q2TransmonPocketid 2 · 52 options, 7 changed · 2 pins, 0 connected
\n", "\"Q2\"\n", "
Options7 changed from the defaults\n", "
changed from the class default (hover the name for the default)
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
optionvalueparseddescription
pos_x'2.5mm'2.5The x/y position of the center of the QComponent.
pos_y'-1.5mm'-1.5The x/y position of the center of the QComponent.
orientation'0.0'0.0The primary direction in degrees of the QComponent. Expressed counter-clockwise orientation.
chip'main''main'Chip holding the QComponent.
layer'1'1.0Manufacturing layer used for the QComponent.
connection_padsThe dictionary which contains all active connection lines for the qubit.
readout
pad_gap'15um'0.015Space between the connector pad and the charge island it is nearest to
pad_width'125um'0.125Width (x-axis) of the connector pad
pad_height'30um'0.03Height (y-axis) of the connector pad
pad_cpw_shift'5um'0.005Shift the connector pad cpw line by this much away from qubit
pad_cpw_extent'25um'0.025Shift the connector pad cpw line by this much away from qubit
cpw_width'cpw_width'0.01Center trace width of the CPW line
cpw_gap'cpw_gap'0.006Dielectric gap width of the CPW line
cpw_extend'100um'0.1Depth the connector line extense into ground (past the pocket edge)
pocket_extent'5um'0.005How deep into the pocket should we penetrate with the cpw connector (into the fround plane)
pocket_rise'65um'0.065How far up or downrelative to the center of the transmon should we elevate the cpw connection point on the ground plane
loc_W11Width location only +-1
loc_H11Height location only +-1
coupler
pad_gap'15um'0.015Space between the connector pad and the charge island it is nearest to
pad_width'125um'0.125Width (x-axis) of the connector pad
pad_height'30um'0.03Height (y-axis) of the connector pad
pad_cpw_shift'5um'0.005Shift the connector pad cpw line by this much away from qubit
pad_cpw_extent'25um'0.025Shift the connector pad cpw line by this much away from qubit
cpw_width'cpw_width'0.01Center trace width of the CPW line
cpw_gap'cpw_gap'0.006Dielectric gap width of the CPW line
cpw_extend'100um'0.1Depth the connector line extense into ground (past the pocket edge)
pocket_extent'5um'0.005How deep into the pocket should we penetrate with the cpw connector (into the fround plane)
pocket_rise'65um'0.065How far up or downrelative to the center of the transmon should we elevate the cpw connection point on the ground plane
loc_W-1-1Width location only +-1
loc_H-1-1Height location only +-1
pad_gap'30um'0.03The distance between the two charge islands, which is also the resulting 'length' of the pseudo junction
inductor_width'20um'0.02Width of the pseudo junction between the two charge islands (if in doubt, make the same as pad_gap). Really just for simulating in HFSS / other EM software
pad_width'425um'0.425The width (x-axis) of the charge island pads
pad_height'90um'0.09The size (y-axis) of the charge island pads
pocket_width'650um'0.65Size of the pocket (cut out in ground) along x-axis
pocket_height'650um'0.65Size of the pocket (cut out in ground) along y-axis
hfss_wire_bondsFalseFalseAdd wire bonds over this path when rendered to hfss.
q3d_wire_bondsFalseFalseAdd wire bonds over this path when rendered to q3d.
aedt_q3d_wire_bondsFalseFalseAdd wire bonds over this path when rendered to aedt_q3d.
aedt_hfss_wire_bondsFalseFalseAdd wire bonds over this path when rendered to aedt_hfss.
hfss_inductance'10nH''10nH'Junction inductance used when the junction is rendered to hfss.
hfss_capacitance00Junction capacitance used by hfss (0: none).
hfss_resistance00Junction resistance used by hfss (0: none).
hfss_mesh_kw_jj7e-067e-06Largest mesh element on the junction in hfss, in meters.
q3d_inductance'10nH''10nH'Junction inductance used when the junction is rendered to q3d.
q3d_capacitance00Junction capacitance used by q3d (0: none).
q3d_resistance00Junction resistance used by q3d (0: none).
q3d_mesh_kw_jj7e-067e-06Largest mesh element on the junction in q3d, in meters.
gds_cell_name'my_other_junction''my_other_junction'Cell of the junction GDS file (the GDS renderer's path_filename) that replaces this component's junction on export.
aedt_q3d_inductance1e-081e-08Junction inductance used when the junction is rendered to aedt_q3d.
aedt_q3d_capacitance00Junction capacitance used by aedt_q3d (0: none).
aedt_hfss_inductance1e-081e-08Junction inductance used when the junction is rendered to aedt_hfss.
aedt_hfss_capacitance00Junction capacitance used by aedt_hfss (0: none).
\n", "
Pins2 pins, 0 connected
pinmiddle (mm)normalwidth (mm)connected to
readout(2.9250, -1.3050)0.0°0.01—
coupler(2.0750, -1.6950)180.0°0.01—
\n", "
" ], "text/plain": [ "\u001b[95m\u001b[1mname: \u001b[94m\u001b[1mQ2\u001b[0m\n", "\u001b[95m\u001b[1mclass: \u001b[94m\u001b[1mTransmonPocket \u001b[0m\n", "\u001b[95m\u001b[1moptions: \u001b[0m\n", " 'pos_x' : '2.5mm', \n", " 'pos_y' : '-1.5mm', \n", " 'orientation' : '0.0', \n", " 'chip' : 'main', \n", " 'layer' : '1', \n", " \u001b[1m'connection_pads' \u001b[0m: {\n", " \u001b[1m'readout' \u001b[0m: {\n", " 'pad_gap' : '15um', \n", " 'pad_width' : '125um', \n", " 'pad_height' : '30um', \n", " 'pad_cpw_shift' : '5um', \n", " 'pad_cpw_extent' : '25um', \n", " 'cpw_width' : 'cpw_width', \n", " 'cpw_gap' : 'cpw_gap', \n", " 'cpw_extend' : '100um', \n", " 'pocket_extent' : '5um', \n", " 'pocket_rise' : '65um', \n", " 'loc_W' : 1, \n", " 'loc_H' : 1, \n", " },\n", " \u001b[1m'coupler' \u001b[0m: {\n", " 'pad_gap' : '15um', \n", " 'pad_width' : '125um', \n", " 'pad_height' : '30um', \n", " 'pad_cpw_shift' : '5um', \n", " 'pad_cpw_extent' : '25um', \n", " 'cpw_width' : 'cpw_width', \n", " 'cpw_gap' : 'cpw_gap', \n", " 'cpw_extend' : '100um', \n", " 'pocket_extent' : '5um', \n", " 'pocket_rise' : '65um', \n", " 'loc_W' : -1, \n", " 'loc_H' : -1, \n", " },\n", " },\n", " 'pad_gap' : '30um', \n", " 'inductor_width' : '20um', \n", " 'pad_width' : '425um', \n", " 'pad_height' : '90um', \n", " 'pocket_width' : '650um', \n", " 'pocket_height' : '650um', \n", " 'hfss_wire_bonds' : False, \n", " 'q3d_wire_bonds' : False, \n", " 'aedt_q3d_wire_bonds': False, \n", " 'aedt_hfss_wire_bonds': False, \n", " 'hfss_inductance' : '10nH', \n", " 'hfss_capacitance' : 0, \n", " 'hfss_resistance' : 0, \n", " 'hfss_mesh_kw_jj' : 7e-06, \n", " 'q3d_inductance' : '10nH', \n", " 'q3d_capacitance' : 0, \n", " 'q3d_resistance' : 0, \n", " 'q3d_mesh_kw_jj' : 7e-06, \n", " 'gds_cell_name' : 'my_other_junction', \n", " 'aedt_q3d_inductance': 1e-08, \n", " 'aedt_q3d_capacitance': 0, \n", " 'aedt_hfss_inductance': 1e-08, \n", " 'aedt_hfss_capacitance': 0, \n", "\u001b[95m\u001b[1mmodule: \u001b[94m\u001b[1mqiskit_metal.qlibrary.qubits.transmon_pocket\u001b[0m\n", "\u001b[95m\u001b[1mid: \u001b[94m\u001b[1m2\u001b[0m" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "TransmonPocket(\n", " design,\n", " \"Q1\",\n", " options=dict(\n", " pos_x=\"-2.5mm\",\n", " pos_y=\"-1.5mm\",\n", " pad_width=\"425um\",\n", " pocket_height=\"650um\",\n", " connection_pads=dict(\n", " readout=dict(loc_W=-1, loc_H=1), coupler=dict(loc_W=1, loc_H=-1)\n", " ),\n", " ),\n", ")\n", "TransmonPocket(\n", " design,\n", " \"Q2\",\n", " options=dict(\n", " pos_x=\"2.5mm\",\n", " pos_y=\"-1.5mm\",\n", " pad_width=\"425um\",\n", " pocket_height=\"650um\",\n", " connection_pads=dict(\n", " readout=dict(loc_W=1, loc_H=1), coupler=dict(loc_W=-1, loc_H=-1)\n", " ),\n", " ),\n", ")" ] }, { "cell_type": "markdown", "id": "882839a7", "metadata": {}, "source": [ "## 2. Shared feedline + two readout resonators\n", "\n", "One feedline, two coupled-line tees, two resonators of slightly different length (frequency-multiplexed readout)." ] }, { "cell_type": "code", "execution_count": 5, "id": "e357691e", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:19.475938Z", "iopub.status.busy": "2026-06-18T21:27:19.475746Z", "iopub.status.idle": "2026-06-18T21:27:19.656884Z", "shell.execute_reply": "2026-06-18T21:27:19.655653Z" } }, "outputs": [], "source": [ "CoupledLineTee(\n", " design,\n", " \"clt1\",\n", " options=dict(\n", " pos_x=\"-2.5mm\",\n", " pos_y=\"1.5mm\",\n", " coupling_length=\"350um\",\n", " down_length=\"300um\",\n", " fillet=\"90um\",\n", " open_termination=False,\n", " ),\n", ")\n", "CoupledLineTee(\n", " design,\n", " \"clt2\",\n", " options=dict(\n", " pos_x=\"2.5mm\",\n", " pos_y=\"1.5mm\",\n", " coupling_length=\"350um\",\n", " down_length=\"300um\",\n", " fillet=\"90um\",\n", " open_termination=False,\n", " ),\n", ")\n", "LaunchpadWirebond(\n", " design, \"LP1\", options=dict(pos_x=\"-6mm\", pos_y=\"1.5mm\", orientation=\"0\")\n", ")\n", "LaunchpadWirebond(\n", " design, \"LP2\", options=dict(pos_x=\"6mm\", pos_y=\"1.5mm\", orientation=\"180\")\n", ")\n", "feed(\"LP1\", \"tie\", \"clt1\", \"prime_start\", \"feed_L\")\n", "feed(\"clt1\", \"prime_end\", \"clt2\", \"prime_start\", \"feed_M\")\n", "feed(\"clt2\", \"prime_end\", \"LP2\", \"tie\", \"feed_R\")\n", "readout(\"clt1\", \"Q1\", \"read1\", \"7.0mm\")\n", "readout(\"clt2\", \"Q2\", \"read2\", \"7.2mm\")" ] }, { "cell_type": "markdown", "id": "753604bb", "metadata": {}, "source": [ "## 3. Qubit-qubit coupling bus\n", "\n", "A meandered CPW between the two `coupler` pads sets the exchange coupling." ] }, { "cell_type": "code", "execution_count": 6, "id": "c1a15ae2", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:19.659469Z", "iopub.status.busy": "2026-06-18T21:27:19.659139Z", "iopub.status.idle": "2026-06-18T21:27:19.716235Z", "shell.execute_reply": "2026-06-18T21:27:19.714997Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "06:53PM 22s WARNING [check_lengths]: For path table, component=coupler_bus, key=trace has short segments that could cause issues with fillet. Values in (37-38) are index(es) in shapely geometry.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "06:53PM 22s WARNING [check_lengths]: For path table, component=coupler_bus, key=cut has short segments that could cause issues with fillet. Values in (37-38) are index(es) in shapely geometry.\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "
\n", "
coupler_busRouteMeanderid 12 · 23 options, 9 changed · 2 pins, 2 connected
\n", "\"coupler_bus\"\n", "
Options9 changed from the defaults\n", "
changed from the class default (hover the name for the default)
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
optionvalueparseddescription
chip'main''main'Chip holding the QComponent.
layer'1'1.0Manufacturing layer used for the QComponent.
pin_inputs
start_pinComponent and pin string pair. Define which pin to start from
component'Q1''Q1'Name of component to start from, which has a pin
pin'coupler''coupler'Name of pin used for pin_start
end_pinComponent and pin string pair. Define which pin to start from
component'Q2''Q2'Name of component to end on, which has a pin
pin'coupler''coupler'Name of pin used for pin_end
fillet'90um'0.09
lead
start_straight'150um'0.15Lead-in, defined as the straight segment extension from start_pin. Defaults to 0.1um.
end_straight'150um'0.15Lead-out, defined as the straight segment extension from end_pin. Defaults to 0.1um.
start_jogged_extension''''Lead-in, jogged extension of lead-in. Described as list of tuples
end_jogged_extension''''Lead-out, jogged extension of lead-out. Described as list of tuples
total_length'8mm'8
trace_width'cpw_width'0.01Defines the width of the line. Defaults to 'cpw_width'.
meander
spacing'200um'0.2Minimum spacing between adjacent meander curves. Defaults to 200um.
asymmetry'200um'0.2offset between the center-line of the meander and the center-line that stretches from the tip of lead-in to the x (or y) coordinate of the tip of the lead-out. Defaults to '0um'.
snap'true''true'
prevent_short_edges'true''true'
hfss_wire_bondsFalseFalseAdd wire bonds over this path when rendered to hfss.
q3d_wire_bondsFalseFalseAdd wire bonds over this path when rendered to q3d.
aedt_q3d_wire_bondsFalseFalseAdd wire bonds over this path when rendered to aedt_q3d.
aedt_hfss_wire_bondsFalseFalseAdd wire bonds over this path when rendered to aedt_hfss.
trace_gap'cpw_gap'0.006
_actual_length'7.999999999999844 mm'7.999999999999844
\n", "
Pins2 pins, 2 connected
pinmiddle (mm)normalwidth (mm)connected to
start(-2.0750, -1.6950)180.0°0.01Q1.coupler
end(2.0750, -1.6950)0.0°0.01Q2.coupler
\n", "
" ], "text/plain": [ "\u001b[95m\u001b[1mname: \u001b[94m\u001b[1mcoupler_bus\u001b[0m\n", "\u001b[95m\u001b[1mclass: \u001b[94m\u001b[1mRouteMeander \u001b[0m\n", "\u001b[95m\u001b[1moptions: \u001b[0m\n", " 'chip' : 'main', \n", " 'layer' : '1', \n", " \u001b[1m'pin_inputs' \u001b[0m: {\n", " \u001b[1m'start_pin' \u001b[0m: {\n", " 'component' : 'Q1', \n", " 'pin' : 'coupler', \n", " },\n", " \u001b[1m'end_pin' \u001b[0m: {\n", " 'component' : 'Q2', \n", " 'pin' : 'coupler', \n", " },\n", " },\n", " 'fillet' : '90um', \n", " \u001b[1m'lead' \u001b[0m: {\n", " 'start_straight' : '150um', \n", " 'end_straight' : '150um', \n", " 'start_jogged_extension': '', \n", " 'end_jogged_extension': '', \n", " },\n", " 'total_length' : '8mm', \n", " 'trace_width' : 'cpw_width', \n", " \u001b[1m'meander' \u001b[0m: {\n", " 'spacing' : '200um', \n", " 'asymmetry' : '200um', \n", " },\n", " 'snap' : 'true', \n", " 'prevent_short_edges': 'true', \n", " 'hfss_wire_bonds' : False, \n", " 'q3d_wire_bonds' : False, \n", " 'aedt_q3d_wire_bonds': False, \n", " 'aedt_hfss_wire_bonds': False, \n", " 'trace_gap' : 'cpw_gap', \n", " '_actual_length' : '7.999999999999844 mm', \n", "\u001b[95m\u001b[1mmodule: \u001b[94m\u001b[1mqiskit_metal.qlibrary.tlines.meandered\u001b[0m\n", "\u001b[95m\u001b[1mid: \u001b[94m\u001b[1m12\u001b[0m" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "RouteMeander(\n", " design,\n", " \"coupler_bus\",\n", " options=dict(\n", " fillet=\"90um\",\n", " total_length=\"8mm\",\n", " lead=Dict(start_straight=\"150um\", end_straight=\"150um\"),\n", " meander=Dict(asymmetry=\"200um\"),\n", " pin_inputs=Dict(\n", " start_pin=Dict(component=\"Q1\", pin=\"coupler\"),\n", " end_pin=Dict(component=\"Q2\", pin=\"coupler\"),\n", " ),\n", " ),\n", ")" ] }, { "cell_type": "markdown", "id": "1b527d31", "metadata": {}, "source": [ "## 4. Visualize" ] }, { "cell_type": "markdown", "id": "14ac4481", "metadata": {}, "source": [ "## Next steps\n", "\n", "- **Inspect** the design tree: `design.components.keys()` and `design.qgeometry.tables`.\n", "- **Export GDS** for fabrication: `design.renderers.gds.export_to_gds('chip.gds')` (Quantum Metal uses the modern `gdstk` backend).\n", "- **Simulate**: render to Ansys HFSS/Q3D (the validation gold standard) or to the open-source FEM path (Gmsh + Elmer today; AWS Palace on the roadmap) to extract eigenmodes, *Q*, and the capacitance matrix.\n", "- **Tweak**: every dimension above is a parameter — change `total_length` to retune resonator frequencies, or `pos_x`/`pos_y` to relayout." ] }, { "cell_type": "code", "execution_count": 7, "id": "51565fbd", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:19.718193Z", "iopub.status.busy": "2026-06-18T21:27:19.717997Z", "iopub.status.idle": "2026-06-18T21:27:19.722356Z", "shell.execute_reply": "2026-06-18T21:27:19.721484Z" } }, "outputs": [ { "data": { "text/plain": [ "['Q1',\n", " 'Q2',\n", " 'clt1',\n", " 'clt2',\n", " 'LP1',\n", " 'LP2',\n", " 'feed_L',\n", " 'feed_M',\n", " 'feed_R',\n", " 'read1',\n", " 'read2',\n", " 'coupler_bus']" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "design.components.keys()" ] }, { "cell_type": "code", "execution_count": 8, "id": "18ef97e0", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:19.724134Z", "iopub.status.busy": "2026-06-18T21:27:19.723948Z", "iopub.status.idle": "2026-06-18T21:27:19.885363Z", "shell.execute_reply": "2026-06-18T21:27:19.884537Z" } }, "outputs": [ { "data": { "image/png": "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qbR4AwAAAAlA8AYAAAASgOANAAAAJADBGwAAAEgAgjcAAACQAARvAAAAIAEI3gAAAEACELwBAACABCB4AwAAAAlA8AYAAAASgOANAAAAJADBGwAAAEgAgjcAAACQAARvAAAAIAEI3gAAAEACELwBAACABCB4AwAAAAngsLqAgQiFQpKkyspKiysBAAAA/q07n3bn1f4Mi+BdW1srSZo3b57FlQAAAADRamtrNWHChH4fY5imaSamnOPX0dGhHTt2KDc3Vw7HsPisYJnKykrNmzdPmzdvVkFBgdXljEhc48HF9R18XOPBxfUdfFzjwcX1PTahUEi1tbWaOXOmkpOT+33ssEixycnJmjt3rtVlDCsFBQUaO3as1WWMaFzjwcX1HXxc48HF9R18XOPBxfUduHgt3d0YXAkAAAAkAMEbAAAASACC9wjj8Xh05513yuPxWF3KiMU1Hlxc38HHNR5cXN/BxzUeXFzfwTMsBlcCAAAAwx0t3gAAAEACELwBAACABCB4AwAAAAlA8AYAAAASYFgsoIPjd/DgQb366quqq6vTRRddpHPOOcfqkkakgwcP6u9//7tGjx6tpUuXWl3OiGGapl555RW9/fbbys/P1xVXXKHRo0dbXdawZpqmNm3apPXr1ys3N1eLFy/WmDFjrC5rxAiFQlq9erW2b9+uwsJCLVu2TFlZWVaXNWIVFRXpn//8p6ZOnaoLL7zQ6nJGjPfff1+vvvqqAoGAFi9erDPOOMPqkkYOEyPWn/70JzMpKcmU1PPfbbfdZkYiEatLG1HC4bC5YMECU5J5ySWXWF3OiBEIBMzLLrus1+9venq6uWbNGqtLG7bC4bB5++2397qmHo/HfP31160ubURoamoy586d2+v65uXlmZs2bbK6tBHJ7/ebU6dONSWZN9xwg9XljBi/+MUvTMMwen6HbTabed9991ld1ohBV5MR6sCBA/roRz+qyy+/XMXFxWpubtZnPvMZPfTQQ1q1apXV5Y0oTz75pDZs2GB1GSPOAw88oJdffllPPfWUAoGADh48qOnTp+tTn/qU/H6/1eUNS88995wefPBBffWrX1VDQ4N27typMWPG6KqrrpLP57O6vGHvW9/6lt5991395S9/UTAY1M6dO5Wenq5Pf/rTMpm594S79957tW/fPqvLGFE2bNigL3/5y7r55ptVXl6u2tpaXXbZZbrjjju0efNmq8sbGaxO/hgct912m5mZmWn6fL6ebXV1debVV19tPvTQQxZWNrJUVFSYXq/XvOqqq8z8/HxavE+g888/35w8eXKvbU8++aQpyXzrrbcsqmp4mz9/vjlp0qRe33qtX7/elGQ+/vjjFlY2MkycONG88MILe2278847TUlmaWmpNUWNUEVFRabT6TS/+MUv0uJ9Al177bXm1KlTe/2N2Ldvn7ls2TLz97//vYWVjRz08R6hVq1apUsvvVRNTU167rnnVFFRoYsuukh//vOfrS5tRLn11lsVDof1yCOP6Oyzz7a6nBFl7dq1Udu2bNkiSfSZPQ4dHR3atGmTbrnlFhmG0bP93HPPlcfj0fr16/WFL3zBwgqHv127dslm6/1F8pYtW2S325Wenm5RVSNPJBLRzTffrLy8PN177716/PHHrS5pRIhEIlq9erVuvfVWHT58WH/729/U0tKixYsX64UXXrC6vBGD4D0ChcNhlZWVqaKiQjNmzFBDQ0PPvq985Sv62c9+ZmF1I8fq1au1cuVKPfLIIxo7dqzV5Yw4Lper17+Lior0zDPPaNGiRTrllFMsqmr4Kisrk6Sowal2u12jRo1SSUmJFWWNKMnJyb3+/frrr+ull17S9ddfL6/Xa1FVI88TTzyhjRs36s9//jNLmp9A1dXV6uzsVFFRkU477bSeLn3f/OY3dd999+kb3/iGxRWODATvYWj37t09b6JHy83NVX5+vkKhkNavX69bb71Vd911l8LhsG6//Xb9/Oc/1/nnn69rrrkmwVUPH/Gu76xZs9Ta2qovf/nLmj9/vr70pS8luMLhbyDX+EjV1dW64oor5PV69cwzzySixBGnqalJkuR2u6P2paamqrGxMcEVjWx79+7VNddco+nTp+vhhx+2upwRo7y8XHfccYeuvvpqXX311QqFQlaXNGKUl5dLkl5++WXde++9uuWWW9Tc3KzPf/7z+uY3v6nzzz+fmdFOBKv7uuDY/cd//EevUfNH/rds2TLT7/ebhmGYEyZMMEOhUM9x7e3tpsvlMj/+8Y9bWP3QF+/6mqZp3nLLLabdbje3bdvWcxx9vAduINe4W3Nzszl79mzT5XKZmzdvtqbgEaC8vNyUZN51111R+woLC81LL73UgqpGpvLycnPChAlmRkaGuX//fqvLGVGuvvpqMz093SwrKzNN0zSDwSB9vE+Q4uJiU5J57rnn9tpeUlJiSjK/9rWvWVTZyEKL9zD0xS9+UZdddlnMffn5+UpOTlZhYaEKCwtlt9t79rndbmVlZamysjJRpQ5L8a5vRUWFHn30Ubndbt188809++rr67V582adc845euKJJ6JabfFv8a5xt46ODi1btkzbtm3Tc889p7lz5yaqxBFn1KhRcrlc2rVrV6/tTU1Nqqio0JIlSyyqbGRpbGzUZZddpurqar3yyiuaPHmy1SWNGO+++66ef/55ZWZm6tprr5WkntliXnzxRZ1zzjl6/vnnVVBQYGWZw1ZhYaGSkpI0YcKEXttHjRolm81GdjhBCN7D0IwZMzRjxox+H3PhhRfqz3/+s6qrq3uCzHvvvafKykp97GMfS0SZw1a861teXq6LL744arthGHI4HEpLS4saYIXeBvI7HAqF9IlPfELr1q3T008/3fNGi+Njs9l03XXXaeXKlaqsrOwJJ88884xCoZBWrFhhcYXDn8/n05VXXqndu3dr9erVOv/8860uaURxOBy65JJLem2LRCI9+9LS0noNHMaxsdvtOu+887R+/Xq1t7crNTVVkvS3v/1NkUhEs2fPtrjCkcEwTSYXHYlKS0s1bdo0jR49Wl/4whfU0dGhRx55RIFAQLt27WKlukEwatQozZgxQ6+++qrVpYwIX/7yl/XLX/5S06dPjwrdixcv1gUXXGBRZcNXUVGR5s+fr3Hjxummm25SVVWVHn74YX3oQx/SunXrCC0f0JVXXqnVq1dr7ty5Wrx4ca99y5cv15lnnmlNYSNYKBSS0+nUDTfcoKefftrqcoa9rVu36qyzztKsWbN0/fXXq66uTg8//LAyMzN75qXHB2RxVxcMos2bN5szZswwJZmGYZjz5883t2/fbnVZIxZ9vE+s8ePH99kP/Ec/+pHV5Q1bGzduNKdPn25KMl0ul/nRj37UbG1ttbqsEcFut/f5O/vMM89YXd6IRB/vE+9vf/ubOXHiRFOSabfbzUWLFpnFxcVWlzVi0OJ9Eqirq5PL5eKTKoAedXV1Sk9Pj5q2EQBM01R1dbU8Hk/MmZBw/AjeAAAAQAIwAgwAAABIAII3AAAAkAAEbwAAACABCN4AAABAAhC8AQAAgAQgeAMAAAAJQPAGAAAAEoDgDQAAACQAwRsAAABIAII3AAAAkAAEbwAAACAB/j9xZfK7eTjQCQAAAABJRU5ErkJggg==", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = qm.view(design)\n", "qm.show_inline(fig)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.15" } }, "nbformat": 4, "nbformat_minor": 5 }