Readout line

[1]:
# Enables module automatic reload.
# Your notebook will be able to pick up code updates made to qiskit-metal (or other) module code.

%reload_ext autoreload
%autoreload 2

Import key libraries and open the Metal GUI. Also we configure the notebook to enable overwriting of existing components

[2]:
from qiskit_metal import designs, draw
from qiskit_metal import MetalGUI, Dict, Headings

design = designs.DesignPlanar()
gui = MetalGUI(design)

# If you disable the next line with "overwrite_enabled", then you will need to
# delete a component [<component>.delete()] before recreating it.
design.overwrite_enabled = True
[3]:
from qiskit_metal.qlibrary.terminations.launchpad_wb_coupled import (
    LaunchpadWirebondCoupled,
)

# Explore the options of the LaunchpadWirebondCoupled.
LaunchpadWirebondCoupled.get_template_options(design)
[3]:
{'layer': '1',
 'trace_width': 'cpw_width',
 'trace_gap': 'cpw_gap',
 'coupler_length': '62.5um',
 'lead_length': '25um',
 'pos_x': '0um',
 'pos_y': '0um',
 'orientation': '0'}
[4]:
from qiskit_metal.qlibrary.tlines.meandered import RouteMeander

# Explore the options of the RouteMeander.
RouteMeander.get_template_options(design)
[4]:
{'pin_inputs': {'start_pin': {'component': '', 'pin': ''},
  'end_pin': {'component': '', 'pin': ''}},
 'fillet': '0',
 'lead': {'start_straight': '0mm',
  'end_straight': '0mm',
  'start_jogged_extension': '',
  'end_jogged_extension': ''},
 'total_length': '7mm',
 'chip': 'main',
 'layer': '1',
 'trace_width': 'cpw_width',
 'meander': {'spacing': '200um', 'asymmetry': '0um'},
 'snap': 'true',
 'prevent_short_edges': 'true'}
[5]:
from qiskit_metal.qlibrary.terminations.open_to_ground import OpenToGround

# Explore the options of the OpenToGround.
OpenToGround.get_template_options(design)
[5]:
{'width': '10um',
 'gap': '6um',
 'termination_gap': '6um',
 'pos_x': '0um',
 'pos_y': '0um',
 'orientation': '0',
 'chip': 'main',
 'layer': '1'}
[6]:
# Setup the launchpad location and orientation.
launch_options = dict(
    pos_x="990um", pos_y="2812um", orientation="270", lead_length="30um"
)

lp = LaunchpadWirebondCoupled(design, "P4_Q", options=launch_options)
[7]:
# Setup the OpenToGround location and orientation.
otg_options = dict(pos_x="2.5mm", pos_y="0.5mm", orientation="0")

otg = OpenToGround(design, "open_to_ground", options=otg_options)
[8]:
# After the two QComponents are added to design, connect them with a RouteMeander.
meander_options = Dict(
    total_length="10 mm",
    fillet="90 um",
    lead=dict(start_straight="100um"),
    pin_inputs=Dict(
        start_pin=Dict(component=lp.name, pin="tie"),
        end_pin=Dict(component=otg.name, pin="open"),
    ),
)

meander = RouteMeander(design, "bus", options=meander_options)
gui.rebuild()
gui.autoscale()
[9]:
# Get a list of all the qcomponents in QDesign and then zoom on them.
all_component_names = design.components.keys()

gui.zoom_on_components(all_component_names)
[10]:
# Look at the options of the launch pad in QDesign.
lp.options
[10]:
{'layer': '1',
 'trace_width': 'cpw_width',
 'trace_gap': 'cpw_gap',
 'coupler_length': '62.5um',
 'lead_length': '30um',
 'pos_x': '990um',
 'pos_y': '2812um',
 'orientation': '270'}
[11]:
# Look at the options of the RouteMeander in QDesign.
meander.options
[11]:
{'pin_inputs': {'start_pin': {'component': 'P4_Q', 'pin': 'tie'},
  'end_pin': {'component': 'open_to_ground', 'pin': 'open'}},
 'fillet': '90 um',
 'lead': {'start_straight': '100um',
  'end_straight': '0mm',
  'start_jogged_extension': '',
  'end_jogged_extension': ''},
 'total_length': '10 mm',
 'chip': 'main',
 'layer': '1',
 'trace_width': 'cpw_width',
 'meander': {'spacing': '200um', 'asymmetry': '0um'},
 'snap': 'true',
 'prevent_short_edges': 'true',
 'trace_gap': 'cpw_gap',
 '_actual_length': '10.0 mm'}
[12]:
# Save screenshot as a .png formatted file.
gui.screenshot()
../../_images/circuit-examples_E.Input-output-coupling_42-ResonatorAndLaunchPad_13_0.png
[13]:
# Screenshot the canvas only as a .png formatted file.
gui.figure.savefig("shot.png")

from IPython.display import Image, display

_disp_ops = dict(width=500)
display(Image("shot.png", **_disp_ops))
../../_images/circuit-examples_E.Input-output-coupling_42-ResonatorAndLaunchPad_14_0.png
[14]:
# Closing the Qiskit Metal GUI
gui.main_window.close()
[14]:
True
[ ]:



For more information, review the Introduction to Quantum Computing and Quantum Hardware lectures below

  • Superconducting Qubits I: Quantizing a Harmonic Oscillator, Josephson Junctions Part 1
Lecture Video Lecture Notes Lab
  • Superconducting Qubits I: Quantizing a Harmonic Oscillator, Josephson Junctions Part 2
Lecture Video Lecture Notes Lab
  • Superconducting Qubits I: Quantizing a Harmonic Oscillator, Josephson Junctions Part 3
Lecture Video Lecture Notes Lab
  • Superconducting Qubits II: Circuit Quantum Electrodynamics, Readout and Calibration Methods Part 1
Lecture Video Lecture Notes Lab
  • Superconducting Qubits II: Circuit Quantum Electrodynamics, Readout and Calibration Methods Part 2
Lecture Video Lecture Notes Lab
  • Superconducting Qubits II: Circuit Quantum Electrodynamics, Readout and Calibration Methods Part 3
Lecture Video Lecture Notes Lab