def test_call_gate_and_circuit(self): """Test calling circuit with gates.""" h_control = circuit.QuantumCircuit(2) h_control.h(0) with pulse.build(self.backend) as schedule: with pulse.align_sequential(): # this is circuit, a subroutine stored as Call instruction pulse.call(h_control) # this is instruction, not subroutine pulse.cx(0, 1) # this is macro, not subroutine pulse.measure([0, 1]) # subroutine h_reference = compiler.schedule(compiler.transpile(h_control, self.backend), self.backend) # gate cx_circ = circuit.QuantumCircuit(2) cx_circ.cx(0, 1) cx_reference = compiler.schedule(compiler.transpile(cx_circ, self.backend), self.backend) # measurement measure_reference = macros.measure( qubits=[0, 1], inst_map=self.inst_map, meas_map=self.configuration.meas_map ) reference = pulse.Schedule() reference += pulse.instructions.Call(h_reference) reference += cx_reference reference += measure_reference << reference.duration self.assertScheduleEqual(schedule, reference)
def test_lazy_evaluation_with_transpiler(self): """Test that the two cx gates are optimizied away by the transpiler.""" with pulse.build(self.backend) as schedule: pulse.cx(0, 1) pulse.cx(0, 1) reference_qc = circuit.QuantumCircuit(2) reference = compiler.schedule(reference_qc, self.backend) self.assertEqual(schedule, reference)
def test_cx(self): """Test cx gate.""" with pulse.build(self.backend) as schedule: pulse.cx(0, 1) reference_qc = circuit.QuantumCircuit(2) reference_qc.cx(0, 1) reference = compiler.schedule(reference_qc, self.backend) self.assertEqual(schedule, reference)