示例#1
0
    def test_all(self):
        file_name = 'Test_CC_test_all.scpi.txt'
        test_path = Path('test_output') / file_name
        os.makedirs('test_output', exist_ok=True)

        transport = FileTransport(str(test_path))
        cc = CC('cc', transport, ccio_slots_driving_vsm=[5])

        cc.reset()
        cc.clear_status()
        cc.set_status_questionable_frequency_enable(0x7FFF)

        cc.dio0_out_delay(0)
        cc.dio0_out_delay(31)
        cc.dio8_out_delay(0)
        cc.dio8_out_delay(31)

        cc.vsm_channel_delay0(0)
        cc.vsm_channel_delay0(1)
        cc.vsm_channel_delay0(127)
        cc.vsm_channel_delay31(0)
        cc.vsm_channel_delay31(127)

        cc.vsm_rise_delay0(0)
        cc.vsm_rise_delay0(48)
        cc.vsm_rise_delay31(0)
        cc.vsm_rise_delay31(48)
        cc.vsm_fall_delay0(0)
        cc.vsm_fall_delay0(48)
        cc.vsm_fall_delay31(0)
        cc.vsm_fall_delay31(48)

        cc.debug_marker_in(0, cc.UHFQA_TRIG)
        cc.debug_marker_in(0, cc.UHFQA_CW[0])

        cc.debug_marker_out(0, cc.UHFQA_TRIG)
        cc.debug_marker_out(8, cc.HDAWG_TRIG)

        prog = '    stop\n'
        cc.sequence_program_assemble(prog)

        tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
        tmp_file.write(prog)
        tmp_file.close()  # to allow access to file
        # FIXME: disabled because it requires input data, which we do not support yet
        #cc.eqasm_program(tmp_file.name)
        os.unlink(tmp_file.name)

        cc.start()
        cc.stop()

        transport.close()  # to allow access to file

        # check results
        test_output = test_path.read_text()
        golden_path = Path(
            pq.__path__[0]
        ) / 'tests/instrument_drivers/physical_instruments/QuTech/golden' / file_name
        golden = golden_path.read_text()
        self.assertEqual(test_output, golden)
示例#2
0
        x = int(round(pos[0]))
        y = int(round(pos[1]))
        x = clamp(x, 0, 31)
        y = clamp(y, 0, 31)

        # generate instruction
        val = (1<<31) + (y<<9) + (x)  # mode "microwave"
        prog += '    seq_out {},1\n'.format(val)
    prog += '    loop R0,@loop{}\n'.format(i)
prog += '    jmp @start\n'
log.debug('program generated: {} lines, {} bytes'.format(prog.count('\n'), len(prog)))


log.debug('connecting to CC')
cc = CC('cc', IPTransport(ip))
cc.reset()
cc.clear_status()
cc.status_preset()

log.debug('uploading program to CC')
cc.sequence_program_assemble(prog)
if cc.get_assembler_success() != 1:
    sys.stderr.write('error log = {}\n'.format(cc.get_assembler_log()))  # FIXME: result is messy
    log.warning('assembly failed')
else:
    log.debug('checking for SCPI errors on CC')
    err_cnt = cc.get_system_error_count()
    for i in range(err_cnt):
        print(cc.get_error())
    log.debug('done checking for SCPI errors on CC')