def test_final_measurement_barrier_for_simulators(self, mock_pass): """Verify BarrierBeforeFinalMeasurements pass is in default pipeline for simulators.""" circ = QuantumCircuit.from_qasm_file(self._get_resource_path('example.qasm', Path.QASMS)) dag_circuit = circuit_to_dag(circ) transpile_dag(dag_circuit) self.assertTrue(mock_pass.called)
def test_final_measurement_barrier_for_devices(self, mock_pass): """Verify BarrierBeforeFinalMeasurements pass is called in default pipeline for devices.""" circ = QuantumCircuit.from_qasm_file(self._get_resource_path('example.qasm', Path.QASMS)) dag_circuit = circuit_to_dag(circ) transpile_dag(dag_circuit, coupling_map=FakeRueschlikon().configuration().coupling_map) self.assertTrue(mock_pass.called)
def test_move_measurements(self): """Measurements applied AFTER swap mapping. """ backend = FakeQX5BackEnd() cmap = backend.configuration().coupling_map circ = QuantumCircuit.from_qasm_file( self._get_resource_path('qasm/move_measurements.qasm')) dag_circuit = DAGCircuit.fromQuantumCircuit(circ) lay = { ('qa', 0): ('q', 0), ('qa', 1): ('q', 1), ('qb', 0): ('q', 15), ('qb', 1): ('q', 2), ('qb', 2): ('q', 14), ('qN', 0): ('q', 3), ('qN', 1): ('q', 13), ('qN', 2): ('q', 4), ('qc', 0): ('q', 12), ('qNt', 0): ('q', 5), ('qNt', 1): ('q', 11), ('qt', 0): ('q', 6) } out_dag = transpile_dag(dag_circuit, initial_layout=lay, coupling_map=cmap, format='dag') moved_meas = remove_last_measurements(out_dag, perform_remove=False) meas_nodes = out_dag.get_named_nodes('measure') self.assertEqual(len(moved_meas), len(meas_nodes))
def test_move_measurements(self): """Measurements applied AFTER swap mapping. """ backend = FakeRueschlikon() cmap = backend.configuration().coupling_map circ = QuantumCircuit.from_qasm_file( self._get_resource_path('move_measurements.qasm', Path.QASMS)) dag_circuit = circuit_to_dag(circ) lay = { ('qa', 0): ('q', 0), ('qa', 1): ('q', 1), ('qb', 0): ('q', 15), ('qb', 1): ('q', 2), ('qb', 2): ('q', 14), ('qN', 0): ('q', 3), ('qN', 1): ('q', 13), ('qN', 2): ('q', 4), ('qc', 0): ('q', 12), ('qNt', 0): ('q', 5), ('qNt', 1): ('q', 11), ('qt', 0): ('q', 6) } out_dag = transpile_dag(dag_circuit, initial_layout=lay, coupling_map=cmap) meas_nodes = out_dag.get_named_nodes('measure') for n in meas_nodes: is_last_measure = all([ after_measure in out_dag.output_map.values() for after_measure in out_dag.quantum_successors(n) ]) self.assertTrue(is_last_measure)