{ "cells": [ { "cell_type": "markdown", "id": "017715f1", "metadata": {}, "source": [ "# Reference design 1 — Transmon with readout resonator\n", "\n", "Build the canonical superconducting-qubit unit cell: one fixed-frequency transmon dispersively coupled to a meandered lambda/4 readout resonator on a shared coplanar-waveguide feedline.\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": "code", "execution_count": 1, "id": "e125cd83", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:26:54.355777Z", "iopub.status.busy": "2026-06-18T21:26:54.355488Z", "iopub.status.idle": "2026-06-18T21:26:54.360276Z", "shell.execute_reply": "2026-06-18T21:26:54.358899Z" } }, "outputs": [], "source": [ "# In Colab / Binder, uncomment to install Quantum Metal (lite, no Qt):\n", "# !pip install -q quantum-metal" ] }, { "cell_type": "code", "execution_count": 2, "id": "c4bd8cba", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:26:54.362630Z", "iopub.status.busy": "2026-06-18T21:26:54.362370Z", "iopub.status.idle": "2026-06-18T21:27:15.658467Z", "shell.execute_reply": "2026-06-18T21:27:15.657231Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "09:27PM 15s INFO [_start_renderers]: Renderer=gmsh skipped: runtime dependency not installed (renderer_gmsh requires gmsh. Install with: pip install 'quantum-metal[mesh]' (or the legacy alias 'quantum-metal[fem]')).\n" ] } ], "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" ] }, { "cell_type": "markdown", "id": "629078c5", "metadata": {}, "source": [ "## 1. The transmon qubit\n", "\n", "A single `TransmonPocket` with one readout connection pad on its top-right corner." ] }, { "cell_type": "code", "execution_count": 3, "id": "ea9d1326", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:15.660518Z", "iopub.status.busy": "2026-06-18T21:27:15.660299Z", "iopub.status.idle": "2026-06-18T21:27:15.707844Z", "shell.execute_reply": "2026-06-18T21:27:15.706746Z" } }, "outputs": [ { "data": { "text/plain": [ "\u001b[95m\u001b[1mname: \u001b[94m\u001b[1mQ1\u001b[0m\n", "\u001b[95m\u001b[1mclass: \u001b[94m\u001b[1mTransmonPocket \u001b[0m\n", "\u001b[95m\u001b[1moptions: \u001b[0m\n", " 'pos_x' : '0mm', \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", " },\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[1m1\u001b[0m" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "TransmonPocket(\n", " design,\n", " \"Q1\",\n", " options=dict(\n", " pos_x=\"0mm\",\n", " pos_y=\"-1.5mm\",\n", " pad_width=\"425um\",\n", " pocket_height=\"650um\",\n", " connection_pads=dict(readout=dict(loc_W=+1, loc_H=+1)),\n", " ),\n", ")" ] }, { "cell_type": "markdown", "id": "c124410f", "metadata": {}, "source": [ "## 2. Feedline + readout resonator\n", "\n", "A coplanar feedline runs between two wirebond launchpads through a **coupled-line tee**, which capacitively taps off a meandered lambda/4 resonator down to the qubit. `total_length` sets the resonator frequency." ] }, { "cell_type": "code", "execution_count": 4, "id": "26cbaf34", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:15.709701Z", "iopub.status.busy": "2026-06-18T21:27:15.709528Z", "iopub.status.idle": "2026-06-18T21:27:15.831256Z", "shell.execute_reply": "2026-06-18T21:27:15.829726Z" } }, "outputs": [ { "data": { "text/plain": [ "\u001b[95m\u001b[1mname: \u001b[94m\u001b[1mreadout_res\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' : 'clt', \n", " 'pin' : 'second_end', \n", " },\n", " \u001b[1m'end_pin' \u001b[0m: {\n", " 'component' : 'Q1', \n", " 'pin' : 'readout', \n", " },\n", " },\n", " 'fillet' : '90um', \n", " \u001b[1m'lead' \u001b[0m: {\n", " 'start_straight' : '100um', \n", " 'end_straight' : '100um', \n", " 'start_jogged_extension': '', \n", " 'end_jogged_extension': '', \n", " },\n", " 'total_length' : '7mm', \n", " 'trace_width' : 'cpw_width', \n", " \u001b[1m'meander' \u001b[0m: {\n", " 'spacing' : '200um', \n", " 'asymmetry' : '0um', \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.000000000000003 mm', \n", "\u001b[95m\u001b[1mmodule: \u001b[94m\u001b[1mqiskit_metal.qlibrary.tlines.meandered\u001b[0m\n", "\u001b[95m\u001b[1mid: \u001b[94m\u001b[1m7\u001b[0m" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CoupledLineTee(\n", " design,\n", " \"clt\",\n", " options=dict(\n", " pos_x=\"0mm\",\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=\"-4mm\", pos_y=\"1.5mm\", orientation=\"0\")\n", ")\n", "LaunchpadWirebond(\n", " design, \"LP2\", options=dict(pos_x=\"4mm\", pos_y=\"1.5mm\", orientation=\"180\")\n", ")\n", "\n", "RoutePathfinder(\n", " design,\n", " \"feed_L\",\n", " options=dict(\n", " fillet=\"90um\",\n", " pin_inputs=Dict(\n", " start_pin=Dict(component=\"LP1\", pin=\"tie\"),\n", " end_pin=Dict(component=\"clt\", pin=\"prime_start\"),\n", " ),\n", " ),\n", ")\n", "RoutePathfinder(\n", " design,\n", " \"feed_R\",\n", " options=dict(\n", " fillet=\"90um\",\n", " pin_inputs=Dict(\n", " start_pin=Dict(component=\"clt\", pin=\"prime_end\"),\n", " end_pin=Dict(component=\"LP2\", pin=\"tie\"),\n", " ),\n", " ),\n", ")\n", "\n", "RouteMeander(\n", " design,\n", " \"readout_res\",\n", " options=dict(\n", " fillet=\"90um\",\n", " total_length=\"7mm\",\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=\"Q1\", pin=\"readout\"),\n", " ),\n", " ),\n", ")" ] }, { "cell_type": "markdown", "id": "e3affa57", "metadata": {}, "source": [ "## 3. Visualize" ] }, { "cell_type": "markdown", "id": "2381436e", "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": 5, "id": "b8e6fc4d", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:15.833341Z", "iopub.status.busy": "2026-06-18T21:27:15.833155Z", "iopub.status.idle": "2026-06-18T21:27:15.837659Z", "shell.execute_reply": "2026-06-18T21:27:15.836737Z" } }, "outputs": [ { "data": { "text/plain": [ "['Q1', 'clt', 'LP1', 'LP2', 'feed_L', 'feed_R', 'readout_res']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "design.components.keys()" ] }, { "cell_type": "code", "execution_count": 6, "id": "987901d7", "metadata": { "execution": { "iopub.execute_input": "2026-06-18T21:27:15.839297Z", "iopub.status.busy": "2026-06-18T21:27:15.839117Z", "iopub.status.idle": "2026-06-18T21:27:16.022355Z", "shell.execute_reply": "2026-06-18T21:27:16.021211Z" } }, "outputs": [ { "data": { "image/png": "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", "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 }