Source code for mqt.bench.targets.devices.quantinuum
# Copyright (c) 2023 - 2026 Chair for Design Automation, TUM
# Copyright (c) 2025 - 2026 Munich Quantum Software Company GmbH
# All rights reserved.
#
# SPDX-License-Identifier: MIT
#
# Licensed under the MIT License
"""File to create a target device from the Quantinuum calibration data."""
from __future__ import annotations
from qiskit.circuit import IfElseOp, Parameter
from qiskit.circuit.library import Measure, RXGate, RYGate, RZGate, RZZGate
from qiskit.transpiler import InstructionProperties, Target
from ._registry import register_device
[docs]
@register_device("quantinuum_h2_56")
def get_quantinuum_h2_56() -> Target:
"""Get the target device for Quantinuum H2."""
num_qubits = 56
return _build_quantinuum_target(
name="quantinuum_h2_56",
num_qubits=num_qubits,
oneq_error=0.00003,
twoq_error=0.0015,
spam_error=0.0015,
)
def _build_quantinuum_target(
*,
name: str,
num_qubits: int,
oneq_error: float,
twoq_error: float,
spam_error: float,
) -> Target:
"""Construct a hardcoded Quantinuum target using mean values."""
target = Target(num_qubits=num_qubits, description=name)
# Define symbolic parameters
theta = Parameter("theta")
phi = Parameter("phi")
alpha = Parameter("alpha")
# === Add single-qubit gates ===
single_qubit_gate_props = {(q,): InstructionProperties(error=oneq_error) for q in range(num_qubits)}
measure_props = {(q,): InstructionProperties(error=spam_error) for q in range(num_qubits)}
target.add_instruction(RXGate(theta), single_qubit_gate_props)
target.add_instruction(RYGate(phi), single_qubit_gate_props)
target.add_instruction(RZGate(theta), single_qubit_gate_props)
target.add_instruction(Measure(), measure_props)
# === Add two-qubit RZZ gates ===
connectivity = [(i, j) for i in range(num_qubits) for j in range(num_qubits) if i != j]
rzz_props = {(q1, q2): InstructionProperties(error=twoq_error) for q1, q2 in connectivity}
target.add_instruction(RZZGate(alpha), rzz_props)
# === Add control-flow ops ===
target.add_instruction(IfElseOp, name="if_else")
return target