{
"cells": [
{
"cell_type": "raw",
"id": "f270b15a",
"metadata": {
"tags": [
"remove-cell"
]
},
"source": [
"/// script\n",
"requires-python = \">=3.12,<3.15\"\n",
"dependencies = [\n",
" \"qpdk[models] @ git+https://github.com/gdsfactory/quantum-rf-pdk.git\",\n",
"]\n",
"///"
]
},
{
"cell_type": "markdown",
"id": "a491de4d",
"metadata": {},
"source": [
"# Palace Simulation of a Through-Silicon-Via CPW Transition\n",
"\n",
"This notebook takes a coplanar waveguide (CPW) from the front of a chip to\n",
"its back through superconducting through-silicon vias (TSVs), models the\n",
"transition in 3-D with [gsim](https://gdsfactory.github.io/gsim/) and\n",
"[Palace](https://awslabs.github.io/palace/), and sets up the loop that tunes\n",
"the taper and via placement for a 50 Ω match.\n",
"\n",
"The design follows the side A to side B transition of\n",
"{cite:p}`mallekFabricationSuperconductingThroughsilicon2021`: 10 × 20 µm\n",
"slot-shaped vias etched through the silicon, a CPW that tapers up to a pad\n",
"large enough to land **two signal TSVs in parallel**, and a ring of\n",
"**ground TSVs** stitching the front and back ground planes around it. A\n",
"single narrow via is a large impedance discontinuity; the parallel signal\n",
"vias, the pad and the ground ring together keep the reflection small.\n",
"\n",
"````{only} html\n",
"```{mermaid}\n",
"flowchart TB\n",
" A[\"Analytical seed
(conductor-backed CPW)\"]\n",
" B[\"TSV transition layout
(qpdk cells)\"]\n",
" C[\"FEM regions
(front metal, back metal, TSVs)\"]\n",
" D[\"Double-sided layer stack\"]\n",
" E[\"Mesh and driven solve\"]\n",
" F[\"Optimise taper and vias
(minimise |S11|)\"]\n",
" A --> B --> C --> D --> E --> F\n",
" F -->|next geometry| B\n",
"```\n",
"````\n",
"\n",
"::::{admonition} Required extras\n",
":class: tip\n",
"\n",
"This notebook needs the `models` extra:\n",
"\n",
"```bash\n",
"uv add \"qpdk[models]\"\n",
"# or, from a checkout of this repository:\n",
"uv sync --extra models\n",
"# or with pip:\n",
"pip install \"qpdk[models]\"\n",
"```\n",
"\n",
"The simulation cells additionally need the [Palace](https://awslabs.github.io/palace/)\n",
"solver itself, which is external to qpdk. The cells that invoke it are fenced\n",
"behind environment variables (see {ref}`tsv-running-palace`), so everything\n",
"up to and including the mesh runs anywhere.\n",
"\n",
"See the {ref}`extras reference ` for what each extra installs.\n",
"::::\n",
"\n",
"```{note}\n",
"The saved Palace seed response is embedded below. The optimiser is optional\n",
"because each evaluation needs another 3-D solve.\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "572cc06b",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:33.279993Z",
"iopub.status.busy": "2026-09-28T23:33:33.279820Z",
"iopub.status.idle": "2026-09-28T23:33:33.284556Z",
"shell.execute_reply": "2026-09-28T23:33:33.283923Z"
},
"tags": [
"hide-input",
"hide-output"
]
},
"outputs": [],
"source": [
"import sys\n",
"\n",
"if \"google.colab\" in sys.modules:\n",
" import subprocess\n",
"\n",
" print(\"Running in Google Colab. Installing QPDK...\")\n",
" subprocess.check_call([\n",
" sys.executable,\n",
" \"-m\",\n",
" \"pip\",\n",
" \"install\",\n",
" \"-q\",\n",
" \"qpdk[models] @ git+https://github.com/gdsfactory/quantum-rf-pdk.git\",\n",
" ])"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ed7bb27d",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:33.286213Z",
"iopub.status.busy": "2026-09-28T23:33:33.286084Z",
"iopub.status.idle": "2026-09-28T23:33:35.381808Z",
"shell.execute_reply": "2026-09-28T23:33:35.381382Z"
},
"tags": [
"hide-input",
"hide-output"
]
},
"outputs": [],
"source": [
"import io\n",
"import json\n",
"import os\n",
"from pathlib import Path\n",
"from typing import Any, Literal\n",
"\n",
"import gdsfactory as gf\n",
"import klayout.db as kdb\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib_inline\n",
"import numpy as np\n",
"from matplotlib import font_manager\n",
"from scipy.optimize import brentq\n",
"\n",
"from qpdk import PDK, logger\n",
"from qpdk.cells import straight\n",
"from qpdk.cells.tsv import tsv, tsv_transition_double_sided\n",
"from qpdk.config import PATH\n",
"from qpdk.models.cpw import cbcpw_parameters, cpw_parameters\n",
"from qpdk.simulation import TSV_FEM_LAYERS, to_tsv_regions, tsv_stack\n",
"from qpdk.tech import LAYER, material_properties\n",
"\n",
"PDK.activate()\n",
"\n",
"for style in (PATH.repo / \"docs\" / \"qpdk.mplstyle\", \"qpdk\"):\n",
" try:\n",
" plt.style.use(style)\n",
" except OSError:\n",
" continue\n",
" break\n",
"\n",
"for font_path in (PATH.repo / \"build\" / \"docs-fonts\").glob(\"*\"):\n",
" if font_path.suffix.lower() in {\".otf\", \".ttf\"}:\n",
" font_manager.fontManager.addfont(str(font_path))\n",
"\n",
"installed_fonts = {font.name for font in font_manager.fontManager.ttflist}\n",
"plt.rcParams[\"font.sans-serif\"] = [\n",
" name\n",
" for name in (\"Inter\", \"Outfit\", \"DejaVu Sans\", \"Helvetica\", \"Arial\")\n",
" if name in installed_fonts\n",
"] + [\"sans-serif\"]\n",
"matplotlib_inline.backend_inline.set_matplotlib_formats(\"png\")"
]
},
{
"cell_type": "markdown",
"id": "d5ff61fa",
"metadata": {},
"source": [
"## The via and the transition\n",
"\n",
"{func}`~qpdk.cells.tsv` draws one slot-shaped via (a stadium, 10 µm wide and\n",
"20 µm long by default) with landing pads on both metal levels: ``M1`` on the\n",
"front and ``MB``, the new backside metal, on the back.\n",
"{func}`~qpdk.cells.tsv_transition_double_sided` builds the full transition\n",
"out of it. Backside geometry is drawn in the front-side frame, as if looking\n",
"through the chip, so the two faces line up in the layout view."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "765efbc8",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:35.382799Z",
"iopub.status.busy": "2026-09-28T23:33:35.382708Z",
"iopub.status.idle": "2026-09-28T23:33:35.473551Z",
"shell.execute_reply": "2026-09-28T23:33:35.473159Z"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"via = tsv()\n",
"via.plot()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "37a5eedd",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:35.474419Z",
"iopub.status.busy": "2026-09-28T23:33:35.474378Z",
"iopub.status.idle": "2026-09-28T23:33:35.557627Z",
"shell.execute_reply": "2026-09-28T23:33:35.557328Z"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"transition = tsv_transition_double_sided()\n",
"transition.plot()"
]
},
{
"cell_type": "markdown",
"id": "72223fd3",
"metadata": {},
"source": [
"## Conductor-backed CPW: the analytical seed\n",
"\n",
"Metallising the back of the chip turns every CPW on the front into a\n",
"**conductor-backed CPW** (CBCPW): the backside ground sits one substrate\n",
"thickness $h$ below the signal line and adds a parallel-plate path that\n",
"lowers $Z_0$. {func}`~qpdk.models.cbcpw_parameters` implements the\n",
"conformal-mapping result {cite:p}`simonsCoplanarWaveguideCircuits2001`;\n",
"`cpw_parameters(..., conductor_backed=True)` switches the qpdk CPW models to\n",
"it. For the standard 10/6 µm line on 200 µm silicon the correction is small,\n",
"but it grows with the line's lateral size, so it matters for the wide pad\n",
"the TSVs land on.\n",
"\n",
"The seed geometry picks, for each pad width, the gap that gives 50 Ω as a\n",
"CBCPW on the 200 µm substrate of the paper."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "2d8527e9",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:35.558568Z",
"iopub.status.busy": "2026-09-28T23:33:35.558525Z",
"iopub.status.idle": "2026-09-28T23:33:36.044302Z",
"shell.execute_reply": "2026-09-28T23:33:36.044054Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"findfont: Failed to find font weight bold, now using 400.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/nikosavola/.worktrees/quantum-rf-pdk/palace-new/.venv/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 937 (\\N{GREEK CAPITAL LETTER OMEGA}) missing from font(s) Outfit.\n",
" fig.canvas.print_figure(bytes_io, **kw)\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.042\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m37\u001b[0m - \u001b[1mlead 10/6 µm: 49.27 Ω backed, 49.31 Ω unbacked\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.042\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m41\u001b[0m - \u001b[1mseed pad: width 40 µm, gap 24.29 µm\u001b[0m\n"
]
}
],
"source": [
"SUBSTRATE_THICKNESS = 200.0 # µm, the TSV depth\n",
"METAL_THICKNESS = 0.2 # µm\n",
"Z_TARGET = 50.0 # Ω\n",
"EP_R = material_properties[\"Si\"][\"relative_permittivity\"]\n",
"\n",
"\n",
"def cbcpw_z0(width: float, gap: float, h: float = SUBSTRATE_THICKNESS) -> float:\n",
" \"\"\"Return the conductor-backed CPW impedance for µm dimensions.\"\"\"\n",
" _, z0 = cbcpw_parameters(\n",
" width * 1e-6, gap * 1e-6, h * 1e-6, METAL_THICKNESS * 1e-6, EP_R\n",
" )\n",
" return float(z0)\n",
"\n",
"\n",
"def gap_for_z0(width: float, z0: float = Z_TARGET) -> float:\n",
" \"\"\"Return the CBCPW gap in µm that gives ``z0`` for a given width.\"\"\"\n",
" return brentq(lambda gap: cbcpw_z0(width, gap) - z0, 0.5, 20 * width)\n",
"\n",
"\n",
"widths = np.linspace(10.0, 100.0, 19)\n",
"gaps_backed = np.array([gap_for_z0(w) for w in widths])\n",
"gaps_free = np.array([\n",
" brentq(lambda g, w=w: float(cpw_parameters(w, g)[1]) - Z_TARGET, 0.5, 20 * w)\n",
" for w in widths\n",
"])\n",
"\n",
"_, ax = plt.subplots()\n",
"ax.plot(widths, gaps_free, label=\"CPW (no backside metal)\")\n",
"ax.plot(widths, gaps_backed, label=f\"CBCPW, h = {SUBSTRATE_THICKNESS:.0f} µm\")\n",
"ax.set_xlabel(\"centre conductor width (µm)\")\n",
"ax.set_ylabel(\"gap for 50 Ω (µm)\")\n",
"ax.legend()\n",
"plt.show()\n",
"\n",
"seed_pad_width = 40.0\n",
"seed_pad_gap = gap_for_z0(seed_pad_width)\n",
"logger.info(\n",
" f\"lead 10/6 µm: {cbcpw_z0(10.0, 6.0):.2f} Ω backed,\"\n",
" f\" {float(cpw_parameters(10.0, 6.0)[1]):.2f} Ω unbacked\"\n",
")\n",
"logger.info(f\"seed pad: width {seed_pad_width:.0f} µm, gap {seed_pad_gap:.2f} µm\")"
]
},
{
"cell_type": "markdown",
"id": "984e1baa",
"metadata": {},
"source": [
"The two curves separate as the line widens: at 100 µm the backside metal\n",
"calls for a visibly wider gap. The analytic model says nothing about the\n",
"vias themselves, which is what the 3-D model is for.\n",
"\n",
"## Simulation layout\n",
"\n",
"The simulation wraps the transition in three things:\n",
"\n",
"- **Straight CPW leads** on both faces. Palace's lumped CPW port must sit\n",
" on a uniform section: a port rectangle placed on the taper is no longer\n",
" rectangular and fails gsim's port check.\n",
"- **Etch stubs** past each port, which end the signal line so the port\n",
" drives it as an open-ended feed, as in\n",
" {doc}`palace_eigenmode_qubit_resonator`.\n",
"- A ``SIM_AREA`` rectangle 100 µm around the device, bounding the domain on\n",
" both faces. The ground planes run to its edge.\n",
"\n",
"`sim_component` takes the transition parameters, so the optimiser below\n",
"rebuilds the same wrapper around each candidate."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8e5af670",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:36.045185Z",
"iopub.status.busy": "2026-09-28T23:33:36.045141Z",
"iopub.status.idle": "2026-09-28T23:33:36.134502Z",
"shell.execute_reply": "2026-09-28T23:33:36.134053Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.058\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m29\u001b[0m - \u001b[1msimulation area: (-255,-166.29;255,166.29)\u001b[0m\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"LEAD_LENGTH = 30.0 # µm\n",
"STUB_LENGTH = 10.0 # µm\n",
"\n",
"\n",
"@gf.cell\n",
"def sim_component(**params: Any) -> gf.Component:\n",
" \"\"\"TSV transition with CPW leads, etch stubs and a simulation area.\"\"\"\n",
" c = gf.Component()\n",
" dut = c << tsv_transition_double_sided(**params)\n",
" front = c << straight(length=LEAD_LENGTH, cross_section=\"cpw\")\n",
" front.connect(\"o2\", dut.ports[\"o1\"])\n",
" back = c << straight(length=LEAD_LENGTH, cross_section=\"cpw_backside\")\n",
" back.connect(\"o1\", dut.ports[\"o2\"])\n",
" c.add_port(\"o1\", port=front.ports[\"o1\"])\n",
" c.add_port(\"o2\", port=back.ports[\"o2\"])\n",
" for port, etch, sign in (\n",
" (c.ports[\"o1\"], LAYER.M1_ETCH, -1),\n",
" (c.ports[\"o2\"], LAYER.MB_ETCH, 1),\n",
" ):\n",
" half = port.width / 2 + 6.0 # signal plus the 6 µm gaps\n",
" x0, x1 = sorted((port.x, port.x + sign * STUB_LENGTH))\n",
" c.kdb_cell.shapes(gf.get_layer(etch)).insert(kdb.DBox(x0, -half, x1, half))\n",
" c.kdb_cell.shapes(gf.get_layer(LAYER.SIM_AREA)).insert(c.bbox().enlarged(100, 100))\n",
" return c\n",
"\n",
"\n",
"seed_params = {\"pad_width\": seed_pad_width, \"pad_gap\": round(seed_pad_gap, 2)}\n",
"layout_c = sim_component(**seed_params)\n",
"logger.info(f\"simulation area: {layout_c.bbox()}\")\n",
"layout_c.plot()"
]
},
{
"cell_type": "markdown",
"id": "9c8d202a",
"metadata": {},
"source": [
"## From etch layers to FEM regions\n",
"\n",
"{func}`~qpdk.simulation.to_tsv_regions` applies the subtractive convention\n",
"on both metal levels (conductor is ``SIM_AREA - ETCH + DRAW``, matching\n",
"{data}`~qpdk.tech.LAYER_STACK_BACKSIDE`) and copies the TSVs to their own\n",
"region. The checks below are the circuit topology made visible: each face\n",
"splits into a ground plane and the signal line, and every via lands on\n",
"metal on **both** faces, so the ground vias really tie the two ground\n",
"planes together and the signal vias really carry the line through."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "bdc953d9",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:36.135373Z",
"iopub.status.busy": "2026-09-28T23:33:36.135321Z",
"iopub.status.idle": "2026-09-28T23:33:36.142422Z",
"shell.execute_reply": "2026-09-28T23:33:36.142050Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.139\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m13\u001b[0m - \u001b[1m VACUUM_BOTTOM (108,0): 1 polygons, 169616 µm²\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.139\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m13\u001b[0m - \u001b[1m MB (109,0): 2 polygons, 162398 µm²\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.139\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m13\u001b[0m - \u001b[1m SUBSTRATE (110,0): 1 polygons, 169616 µm²\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.140\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m13\u001b[0m - \u001b[1m TSV (111,0): 10 polygons, 1784 µm²\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.140\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m13\u001b[0m - \u001b[1m M1 (112,0): 2 polygons, 162398 µm²\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:33:36.140\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m13\u001b[0m - \u001b[1m VACUUM (113,0): 1 polygons, 169616 µm²\u001b[0m\n"
]
}
],
"source": [
"regions = to_tsv_regions(layout_c)\n",
"rlayout = regions.kdb_cell.layout()\n",
"\n",
"\n",
"def region(name: str) -> kdb.Region:\n",
" \"\"\"Return the merged region of one TSV FEM layer.\"\"\"\n",
" return kdb.Region(\n",
" regions.kdb_cell.begin_shapes_rec(rlayout.layer(*TSV_FEM_LAYERS[name]))\n",
" ).merged()\n",
"\n",
"\n",
"for name, (lnum, ldt) in TSV_FEM_LAYERS.items():\n",
" logger.info(\n",
" f\"{name:>14} ({lnum},{ldt}): {len(region(name))} polygons,\"\n",
" f\" {region(name).area() * 1e-6:.0f} µm²\"\n",
" )\n",
"m1, mb, vias = region(\"M1\"), region(\"MB\"), region(\"TSV\")\n",
"assert len(m1) == 2, \"front metal should be ground plane + signal line\"\n",
"assert len(mb) == 2, \"back metal should be ground plane + signal line\"\n",
"assert (vias - m1).is_empty(), \"a TSV does not land on front-side metal\"\n",
"assert (vias - mb).is_empty(), \"a TSV does not land on backside metal\""
]
},
{
"cell_type": "markdown",
"id": "9c0b061d",
"metadata": {},
"source": [
"## Layer stack and driven setup\n",
"\n",
"{func}`~qpdk.simulation.tsv_stack` puts the front metal at $z=0$ and the\n",
"backside metal at $z=-h$, both as zero-thickness perfect conductors, with\n",
"air above and below the chip. The TSVs are \"via\" layers spanning the full\n",
"substrate. They need a material with a conductivity, without which gsim\n",
"demotes each via to a 2-D sheet at its base and the two faces no longer\n",
"connect. The model fills the vias solid, while the paper's vias are TiN\n",
"liners around a hollow core; at microwave frequencies the current flows on\n",
"the via wall either way, so the solid via is a good approximation of the\n",
"field problem.\n",
"\n",
"One CPW port sits on each face. The driven solve sweeps 1 to 12 GHz with\n",
"Palace's adaptive frequency sampling."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "04b6b0cd",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:33:36.143281Z",
"iopub.status.busy": "2026-09-28T23:33:36.143235Z",
"iopub.status.idle": "2026-09-28T23:35:04.786821Z",
"shell.execute_reply": "2026-09-28T23:35:04.786568Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"pyvirtualdisplay not available; continuing without Xvfb\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : Reading 'sim_palace_tsv/palace.msh'...\n",
"Info : 113092 nodes\n",
"Info : [ 0%] Reading nodes \r",
"Info : [ 10%] Reading nodes \r",
"Info : [ 20%] Reading nodes \r",
"Info : [ 30%] Reading nodes \r",
"Info : [ 40%] Reading nodes \r",
"Info : [ 50%] Reading nodes \r",
"Info : [ 60%] Reading nodes \r",
"Info : [ 70%] Reading nodes \r",
"Info : [ 80%] Reading nodes \r",
"Info : [ 90%] Reading nodes \r",
" \r",
"Info : 746979 elements\n",
"Info : [ 0%] Reading elements \r",
"Info : [ 10%] Reading elements \r",
"Info : [ 20%] Reading elements \r",
"Info : [ 30%] Reading elements \r",
"Info : [ 40%] Reading elements \r",
"Info : [ 50%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 60%] Reading elements \r",
"Info : [ 70%] Reading elements \r",
"Info : [ 80%] Reading elements \r",
"Info : [ 90%] Reading elements \r",
" \r",
"Info : Done reading 'sim_palace_tsv/palace.msh'\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : Reading 'sim_palace_tsv/palace.msh'...\n",
"Info : 113092 nodes\n",
"Info : [ 0%] Reading nodes \r",
"Info : [ 10%] Reading nodes \r",
"Info : [ 20%] Reading nodes \r",
"Info : [ 30%] Reading nodes \r",
"Info : [ 40%] Reading nodes \r",
"Info : [ 50%] Reading nodes \r",
"Info : [ 60%] Reading nodes \r",
"Info : [ 70%] Reading nodes \r",
"Info : [ 80%] Reading nodes \r",
"Info : [ 90%] Reading nodes \r",
" \r",
"Info : 746979 elements\n",
"Info : [ 0%] Reading elements \r",
"Info : [ 10%] Reading elements \r",
"Info : [ 20%] Reading elements \r",
"Info : [ 30%] Reading elements \r",
"Info : [ 40%] Reading elements \r",
"Info : [ 50%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 60%] Reading elements \r",
"Info : [ 70%] Reading elements \r",
"Info : [ 80%] Reading elements \r",
"Info : [ 90%] Reading elements \r",
" \r",
"Info : Done reading 'sim_palace_tsv/palace.msh'\n",
"Info : Reading 'sim_palace_tsv/palace.msh'...\n",
"Info : 113092 nodes\n",
"Info : [ 0%] Reading nodes \r",
"Info : [ 10%] Reading nodes \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 20%] Reading nodes \r",
"Info : [ 30%] Reading nodes \r",
"Info : [ 40%] Reading nodes \r",
"Info : [ 50%] Reading nodes \r",
"Info : [ 60%] Reading nodes \r",
"Info : [ 70%] Reading nodes \r",
"Info : [ 80%] Reading nodes \r",
"Info : [ 90%] Reading nodes \r",
" \r",
"Info : 746979 elements\n",
"Info : [ 0%] Reading elements \r",
"Info : [ 10%] Reading elements \r",
"Info : [ 20%] Reading elements \r",
"Info : [ 30%] Reading elements \r",
"Info : [ 40%] Reading elements \r",
"Info : [ 50%] Reading elements \r",
"Info : [ 60%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 70%] Reading elements \r",
"Info : [ 80%] Reading elements \r",
"Info : [ 90%] Reading elements \r",
" \r",
"Info : Done reading 'sim_palace_tsv/palace.msh'\n",
"Info : Reading 'sim_palace_tsv/palace.msh'...\n",
"Info : 113092 nodes\n",
"Info : [ 0%] Reading nodes \r",
"Info : [ 10%] Reading nodes \r",
"Info : [ 20%] Reading nodes \r",
"Info : [ 30%] Reading nodes \r",
"Info : [ 40%] Reading nodes \r",
"Info : [ 50%] Reading nodes \r",
"Info : [ 60%] Reading nodes \r",
"Info : [ 70%] Reading nodes \r",
"Info : [ 80%] Reading nodes \r",
"Info : [ 90%] Reading nodes \r",
" \r",
"Info : 746979 elements\n",
"Info : [ 0%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 10%] Reading elements \r",
"Info : [ 20%] Reading elements \r",
"Info : [ 30%] Reading elements \r",
"Info : [ 40%] Reading elements \r",
"Info : [ 50%] Reading elements \r",
"Info : [ 60%] Reading elements \r",
"Info : [ 70%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 80%] Reading elements \r",
"Info : [ 90%] Reading elements \r",
" \r",
"Info : Done reading 'sim_palace_tsv/palace.msh'\n",
"Info : Reading 'sim_palace_tsv/palace.msh'...\n",
"Info : 113092 nodes\n",
"Info : [ 0%] Reading nodes \r",
"Info : [ 10%] Reading nodes \r",
"Info : [ 20%] Reading nodes \r",
"Info : [ 30%] Reading nodes \r",
"Info : [ 40%] Reading nodes \r",
"Info : [ 50%] Reading nodes \r",
"Info : [ 60%] Reading nodes \r",
"Info : [ 70%] Reading nodes \r",
"Info : [ 80%] Reading nodes \r",
"Info : [ 90%] Reading nodes \r",
" \r",
"Info : 746979 elements\n",
"Info : [ 0%] Reading elements \r",
"Info : [ 10%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 20%] Reading elements \r",
"Info : [ 30%] Reading elements \r",
"Info : [ 40%] Reading elements \r",
"Info : [ 50%] Reading elements \r",
"Info : [ 60%] Reading elements \r",
"Info : [ 70%] Reading elements \r",
"Info : [ 80%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 90%] Reading elements \r",
" \r",
"Info : Done reading 'sim_palace_tsv/palace.msh'\n"
]
}
],
"source": [
"from gsim.palace import DrivenSim\n",
"\n",
"from qpdk.simulation.palace_run import verify_port_connectivity\n",
"\n",
"F_MIN, F_MAX = 1e9, 12e9 # Hz\n",
"\n",
"\n",
"def build_simulation(\n",
" params: dict[str, float],\n",
" sim_dir: Path,\n",
" *,\n",
" preset: Literal[\"coarse\", \"default\", \"fine\"] = \"coarse\",\n",
") -> DrivenSim:\n",
" \"\"\"Build, mesh and write a driven simulation of one transition geometry.\n",
"\n",
" Returns:\n",
" The configured simulation, ready for a Palace solve in ``sim_dir``.\n",
" \"\"\"\n",
" sim = DrivenSim()\n",
" sim.set_geometry(to_tsv_regions(sim_component(**params)))\n",
" sim.set_stack(\n",
" tsv_stack(substrate_thickness=SUBSTRATE_THICKNESS, vacuum_thickness=300.0)\n",
" )\n",
" sim.set_numerical(order=1, solver_type=\"MUMPS\")\n",
" sim.add_cpw_port(\"o1\", layer=\"M1\", s_width=10.0, gap_width=6.0, length=5.0)\n",
" sim.add_cpw_port(\"o2\", layer=\"MB\", s_width=10.0, gap_width=6.0, length=5.0)\n",
" sim.set_driven(\n",
" fmin=F_MIN,\n",
" fmax=F_MAX,\n",
" num_points=17,\n",
" adaptive_tol=3e-3,\n",
" reference_impedance=Z_TARGET,\n",
" )\n",
" sim.set_output_dir(sim_dir)\n",
" sim.mesh(preset=preset, refined_mesh_size=2.0, auto_size=False, verbose=False)\n",
" sim.write_config()\n",
" config_path = sim_dir / \"config.json\"\n",
" config = json.loads(config_path.read_text())\n",
" config[\"Solver\"][\"Linear\"][\"MaxIts\"] = 10\n",
" config[\"Solver\"][\"Linear\"][\"ColumnOrdering\"] = \"ParMETIS\"\n",
" config_path.write_text(json.dumps(config, indent=2) + \"\\n\")\n",
" verify_port_connectivity(sim_dir)\n",
" return sim\n",
"\n",
"\n",
"SIM_DIR = Path(\"./sim_palace_tsv\")\n",
"sim = build_simulation(seed_params, SIM_DIR)"
]
},
{
"cell_type": "markdown",
"id": "1e21e183",
"metadata": {},
"source": [
"### Mesh checks\n",
"\n",
"The volumes should span the chip and the air on both sides, and the two PEC\n",
"sheets should sit at $z=0$ and $z=-h$. The port check above has already\n",
"confirmed that both CPW ports share mesh nodes with metal."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "255f77f7",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:35:04.787739Z",
"iopub.status.busy": "2026-09-28T23:35:04.787699Z",
"iopub.status.idle": "2026-09-28T23:35:05.195952Z",
"shell.execute_reply": "2026-09-28T23:35:05.195577Z"
},
"tags": [
"hide-input"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : Reading 'sim_palace_tsv/palace.msh'...\n",
"Info : 113092 nodes\n",
"Info : [ 0%] Reading nodes \r",
"Info : [ 10%] Reading nodes \r",
"Info : [ 20%] Reading nodes \r",
"Info : [ 30%] Reading nodes \r",
"Info : [ 40%] Reading nodes \r",
"Info : [ 50%] Reading nodes \r",
"Info : [ 60%] Reading nodes \r",
"Info : [ 70%] Reading nodes \r",
"Info : [ 80%] Reading nodes \r",
"Info : [ 90%] Reading nodes \r",
" \r",
"Info : 746979 elements\n",
"Info : [ 0%] Reading elements \r",
"Info : [ 10%] Reading elements \r",
"Info : [ 20%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 30%] Reading elements \r",
"Info : [ 40%] Reading elements \r",
"Info : [ 50%] Reading elements \r"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Info : [ 60%] Reading elements \r",
"Info : [ 70%] Reading elements \r",
"Info : [ 80%] Reading elements \r",
"Info : [ 90%] Reading elements \r"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.183\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m9\u001b[0m - \u001b[1mvolume VACUUM_BOTTOM: z [-500, -200] µm\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.187\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m9\u001b[0m - \u001b[1mvolume SUBSTRATE: z [-200, 0] µm\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.187\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m9\u001b[0m - \u001b[1mvolume TSV: z [-200, 0] µm\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.188\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m9\u001b[0m - \u001b[1mvolume VACUUM: z [-0, 300] µm\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.188\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m20\u001b[0m - \u001b[1msurface MB_pec: z = -200 µm\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.188\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m20\u001b[0m - \u001b[1msurface M1_pec: z = -0 µm\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" \r",
"Info : Done reading 'sim_palace_tsv/palace.msh'\n"
]
}
],
"source": [
"import gmsh\n",
"\n",
"gmsh.initialize()\n",
"gmsh.open(str(SIM_DIR / \"palace.msh\"))\n",
"for dim, tag in gmsh.model.getPhysicalGroups(3):\n",
" bbox = gmsh.model.getBoundingBox(\n",
" 3, gmsh.model.getEntitiesForPhysicalGroup(3, tag)[0]\n",
" )\n",
" logger.info(\n",
" f\"volume {gmsh.model.getPhysicalName(dim, tag):>14}: z [{bbox[2]:.0f}, {bbox[5]:.0f}] µm\"\n",
" )\n",
"pec_z = {}\n",
"for dim, tag in gmsh.model.getPhysicalGroups(2):\n",
" name = gmsh.model.getPhysicalName(dim, tag)\n",
" if name.endswith(\"_pec\"):\n",
" bbox = gmsh.model.getBoundingBox(\n",
" 2, gmsh.model.getEntitiesForPhysicalGroup(2, tag)[0]\n",
" )\n",
" pec_z[name] = round(bbox[2], 6) + 0.0\n",
" logger.info(f\"surface {name:>13}: z = {bbox[2]:.0f} µm\")\n",
"gmsh.finalize()\n",
"assert pec_z == {\"M1_pec\": 0.0, \"MB_pec\": -SUBSTRATE_THICKNESS}, pec_z"
]
},
{
"cell_type": "markdown",
"id": "c745a35f",
"metadata": {},
"source": [
"(tsv-running-palace)=\n",
"## Running Palace\n",
"\n",
"The solve needs the Palace binary: set ``QPDK_RUN_TSV_SOLVE=1`` and either\n",
"put ``palace`` on ``PATH`` or point ``QPDK_PALACE_SIF`` at an Apptainer\n",
"image. {func}`~qpdk.simulation.palace_run.solve` launches it with\n",
"``QPDK_SOLVER_CORES`` MPI ranks, and gsim reads the S-parameters back.\n",
"\n",
"$|S_{11}|$ from the two-port S-matrix is the figure of merit; the\n",
"reflection also gives the input impedance that the transition presents to\n",
"the front-side 50 Ω line,\n",
"\n",
"```{math}\n",
"Z_\\text{in} = Z_0 \\frac{1 + S_{11}}{1 - S_{11}} .\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "3f1dc384",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:35:05.196727Z",
"iopub.status.busy": "2026-09-28T23:35:05.196683Z",
"iopub.status.idle": "2026-09-28T23:35:05.198925Z",
"shell.execute_reply": "2026-09-28T23:35:05.198673Z"
}
},
"outputs": [],
"source": [
"from gsim.palace import load_sparams\n",
"\n",
"from qpdk.simulation.palace_run import solve\n",
"\n",
"RUN_SOLVE = os.environ.get(\"QPDK_RUN_TSV_SOLVE\") == \"1\"\n",
"RUN_OPTIMIZATION = os.environ.get(\"QPDK_RUN_TSV_OPTIMIZATION\") == \"1\"\n",
"RANKS = int(os.environ.get(\"QPDK_SOLVER_CORES\") or 8)\n",
"BAND = (4.0, 8.0) # GHz, the units of Palace's port-S.csv\n",
"\n",
"\n",
"def plot_sparams(f: np.ndarray, s11: np.ndarray, s21: np.ndarray) -> None:\n",
" \"\"\"Plot the two-port response with frequency in GHz.\"\"\"\n",
" z_in = Z_TARGET * (1 + s11) / (1 - s11)\n",
" fig, (ax_s, ax_z) = plt.subplots(1, 2, figsize=(10, 4))\n",
" ax_s.plot(f, 20 * np.log10(np.abs(s11)), label=\"$|S_{11}|$\")\n",
" ax_s.plot(f, 20 * np.log10(np.abs(s21)), label=\"$|S_{21}|$\")\n",
" ax_s.axvspan(*BAND, alpha=0.1)\n",
" ax_s.set(xlabel=\"frequency (GHz)\", ylabel=\"dB\")\n",
" ax_s.legend()\n",
" ax_z.plot(f, z_in.real, label=r\"Re $Z_\\text{in}$\")\n",
" ax_z.plot(f, z_in.imag, label=r\"Im $Z_\\text{in}$\")\n",
" ax_z.axhline(Z_TARGET, color=\"k\", lw=0.5)\n",
" ax_z.set(xlabel=\"frequency (GHz)\", ylabel=\"Ω\")\n",
" ax_z.legend()\n",
" plt.show()\n",
" plt.close(fig)"
]
},
{
"cell_type": "markdown",
"id": "e5e84ae6",
"metadata": {},
"source": [
"### Saved seed response\n",
"\n",
"Palace solved the seed geometry with first-order elements on a mesh refined\n",
"to 2 µm near the metal, using 17 frequency samples and a 0.3% adaptive\n",
"tolerance. The table is the first excitation of its `port-S.csv`. It is a\n",
"seed result; the optimisation loop below has not been run."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "8dd78f9e",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:35:05.199651Z",
"iopub.status.busy": "2026-09-28T23:35:05.199616Z",
"iopub.status.idle": "2026-09-28T23:35:05.284140Z",
"shell.execute_reply": "2026-09-28T23:35:05.283790Z"
},
"tags": [
"hide-input"
]
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/nikosavola/.worktrees/quantum-rf-pdk/palace-new/.venv/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Glyph 937 (\\N{GREEK CAPITAL LETTER OMEGA}) missing from font(s) Outfit.\n",
" fig.canvas.print_figure(bytes_io, **kw)\n"
]
},
{
"data": {
"image/png": "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0ccff5zxWtddd53IZH7hhRcmHT/++ONp6NChYp/nkwcCAZo3b56IshcDRLwBAAAAAAAAQOPwcG+OPCulsaGRqqqrcvbdnWXw4MFiOPlf/vIXOuigg8TGRCIRqq+vF453ImPGjEm7xg8//EAzZsygL774Im15tDvuuIMuuugi2muvveikk06iCRMmCEefs6Dz0PZCA8dbQ2B5BOVgiSxohTZYXNBfKYefuyufFQfUDmwfWsGu0AaLBUeMOzPc21xbRUZjcd3B0047TTjY/Prrr7+KRGrsgH/00Uf04osvisg3s3DhQho5cmTSZ6PRqEiodvrpp9Oee+7Z7ve43W564IEHqLq6mvr370/FoMtK8x/MGeg4vN+jRw/xdILH3i9btkwIwGIUa3H2UsPv95PTifWplRAMBMhmx3MlaIU2WCzQXyUTjcZofZOPVmz10MqtHlre+srvf9/spmHd0beXCrB9aAW7QhvUCmrprx599FGRBI0j3++9955YaoxfOdP57rvvTk1NTbRgwQL66quvaLfddot/7uWXXxbLkY0YMYIuv/zy+HEeXp467JwfMNTW1or9ziSByyVd8kyam5vpgAMOoJ9++kn8MSwaO91btmwRTxL4KQWngefJ8aDrhEIhyKiQSBhaQavcgzYIrdqD54xtaQkIZ1ps9R5ascVDK+t581IwHM3yQSrY3OMVK1Z06jM2m00MBQTKQT8BrfIB7ApalZJdnXLKKTRo0KD4e5fLJdbhfuGFF2jJkiXC4WY/8r///S9988035HA46Nhjj43P15bp168fXXXVVZoZedQlx/vBBx8UGenefvttsfD5ueeeK544cLSbn5489dRTYqI8T4rniDjoGsiUqhwdMsBDqzyANgitmEZvMCliLW/83hPMvoyLyaCj/jV2GlTnpEF10uvAOjud8R8H5RvOGrvzzjvTtm3b4seOOuoosUTR5s2bxY+cV199lUaPHk2fffZZ0mfPO+88kW0WKAP9hHKgFbTKB7Ar9Wt18cUXpx3bddddxZYIZzLnLRs8d5s3rdAlx5tD+8cdd5xY0Jx55JFHRDp4ecgCP81gx3vx4sVwvHMAPw0CyrA71PmkS41AK+WgDZaPVryu6fItbQ51PIK91UON3uwRAr2OqG+1nQbWOWhwnYMG1tppUDcnDap1UO8qKxkN6T9yjPyhPMP3a15uhYfl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AHC8AQAAAAAAAAAAbYKINwBAVaxZs4YmTJhAGzZsKFodvvzySzrkkEPI7/cXrQ4AAACAWsG9GoDOA8cbgCIxd+5c2mOPPchsNtPIkSPp22+/xf8FEZ166qk0btw46tWrV1yPWCxGzzzzDB144IHUrVs3qquro7333pueeOIJikQiSbodfvjhdPLJJ6dpyeWsVivNmjWrQ5133313crvddPPNN+P/BAAAyhjcqzODezUAnce4HZ8BAOSAk046STiQb775Jq1du1Y43+XO+++/TwsXLqR33nknfiwUCtHxxx9PH3zwAZ1++ul05plnktFopK+++oouueQSeuWVV8Q5g8EgygeDQbGlws57IBCgcDjcYT0sFgv985//pD333JMuv/zypIcAAAAAygfcq9PBvRqA7QOONwBFYsmSJXTttdeKCC2Q+Pe//01TpkyhioqKuCQ33XQTffzxx2L4N0eiZU488UQ644wzxEgB2enOJbvssovYXnrpJbrsssvwXwQAAGUI7tXp4F4NwPaBoeYAFJiDDz5YDHnmyOtZZ50l9s855xzxBJn37733Xho2bBgNGjRIDK/mSO2DDz5Io0ePpurqajHE+osvvkgaQj19+nQaOnSoOM/R4fvvv5+qqqriZXifryUze/Zs8V3Lly8X7zv6jr322osuvPBCUd/a2lraYYcd6Nlnn42f589zhHjMmDFUWVlJu+66K73wwgv02muvkc1mo6VLl8bLNjU1iWv84x//SNPm888/p4MOOij+3uv10kMPPURXXnllktMtw99z0UUXpR3n+rC+iVvqkHRZ79SNHXwZrgvXCQAAQHmBezXu1QDkGjjeABSYadOm0auvvkp6vV4MleZ9dh7ZMeSh0Oywchmep7zTTjvRVVddRVOnTqVTTjlFzGkeNWoUTZ48mX799VdxPR4KzVFhjgDzeR4Wfc011yQlBuP9RMczGo2K7+JXpqPv4LKPPfYYuVwueuSRR2jnnXcWkemvv/46/nmOCh911FE0Y8YM2meffejuu+8W12An+/HHH49/98yZM+MPHRJhJ3vjxo00YMCA+LH58+eL45MmTUoq25FT/frrr5PJZEra2KlOddpZe974oQQ/IOD68kMHGa4LRzsAAACUF7hX414NQM6JAQCKgsFgiD3zzDPx92+//XaMm+Svv/4aP7Z58+aY0WiMvfDCC7FQKBTfDjnkkNiZZ54Z27p1qzh///33J1374osvjlkslvh73n/qqafi77/99lvxXUuXLu3wO5hdd9019sc//jH++XA4HBs4cGDsiiuuiH/+gQceSKpDJBIRr7fffnustrY25vf7xbEhQ4bErrnmmjQ9+G/hOq1evTp+7LvvvhPHPv/88/gxrjMfS9yqq6vj5ydNmhTbd999Y59++mnS9vHHH4uyM2bMSPvu008/PTZo0KDYtm3bko6//PLL4u8EAABQnuBenQzu1QBsP5jjDYDK6N+/f3yfh4JzRJeTu/CWyH777UcrVqwQ5/fff/+kczw0nCPXSujoO2QGDx4c3+c51RwN9ng88c+nRqU5os+cd955dPvtt4skaDzknRPJZZozzdF0nU5H27Zto379+oljHHnnSDUPe993333FsT59+tCnn34a/9ytt95KjY2NSdfizOepmmRLqsY6vfjii/TNN9+IYfaJ1NfXpx0DAAAAcK/GvRqAzgLHGwAVw84tO7B33HEHTZw4MekcD+Hu3r27OM9ztnn4t8ycOXOSyrLDm7gu9vr16+PHnU5nu9+htI6c5Iwd5VQ4czsPm+eh6na7XWQm79mzZ1o5Hg7Oc9s5q7n8t3Dd2HHnee/HHnusyPzOQ8Jlp/r333+nn376ia677jraHn788Ucx3J+Hz3MitVQWLVok5r0DAAAA2cC9GvdqAJQAxxsAFcMOKs+F5gRjnLSMk5pxorK3335bzJXu0aOHWEvz4osvppaWFjEnnJfZeuCBB0T0WOa4446jv//97yJazJHl66+/XkSQ2Slm2vsOJXXk5HA8T725uVkkWGPHn6PUPNeaI9aXXnqpcKZ5GbBHH3203WQ27733XlLk/a677hLrqPJDAb4OR/N5iTH+jocfflh83/ZkHedoNiei47ne/Dezbgw74A6HI56A7ZZbbun0tQEAAJQPuFfjXg2AIrowTB0AkId5Yw0NDUnleL71tGnTYn379hXn+/TpE7vtttvic6h57jTPta6pqYnp9frYfvvtF5s6dWrSHG+PxxM766yzYg6HI2YymWJHHHFEbP369Yq/g+d4X3rppUn14u8577zz4p/n8vLn+/fvH5s5c2ZS+R122CF2wgkntKvJvHnzRL1XrFiRpgHPYx8zZozQzWw2x0aPHh276667YoFAIKksz/E+7rjj0q7N10ic43399denzRXn7eeffxbnX3vttVj37t1jXq+33ToDAAAoXXCvTgf3agC2Dx3/o8xFBwDkEs4UzsOr5bnQnGE8GAymZd9OhMvI5ds7P2vWLPrrX/+alNlchpt8YjRcyXdwvfgYR6zbO5bt89999x3tscceYlh4piHdiZx//vkim/onn3wihpVnqj+T7W/gaDjD2qbCevBxnqMuZ0RPxWKx0Jo1a0R9efg9D40HAABQnuBenRncqwHoPFhODIAiwQ5eooPK++053XKZrpxn2nO6s13DbDanOdiZjmX7PC9VxsPIO3K6GV6DnJO6sWOfrf7t/Q3y8mGZYH3Z6Wa47pnW8eZrs4POc7/hdAMAQHmDe3VmcK8GoPMg4g1ACdJexLvQyNFujmAfeOCBxa4OAAAAoApwrwagvIDjDUAJEolExDBqflKvhrrw8O+OovkAAABAOYF7NQDlBRxvAAAAAAAAAAAgj2CONwAAAAAAAAAAkEfgeAMAAAAAAAAAAHkEjjcAAAAAAAAAAJBH4HgDAAAAAAAAAAB5BI43AAAAAAAAAACQR+B4AwAAAAAAAAAAeQSONwAAAAAAAAAAkEfgeAMAAAAAAAAAAHkEjjcAAAAAAAAAAED54/8BDWKN+a0+XbkAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.282\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m41\u001b[0m - \u001b[1mworst sampled |S11| from 4 to 8 GHz: -21.5 dB\u001b[0m\n"
]
}
],
"source": [
"SAVED_PORT_S_CSV = \"\"\"\\\n",
"frequency_ghz,s11_db,s11_deg,s21_db,s21_deg\n",
"1,-37.8812446,-58.726799,-0.0612678554,-1.83330649\n",
"1.6875,-34.2632696,-71.8243797,-0.0626489377,-3.09330909\n",
"2.375,-31.5822063,-78.7315897,-0.0647258694,-4.35271768\n",
"3.0625,-29.4979027,-83.208716,-0.0674869642,-5.61131342\n",
"3.75,-27.8042377,-86.5168997,-0.0709181266,-6.86889532\n",
"4.4375,-26.3820444,-89.1800377,-0.0750036226,-8.12528068\n",
"5.125,-25.1583817,-91.4517417,-0.0797267257,-9.38030403\n",
"5.8125,-24.0858963,-93.4689499,-0.0850701892,-10.6338154\n",
"6.5,-23.1322805,-95.3118228,-0.0910165542,-11.8856783\n",
"7.1875,-22.2745762,-97.0302761,-0.0975483307,-13.1357676\n",
"7.875,-21.4959133,-98.6569394,-0.104648094,-14.3839683\n",
"8.5625,-20.7835459,-100.213992,-0.112298535,-15.630174\n",
"9.25,-20.1276157,-101.716999,-0.120482477,-16.8742858\n",
"9.9375,-19.520344,-103.177176,-0.129182891,-18.1162116\n",
"10.625,-18.9554871,-104.602788,-0.138382892,-19.3558654\n",
"11.3125,-18.4279575,-106.000038,-0.148065739,-20.5931665\n",
"12,-17.9335551,-107.373659,-0.158214829,-21.8280396\n",
"\"\"\"\n",
"\n",
"\n",
"def phasor(db: np.ndarray, deg: np.ndarray) -> np.ndarray:\n",
" \"\"\"Convert a Palace dB and degree pair to complex S-parameters.\"\"\"\n",
" return 10 ** (db / 20) * np.exp(1j * np.deg2rad(deg))\n",
"\n",
"\n",
"if RUN_SOLVE:\n",
" solve(SIM_DIR, ranks=RANKS)\n",
" sp = load_sparams(SIM_DIR)\n",
" f = np.asarray(sp.freq)\n",
" s11 = np.asarray(sp[\"o1\", \"o1\"].complex)\n",
" s21 = np.asarray(sp[\"o2\", \"o1\"].complex)\n",
"else:\n",
" saved = np.loadtxt(io.StringIO(SAVED_PORT_S_CSV), delimiter=\",\", skiprows=1)\n",
" f = saved[:, 0]\n",
" s11 = phasor(saved[:, 1], saved[:, 2])\n",
" s21 = phasor(saved[:, 3], saved[:, 4])\n",
"plot_sparams(f, s11, s21)\n",
"in_band = (f >= BAND[0]) & (f <= BAND[1])\n",
"logger.info(\n",
" f\"worst sampled |S11| from {BAND[0]:g} to {BAND[1]:g} GHz: \"\n",
" f\"{np.max(20 * np.log10(np.abs(s11[in_band]))):.1f} dB\"\n",
")"
]
},
{
"cell_type": "markdown",
"id": "9ae3f7b9",
"metadata": {},
"source": [
"## Optimising the transition for 50 Ω\n",
"\n",
"The paper tunes the transition shape to minimise reflections. The loop\n",
"below does the same with Palace: each evaluation builds a\n",
"geometry, meshes it, solves it, and scores it by the worst in-band\n",
"reflection,\n",
"\n",
"```{math}\n",
"J = \\max_{f \\in [4, 8]\\,\\text{GHz}} 20 \\log_{10} |S_{11}(f)| .\n",
"```\n",
"\n",
"The free parameters are the ones the analytic model cannot fix: the taper\n",
"length, the pad width, the spacing of the two signal vias and the distance\n",
"of the ground-via ring from the pad edge. The pad gap is not a free\n",
"parameter: it follows the pad width through the CBCPW seed, so the pad\n",
"stays a 50 Ω line and the optimiser spends its evaluations on the vias.\n",
"Nelder–Mead from the seed needs no gradients and tolerates the small mesh\n",
"noise between neighbouring geometries; each evaluation is one independent\n",
"Palace run, so the same objective drops into the Optuna/Slurm driver of\n",
"{doc}`palace_batched_qubit_optimization` for a wider search."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "4f7ebccf",
"metadata": {
"execution": {
"iopub.execute_input": "2026-09-28T23:35:05.284922Z",
"iopub.status.busy": "2026-09-28T23:35:05.284880Z",
"iopub.status.idle": "2026-09-28T23:35:05.289038Z",
"shell.execute_reply": "2026-09-28T23:35:05.288725Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.287\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m40\u001b[0m - \u001b[1mseed geometry: {'taper_length': 100.0, 'pad_width': 40.0, 'signal_via_pitch': 20.0, 'ground_via_distance': 15.0, 'taper_length_backside': 100.0, 'pad_gap': 24.29}\u001b[0m\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m2026-09-29 02:35:05.287\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m62\u001b[0m - \u001b[1mQPDK_RUN_TSV_OPTIMIZATION is not set; skipping the optimisation.\u001b[0m\n"
]
}
],
"source": [
"from scipy.optimize import minimize\n",
"\n",
"PARAMETERS = {\n",
" # name: (seed, lower bound, upper bound), µm\n",
" \"taper_length\": (100.0, 30.0, 250.0),\n",
" \"pad_width\": (seed_pad_width, 30.0, 80.0),\n",
" \"signal_via_pitch\": (20.0, 14.0, 34.0),\n",
" \"ground_via_distance\": (15.0, 8.0, 60.0),\n",
"}\n",
"\n",
"\n",
"def geometry(x: np.ndarray) -> dict[str, float]:\n",
" \"\"\"Map an optimiser vector to transition parameters, 50 Ω pad included.\"\"\"\n",
" params = {name: round(float(v), 2) for name, v in zip(PARAMETERS, x, strict=True)}\n",
" params[\"taper_length_backside\"] = params[\"taper_length\"]\n",
" params[\"pad_gap\"] = round(gap_for_z0(params[\"pad_width\"]), 2)\n",
" return params\n",
"\n",
"\n",
"def objective(x: np.ndarray, run_root: Path = Path(\"./sim_palace_tsv_opt\")) -> float:\n",
" \"\"\"Return the worst in-band |S11| in dB for one geometry.\"\"\"\n",
" params = geometry(x)\n",
" sim_dir = run_root / \"_\".join(f\"{v:g}\" for v in params.values())\n",
" try:\n",
" build_simulation(params, sim_dir)\n",
" except ValueError as err: # geometry the cell rejects, e.g. vias off the pad\n",
" logger.warning(f\"{params}: {err}\")\n",
" return 0.0\n",
" solve(sim_dir, ranks=RANKS)\n",
" sp = load_sparams(sim_dir)\n",
" f = np.asarray(sp.freq)\n",
" in_band = (f >= BAND[0]) & (f <= BAND[1])\n",
" cost = float(np.max(np.asarray(sp[\"o1\", \"o1\"].db)[in_band]))\n",
" logger.info(f\"{params} -> max |S11| = {cost:.1f} dB\")\n",
" return cost\n",
"\n",
"\n",
"x0 = np.array([seed for seed, _, _ in PARAMETERS.values()])\n",
"bounds = [(lo, hi) for _, lo, hi in PARAMETERS.values()]\n",
"logger.info(f\"seed geometry: {geometry(x0)}\")\n",
"\n",
"if RUN_OPTIMIZATION:\n",
" result = minimize(\n",
" objective,\n",
" x0,\n",
" method=\"Nelder-Mead\",\n",
" bounds=bounds,\n",
" options={\"maxfev\": 40, \"xatol\": 1.0, \"fatol\": 0.5},\n",
" )\n",
" best = geometry(result.x)\n",
" logger.info(f\"best geometry: {best}, max |S11| = {result.fun:.1f} dB\")\n",
" best_dir = Path(\"./sim_palace_tsv_best\")\n",
" build_simulation(best, best_dir, preset=\"default\")\n",
" solve(best_dir, ranks=RANKS)\n",
" best_sp = load_sparams(best_dir)\n",
" plot_sparams(\n",
" np.asarray(best_sp.freq),\n",
" np.asarray(best_sp[\"o1\", \"o1\"].complex),\n",
" np.asarray(best_sp[\"o2\", \"o1\"].complex),\n",
" )\n",
"else:\n",
" logger.info(\"QPDK_RUN_TSV_OPTIMIZATION is not set; skipping the optimisation.\")"
]
},
{
"cell_type": "markdown",
"id": "ab890ae2",
"metadata": {},
"source": [
"A rejected geometry scores 0 dB, a total reflection, so the optimiser\n",
"backs away from it instead of stopping. The best geometry is re-solved on\n",
"the finer ``default`` mesh preset before it is trusted: a match found on a\n",
"coarse mesh can partly be a mesh artefact.\n",
"\n",
"## Summary\n",
"\n",
"- {func}`~qpdk.cells.tsv` and {func}`~qpdk.cells.tsv_transition_double_sided`\n",
" draw the slot vias and the two-signal-via transition of\n",
" {cite:p}`mallekFabricationSuperconductingThroughsilicon2021` on the new\n",
" ``MB`` backside metal.\n",
"- The backside metal makes the CPWs conductor-backed;\n",
" {func}`~qpdk.models.cbcpw_parameters` and the ``conductor_backed`` switch\n",
" of the CPW models account for it and seed the pad geometry at 50 Ω.\n",
"- {func}`~qpdk.simulation.to_tsv_regions` and\n",
" {func}`~qpdk.simulation.tsv_stack` produce a meshed, port-checked Palace\n",
" model of the transition, and the objective above closes the loop on\n",
" $|S_{11}|$.\n",
"\n",
"Natural next steps: model the TSV liner as a thin conductive shell rather\n",
"than a solid via, and add the kinetic inductance of the thin TiN lining,\n",
"which a PEC-and-conductor model leaves out."
]
},
{
"cell_type": "markdown",
"id": "777a4df6",
"metadata": {},
"source": [
"## References\n",
"\n",
"```{bibliography}\n",
":filter: docname in docnames\n",
"```"
]
}
],
"metadata": {
"jupytext": {
"main_language": "python"
},
"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.12.14"
}
},
"nbformat": 4,
"nbformat_minor": 5
}