iqm.qiskit_iqm.iqm_naive_move_pass.IQMNaiveResonatorMoving

iqm.qiskit_iqm.iqm_naive_move_pass.IQMNaiveResonatorMoving#

class iqm.qiskit_iqm.iqm_naive_move_pass.IQMNaiveResonatorMoving(*args, **kwargs)#

Bases: TransformationPass

WIP Naive transpilation pass for resonator moving

A naive transpiler pass for use with the Qiskit PassManager. Although it requires a CouplingMap, Target, or Backend, it does not take this into account when adding MoveGates. It assumes target connectivity graph is star shaped with a single resonator in the middle. Which qubit is the resonator is represented with the resonator_register attribute. The pass assumes that all single qubit and two-qubit gates are allowed. The resonator is used to swap the qubit states for the two-qubit gates. Additionally, it assumes that no single qubit gates are allowed on the resonator.

WIP Naive transpilation pass for resonator moving

Parameters:
  • resonator_register (int) – Which qubit/vertex index represents the resonator.

  • move_qubits (int) – Which qubits (indices) can be moved into the resonator.

  • gate_set (list[str]) – Which gates are allowed by the target backend.

Attributes

Methods

_lookahead_first_qubit_used(full_dag, ...)

Lookahead function to see which qubit will be used first again for a CZ gate.

_move_resonator(qubit, canonical_register, ...)

Logic for creating the DAG for swapping a qubit in and out of the resonator.

run(dag)

Run the IQMNaiveResonatorMoving pass on dag.

run(dag)#

Run the IQMNaiveResonatorMoving pass on dag.

Parameters:

dag (DAGCircuit) – DAG to map.

Returns:

A mapped DAG.

Return type:

DAGCircuit

Raises:

TranspilerError – if the layout are not compatible with the DAG, or if the input gate set is incorrect.