Ejemplo n.º 1
0
    def test_ttl_pulse(self):
        core_host = self.device_mgr.get_desc("core")["arguments"]["host"]

        exp = self.create(CreateTTLPulse)
        exp.initialize_io()
        get_analyzer_dump(core_host)  # clear analyzer buffer
        exp.run()

        dump = decode_dump(get_analyzer_dump(core_host))
        self.assertIsInstance(dump.messages[-1], StoppedMessage)
        output_messages = [
            msg for msg in dump.messages
            if isinstance(msg, OutputMessage) and msg.address == 0
        ]
        self.assertEqual(len(output_messages), 2)
        self.assertEqual(
            abs(output_messages[0].timestamp - output_messages[1].timestamp),
            1000)
        input_messages = [
            msg for msg in dump.messages if isinstance(msg, InputMessage)
        ]
        self.assertEqual(len(input_messages), 2)
        # on Kasli systems, this has to go through the isolated DIO card
        self.assertAlmostEqual(abs(input_messages[0].timestamp -
                                   input_messages[1].timestamp),
                               1000,
                               delta=4)
Ejemplo n.º 2
0
    def test_rtio_log(self):
        core_host = self.device_mgr.get_desc("core")["arguments"]["host"]

        exp = self.create(WriteLog)
        get_analyzer_dump(core_host)  # clear analyzer buffer
        exp.run()

        dump = decode_dump(get_analyzer_dump(core_host))
        log  = "".join([_extract_log_chars(msg.data)
                        for msg in dump.messages
                        if isinstance(msg, OutputMessage) and msg.channel == dump.log_channel])
        self.assertEqual(log, "foo\x1E32\x1D")
Ejemplo n.º 3
0
    def test_rtio_log(self):
        core_host = self.device_mgr.get_desc("core")["arguments"]["host"]

        exp = self.create(WriteLog)
        get_analyzer_dump(core_host)  # clear analyzer buffer
        exp.run()

        dump = decode_dump(get_analyzer_dump(core_host))
        log  = "".join([_extract_log_chars(msg.data)
                        for msg in dump.messages
                        if isinstance(msg, OutputMessage) and msg.channel == dump.log_channel])
        self.assertEqual(log, "foo\x1E32\x1D")
Ejemplo n.º 4
0
def main():
    args = get_argparser().parse_args()
    common_args.init_logger_from_args(args)

    if (not args.print_decoded and args.write_vcd is None
            and args.write_dump is None):
        print("No action selected, use -p, -w and/or -d. See -h for help.")
        sys.exit(1)

    device_mgr = DeviceManager(DeviceDB(args.device_db))
    if args.read_dump:
        with open(args.read_dump, "rb") as f:
            dump = f.read()
    else:
        core_addr = device_mgr.get_desc("core")["arguments"]["host"]
        dump = get_analyzer_dump(core_addr)
    decoded_dump = decode_dump(dump)
    if args.print_decoded:
        print("Log channel:", decoded_dump.log_channel)
        print("DDS one-hot:", decoded_dump.dds_onehot_sel)
        for message in decoded_dump.messages:
            print(message)
    if args.write_vcd:
        with open(args.write_vcd, "w") as f:
            decoded_dump_to_vcd(f,
                                device_mgr.get_device_db(),
                                decoded_dump,
                                uniform_interval=args.vcd_uniform_interval)
    if args.write_dump:
        with open(args.write_dump, "wb") as f:
            f.write(dump)
Ejemplo n.º 5
0
def main():
    args = get_argparser().parse_args()
    init_logger(args)

    if (not args.print_decoded
            and args.write_vcd is None and args.write_dump is None):
        print("No action selected, use -p, -w and/or -d. See -h for help.")
        sys.exit(1)

    device_mgr = DeviceManager(DeviceDB(args.device_db))
    if args.read_dump:
        with open(args.read_dump, "rb") as f:
            dump = f.read()
    else:
        core_addr = device_mgr.get_desc("core")["arguments"]["host"]
        dump = get_analyzer_dump(core_addr)
    decoded_dump = decode_dump(dump)
    if args.print_decoded:
        print("Log channel:", decoded_dump.log_channel)
        print("DDS one-hot:", decoded_dump.dds_onehot_sel)
        for message in decoded_dump.messages:
            print(message)
    if args.write_vcd:
        with open(args.write_vcd, "w") as f:
            decoded_dump_to_vcd(f, device_mgr.get_device_db(),
                                decoded_dump,
                                uniform_interval=args.vcd_uniform_interval)
    if args.write_dump:
        with open(args.write_dump, "wb") as f:
            f.write(dump)
Ejemplo n.º 6
0
    def test_ttl_pulse(self):
        core_host = self.device_mgr.get_desc("core")["arguments"]["host"]

        exp = self.create(CreateTTLPulse)
        exp.initialize_io()
        get_analyzer_dump(core_host)  # clear analyzer buffer
        exp.run()

        dump = decode_dump(get_analyzer_dump(core_host))
        self.assertIsInstance(dump.messages[-1], StoppedMessage)
        output_messages = [msg for msg in dump.messages
                           if isinstance(msg, OutputMessage)
                              and msg.address == 0]
        self.assertEqual(len(output_messages), 2)
        self.assertEqual(
            abs(output_messages[0].timestamp - output_messages[1].timestamp),
            1000)
        input_messages = [msg for msg in dump.messages
                          if isinstance(msg, InputMessage)]
        self.assertEqual(len(input_messages), 2)
        self.assertAlmostEqual(
            abs(input_messages[0].timestamp - input_messages[1].timestamp),
            1000, delta=1)
Ejemplo n.º 7
0
    def test_dma_trace(self):
        core_host = self.device_mgr.get_desc("core")["arguments"]["host"]

        exp = self.create(_DMA)

        for use_handle in [False, True]:
            exp.record(use_handle)
            get_analyzer_dump(core_host)  # clear analyzer buffer
            exp.playback(use_handle)

            dump = decode_dump(get_analyzer_dump(core_host))
            self.assertEqual(len(dump.messages), 3)
            self.assertIsInstance(dump.messages[-1], StoppedMessage)
            self.assertIsInstance(dump.messages[0], OutputMessage)
            self.assertEqual(dump.messages[0].channel, 1)
            self.assertEqual(dump.messages[0].address, 0)
            self.assertEqual(dump.messages[0].data, 1)
            self.assertIsInstance(dump.messages[1], OutputMessage)
            self.assertEqual(dump.messages[1].channel, 1)
            self.assertEqual(dump.messages[1].address, 0)
            self.assertEqual(dump.messages[1].data, 0)
            self.assertEqual(
                dump.messages[1].timestamp - dump.messages[0].timestamp, 100)
Ejemplo n.º 8
0
    def test_dma_trace(self):
        core_host = self.device_mgr.get_desc("core")["arguments"]["host"]

        exp = self.create(_DMA)
        exp.record()

        for use_handle in [False, True]:
            get_analyzer_dump(core_host)  # clear analyzer buffer
            exp.playback(use_handle)

            dump = decode_dump(get_analyzer_dump(core_host))
            self.assertEqual(len(dump.messages), 3)
            self.assertIsInstance(dump.messages[-1], StoppedMessage)
            self.assertIsInstance(dump.messages[0], OutputMessage)
            self.assertEqual(dump.messages[0].channel, 1)
            self.assertEqual(dump.messages[0].address, 0)
            self.assertEqual(dump.messages[0].data, 1)
            self.assertIsInstance(dump.messages[1], OutputMessage)
            self.assertEqual(dump.messages[1].channel, 1)
            self.assertEqual(dump.messages[1].address, 0)
            self.assertEqual(dump.messages[1].data, 0)
            self.assertEqual(dump.messages[1].timestamp -
                             dump.messages[0].timestamp, 100)