Beispiel #1
0
    def test_qasm_wait_timing_trigger_T1(self):
        # Tests the timing of the qasm sequences using a T1 sequence
        # 'q1' contains "trigger" instructions
        qasm_file = sqqs.T1('q1', self.times)
        qasm_fn = qasm_file.name
        qumis_fn = join(self.test_file_dir, "T1_xf.qumis")
        compiler = qcx.QASM_QuMIS_Compiler(self.simple_config_fn,
                                           verbosity_level=2)
        compiler.compile(qasm_fn, qumis_fn)
        asm = Assembler(qumis_fn)
        asm.convert_to_instructions()
        instrs = compiler.qumis_instructions
        self.assertEqual(instrs[2], 'Exp_Start: ')
        wait_instrs = instrs[7:-4:6]
        # -4 in slicing exists to take out the calibration points
        for clock, wait_instr in zip(self.clocks[:-4], wait_instrs[:-4]):
            exp_wait = clock + 4  # +4 includes the length of the pulse
            instr_wait = int(wait_instr.split()[1])
            self.assertEqual(instr_wait, exp_wait)

        init_instrs = instrs[3:-4:6]
        init_time = 200e-6 / 5e-9 - 1  # -1 is for the prepare codeword clock
        RO_time = 300e-9 / 5e-9

        self.assertEqual(init_instrs[0], 'wait {:d}'.format(int(init_time)))
        for init_instr in init_instrs[1:-4]:
            self.assertEqual(init_instr,
                             'wait {:d}'.format(int(init_time + RO_time)))

        self.assertEqual(instrs[-1], self.jump_to_start)
    def test_qwg_swapN(self):
        nr_pulses = [1, 3, 5, 11]
        qasm_file = qwfs.SWAPN('q0', 'q1', RO_target='q0', nr_pulses=nr_pulses)
        qasm_fn = qasm_file.name
        qumis_fn = join(self.test_file_dir, "output.qumis")
        compiler = qcx.QASM_QuMIS_Compiler(self.simple_config_fn,
                                           verbosity_level=2)
        compiler.compile(qasm_fn, qumis_fn)
        qumis = compiler.qumis_instructions
        m = open(compiler.qumis_fn).read()
        qumis_from_file = m.splitlines()
        self.assertEqual(qumis, qumis_from_file)
        self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
        self.assertEqual(compiler.qumis_instructions[-1], self.jump_to_start)

        for i in range(3):
            time_pts = get_timepoints_from_label(
                target_label='square',
                timing_grid=compiler.timing_grid,
                start_label='qwg_trigger_{}'.format(i),
                end_label='ro')
            self.assertEqual(len(time_pts['target_tps']), nr_pulses[i])

        time_pts = get_timepoints_from_label(target_label='ro',
                                             timing_grid=compiler.timing_grid)
        self.assertEqual(len(time_pts['target_tps']), len(nr_pulses) + 4)
        # finally test that it can be converted into valid instructions
        asm = Assembler(qumis_fn)
        asm.convert_to_instructions()
Beispiel #3
0
    def test_qasm_seq_echo(self):
        for q_name in ['q0', 'q1']:
            qasm_file = sqqs.echo(q_name, times=self.times)
            qasm_fn = qasm_file.name
            qumis_fn = join(self.test_file_dir, "echo_{}.qumis".format(q_name))
            compiler = qcx.QASM_QuMIS_Compiler(self.config_fn,
                                               verbosity_level=0)
            compiler.compile(qasm_fn, qumis_fn)
            asm = Assembler(qumis_fn)
            asm.convert_to_instructions()

            self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
            self.assertEqual(compiler.qumis_instructions[-1],
                             self.jump_to_start)
Beispiel #4
0
    def test_two_qubit_off_on(self):
        for RO_target in ['q0', 'q1', 'all']:
            qasm_file = mqqs.two_qubit_off_on('q0', 'q1', RO_target='all')
            qasm_fn = qasm_file.name
            qumis_fn = join(self.test_file_dir, "TwoQ_off_on.qumis")
            compiler = qcx.QASM_QuMIS_Compiler(self.simple_config_fn,
                                               verbosity_level=2)
            compiler.compile(qasm_fn, qumis_fn)
            asm = Assembler(qumis_fn)
            asm.convert_to_instructions()

            self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
            self.assertEqual(compiler.qumis_instructions[-1],
                             self.jump_to_start)

            self.assertEqual(
                compiler.qumis_instructions.count('trigger 0000001, 3'), 4)
Beispiel #5
0
    def test_qasm_seq_randomized_benchmarking(self):
        ncl = [2, 4, 6, 20]
        nr_seeds = 10
        for q_name in ['q0', 'q1']:
            qasm_file = sqqs.randomized_benchmarking(q_name, ncl, nr_seeds)
            qasm_fn = qasm_file.name
            qumis_fn = join(self.test_file_dir,
                            "randomized_benchmarking_{}.qumis".format(q_name))
            compiler = qcx.QASM_QuMIS_Compiler(self.config_fn,
                                               verbosity_level=0)
            compiler.compile(qasm_fn, qumis_fn)
            asm = Assembler(qumis_fn)
            asm.convert_to_instructions()

            self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
            self.assertEqual(compiler.qumis_instructions[-1],
                             self.jump_to_start)
Beispiel #6
0
 def test_qasm_seq_butterfly(self):
     for q_name in ['q1', 'q1']:
         qasm_file = sqqs.butterfly(q_name, initialize=True)
         qasm_fn = qasm_file.name
         qumis_fn = join(self.test_file_dir,
                         "butterfly_{}.qumis".format(q_name))
         compiler = qcx.QASM_QuMIS_Compiler(self.simple_config_fn,
                                            verbosity_level=2)
         compiler.compile(qasm_fn, qumis_fn)
         asm = Assembler(qumis_fn)
         asm.convert_to_instructions()
         self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
         self.assertEqual(compiler.qumis_instructions[-1],
                          self.jump_to_start)
         # The sequence should contain 6 RO instructions
         self.assertEqual(
             compiler.qumis_instructions.count('trigger 0000001, 3'), 6)
Beispiel #7
0
    def test_compiler_example(self):
        qasm_fn = join(self.test_file_dir, 'dev_test.qasm')
        qumis_fn = join(self.test_file_dir, "output.qumis")
        compiler = qcx.QASM_QuMIS_Compiler(self.config_fn, verbosity_level=6)
        compiler.compile(qasm_fn, qumis_fn)
        qumis = compiler.qumis_instructions
        m = open(compiler.qumis_fn).read()
        qumis_from_file = m.splitlines()
        self.assertEqual(qumis, qumis_from_file)
        self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')

        # Test that the final wait after the last instruction is not trimmed
        self.assertEqual(compiler.qumis_instructions[-2], 'wait 60')
        self.assertEqual(compiler.qumis_instructions[-1], self.jump_to_start)

        # finally test that it can be converted into valid instructions
        asm = Assembler(qumis_fn)
        asm.convert_to_instructions()
Beispiel #8
0
    def test_chevron_block_seq(self):
        qasm_file = qwfs.chevron_block_seq('q0',
                                           'q1',
                                           RO_target='q0',
                                           no_of_points=5)
        qasm_fn = qasm_file.name
        qumis_fn = join(self.test_file_dir, "chevron_block.qumis")
        compiler = qcx.QASM_QuMIS_Compiler(self.simple_config_fn,
                                           verbosity_level=6)
        compiler.compile(qasm_fn, qumis_fn)
        asm = Assembler(qumis_fn)
        asm.convert_to_instructions()

        self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
        self.assertEqual(compiler.qumis_instructions[-1], self.jump_to_start)

        self.assertEqual(
            compiler.qumis_instructions.count('trigger 0000001, 3'), 5)

        compiler.timing_event_list
    def test_qwg_chevron(self):
        qasm_file = qwfs.chevron_block_seq('q0',
                                           'q1',
                                           RO_target='q0',
                                           no_of_points=5)
        qasm_fn = qasm_file.name
        qumis_fn = join(self.test_file_dir, "output.qumis")
        compiler = qcx.QASM_QuMIS_Compiler(self.simple_config_fn,
                                           verbosity_level=6)
        compiler.compile(qasm_fn, qumis_fn)
        qumis = compiler.qumis_instructions
        m = open(compiler.qumis_fn).read()
        qumis_from_file = m.splitlines()
        self.assertEqual(qumis, qumis_from_file)
        self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
        self.assertEqual(compiler.qumis_instructions[-1], self.jump_to_start)

        # finally test that it can be converted into valid instructions
        asm = Assembler(qumis_fn)
        asm.convert_to_instructions()
Beispiel #10
0
    def test_restless_RB_seq(self):
        ncl = [10]
        nr_seeds = 15
        for q_name in ['q0', 'q1']:
            qasm_file = sqqs.randomized_benchmarking(q_name,
                                                     ncl,
                                                     nr_seeds,
                                                     restless=True,
                                                     cal_points=False)
            qasm_fn = qasm_file.name
            qumis_fn = join(self.test_file_dir,
                            "randomized_benchmarking_{}.qumis".format(q_name))
            compiler = qcx.QASM_QuMIS_Compiler(self.simple_config_fn,
                                               verbosity_level=0)
            compiler.compile(qasm_fn, qumis_fn)
            asm = Assembler(qumis_fn)
            asm.convert_to_instructions()

            self.assertEqual(compiler.qumis_instructions[2], 'Exp_Start: ')
            self.assertEqual(compiler.qumis_instructions[-1],
                             self.jump_to_start)

            self.assertEqual(
                compiler.qumis_instructions.count('trigger 0000001, 3'), 15)