示例#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
from pycqed.instrument_drivers.library.Transport import IPTransport
from pycqed.instrument_drivers.physical_instruments.QuTech.CC import CC

# parameter handling
filename = ''
ip = '192.168.0.241'
if len(sys.argv) == 1:
    raise ("missing parameter 'filename'")
if len(sys.argv) > 1:
    filename = sys.argv[1]
if len(sys.argv) > 2:
    ip = sys.argv[2]

log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)

log.info('connecting to CC')
cc = CC('cc', IPTransport(ip))
cc.init()

if 1:
    cc.debug_marker_out(0, cc.UHFQA_TRIG)
    cc.debug_marker_out(1, cc.UHFQA_TRIG)
    #cc.debug_marker_out(8, cc.HDAWG_TRIG)

log.info(f'uploading {filename} and starting CC')
with open(filename, 'r') as f:
    prog = f.read()
cc.assemble_and_start(prog)
示例#3
0
    p = sqo.off_on(
        qubit_idx=qubit_idx, pulse_comb='on',
        initialize=False,
        platf_cfg=cfg_openql_platform_fn)
    print(p.filename)


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

    if 1:
        cc.debug_marker_out(0, cc.UHFQA_TRIG) # UHF-QA trigger
        cc.debug_marker_out(8, cc.HDAWG_TRIG) # HDAWG trigger


    log.debug('uploading {}'.format(p.filename))
    if 0:
        cc.eqasm_program = p.filename
    else:
        with open(p.filename, 'r') as f:
            prog = f.read()
        cc.sequence_program_assemble(prog)

    err_cnt = cc.get_system_error_count()
    for i in range(err_cnt):
        print(cc.get_error())
            
            loop:   seq_out     0x03FF0000,1            # NB: TRIG=0x00010000, CW[8:0]=0x03FE0000
                    seq_out     0x0,$wait
                    jmp         @loop
            """)
            cc.assemble_and_start(cc_prog)

            log.debug('calibrating DIO protocol on CC')
            if 0:  # marker outputs
                if 1:
                    cc.debug_marker_in(
                        cc_slot_uhfqa0, cc.UHFQA_DV
                    )  # watch DV to check upstream period/frequency
                else:
                    cc.debug_marker_out(
                        cc_slot_uhfqa0, cc.UHFQA_TRIG
                    )  # watch TRIG to check downstream period/frequency
            cc.calibrate_dio_protocol(dio_mask=dio_mask,
                                      expected_sequence=expected_sequence,
                                      port=cc_slot_uhfqa0)

            dio_rd_index = cc.debug_get_ccio_reg(cc_slot_uhfqa0,
                                                 SYS_ST_OPER_DIO_RD_INDEX)
            log.info(
                f'DIO calibration condition = 0x{cc.debug_get_ccio_reg(cc_slot_uhfqa0, SYS_ST_QUES_DIOCAL_COND):x} (0=OK)'
            )
            log.info(f'DIO read index = {dio_rd_index}')
            log.info(
                f'DIO margin = {cc.debug_get_ccio_reg(cc_slot_uhfqa0, SYS_ST_OPER_DIO_MARGIN)}'
            )
            if dio_rd_index < 0: