2929from qiskit .circuit import Measure , Parameter , ParameterExpression
3030from qiskit .circuit .parametervector import ParameterVectorElement
3131from qiskit .transpiler import Target
32- from qiskit_ionq import ionq_gates
32+ from qiskit_ionq import add_equivalences , ionq_gates
3333
3434from qiskit_braket_provider .exception import QiskitBraketException
3535
36+ add_equivalences ()
37+
3638_GPHASE_GATE_NAME = "global_phase"
3739
3840_BRAKET_TO_QISKIT_NAMES = {
@@ -436,6 +438,7 @@ def to_braket(
436438 _validate_name_conflicts (circuit .parameters )
437439
438440 # Handle qiskit to braket conversion
441+ measured_qubits = set ()
439442 for circuit_instruction in circuit .data :
440443 operation = circuit_instruction .operation
441444 gate_name = operation .name
@@ -445,7 +448,11 @@ def to_braket(
445448 if gate_name == "measure" :
446449 qubit = qubits [0 ] # qubit count = 1 for measure
447450 qubit_index = circuit .find_bit (qubit ).index
448- braket_circuit .measure (qubit_index )
451+ if qubit_index in measured_qubits :
452+ raise ValueError (
453+ f"Cannot measure previously measured qubit { qubit_index } "
454+ )
455+ measured_qubits .add (qubit_index )
449456 elif gate_name == "barrier" :
450457 warnings .warn (
451458 "The Qiskit circuit contains barrier instructions that are ignored."
@@ -463,6 +470,10 @@ def to_braket(
463470
464471 # Getting the index from the bit mapping
465472 qubit_indices = [circuit .find_bit (qubit ).index for qubit in qubits ]
473+ if intersection := measured_qubits .intersection (qubit_indices ):
474+ raise ValueError (
475+ f"Cannot apply operation { gate_name } to measured qubits { intersection } "
476+ )
466477 params = _create_free_parameters (operation )
467478 if gate_name in _QISKIT_CONTROLLED_GATE_NAMES_TO_BRAKET_GATES :
468479 for gate in _QISKIT_CONTROLLED_GATE_NAMES_TO_BRAKET_GATES [gate_name ](
@@ -492,10 +503,13 @@ def to_braket(
492503 )
493504
494505 if verbatim :
495- return Circuit (braket_circuit .result_types ).add_verbatim_box (
506+ braket_circuit = Circuit (braket_circuit .result_types ).add_verbatim_box (
496507 Circuit (braket_circuit .instructions )
497508 )
498509
510+ for qubit in sorted (measured_qubits ):
511+ braket_circuit .measure (qubit )
512+
499513 return braket_circuit
500514
501515
0 commit comments