diff --git a/qiskit_ibm_provider/utils/backend_converter.py b/qiskit_ibm_provider/utils/backend_converter.py index b3ff09396..e1db9b3e4 100644 --- a/qiskit_ibm_provider/utils/backend_converter.py +++ b/qiskit_ibm_provider/utils/backend_converter.py @@ -17,6 +17,7 @@ from qiskit.transpiler.target import Target, InstructionProperties from qiskit.utils.units import apply_prefix from qiskit.circuit.library.standard_gates import IGate, SXGate, XGate, CXGate, RZGate +from qiskit.circuit import IfElseOp, WhileLoopOp, ForLoopOp from qiskit.circuit.parameter import Parameter from qiskit.circuit.gate import Gate from qiskit.circuit.delay import Delay @@ -47,6 +48,11 @@ def convert_to_target( "rz": RZGate(Parameter("λ")), "reset": Reset(), } + control_flow_map = { + "if_else": IfElseOp, + "while_loop": WhileLoopOp, + "for_loop": ForLoopOp, + } custom_gates = {} target = None # Parse from properties if it exsits @@ -136,6 +142,11 @@ def convert_to_target( target.add_instruction( Delay(Parameter("t")), {(bit,): None for bit in range(target.num_qubits)} ) + # Handle control flow opeartions as globally support in the target + for control_flow_op_name, op_class in control_flow_map.items(): + if control_flow_op_name in configuration.basis_gates: + target.add_instruction(op_class, name=control_flow_op_name) + return target diff --git a/requirements.txt b/requirements.txt index 04c806bea..6da2dbe26 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -qiskit-terra>=0.20.0 +qiskit-terra>=0.22.0 requests>=2.19 requests_ntlm>=1.1.0 numpy>=1.13