kqcircuits.qubits.qubit

class kqcircuits.qubits.qubit.Qubit[source]

Bases: Element

Base class for qubit objects without actual produce function.

Collection of shared sub routines for shared parameters and producing shared aspects of qubit geometry including

  • possible fluxlines

  • e-beam layers for SQUIDs

  • SQUID name parameter

It is customary to also define probepoints for a qubit. Simply define two refpoints as appropriate probepoints. For single island qubits:

self.refpoints["probe_ground"] = pya.DPoint(...)
self.refpoints["probe_island"] = pya.DPoint(...)
self.cell.shapes(self.get_layer("ground_grid_avoidance")).insert(
    pya.DBox(-20.0, -20.0, 20.0, 20.0).moved(self.refpoints["probe_ground"]))

For double island qubits:

self.refpoints["probe_island_1"] = pya.DPoint(...)
self.refpoints["probe_island_2"] = pya.DPoint(...)
LIBRARY_NAME = 'Qubit Library'
LIBRARY_DESCRIPTION = 'Library for qubits.'
LIBRARY_PATH = 'qubits'
coerce_parameters_impl()[source]

default implementation

produce_squid(transf, only_arms=False, **parameters)[source]

Produces the squid.

Creates the squid cell and inserts it with the given transformation as a subcell. Also inserts the squid parts in “base_metal_gap_wo_grid”-layer to “base_metal_gap_for_EBL”-layer. It also returns a right_side refpoint, calculated from base_metal_gap_wo_grid layer’s bounding box to help with arm_length calculation in JunctionTestPads.

Parameters:
  • transf (DCplxTrans) – squid transformation

  • parameters – other parameters for the squid

  • only_arms – Boolean argument that allows to choose whether to create the arms and the squid device or only the arms

Returns:

Relative refpoints for the squid

Return type:

(dict)

produce_fluxline(rot=0, displacement=0, 0, **parameters)[source]

Produces the fluxline.

Creates the fluxline cell and inserts it as a subcell. The “flux” and “flux_corner” ports are made available for the qubit. By default, fluxlines align their “origin_fluxline” refpoint to “origin_squid” refpoint in the direction of “port_common”. However, the user might tweak the alignment direction by using the argument rot and the relative position by an extra pya.DVector(x, y) allowing to tune the position to achieve the desired design parameters.

Parameters:
  • rot – Extra rotation of the fluxline, in degrees

  • displacement (DVector) – fluxline x/y displacement (ignored if center alignment is available)

  • parameters – parameters for the fluxline to overwrite default and subclass parameters

PCell parameters:

  • mirror_squid (Boolean) - Mirror SQUID by its Y axis, default=False

  • junction_total_length (Double) - Simulation junction total length, default=33, unit=µm

  • junction_upper_pad_width (Double) - Simulation junction upper metal pad width, default=8, unit=µm

  • junction_upper_pad_length (Double) - Simulation junction upper metal pad length, default=13, unit=µm

  • junction_lower_pad_width (Double) - Simulation junction lower metal pad width, default=8, unit=µm

  • junction_lower_pad_length (Double) - Simulation junction lower metal pad length, default=12, unit=µm

  • junction_type (String) - Junction Type, default=Manhattan, choices=['No Squid', 'Manhattan', 'Manhattan Single Junction', 'Sim']

  • junction_width (Double) - Junction width (only used for code generated element), default=0.02, unit=μm

  • junction_parameters (String) - Extra Junction Parameters, default={}

  • _junction_parameters (String) - Previous state of *_parameters, default={}

  • loop_area (Double) - Loop area, default=100, unit=μm^2

  • fluxline_type (String) - Fluxline Type, default=Fluxline Standard, choices=['none', 'Fluxline Standard', 'Fluxline Straight']

  • fluxline_parameters (String) - Extra Fluxline Parameters, default={}

  • _fluxline_parameters (String) - Previous state of *_parameters, default={}

../_images/kqcircuits.qubits.qubit.png