def do_test(arch, clk, phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep_loopback = 3

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    data_val = 0;
    pkt_length = 20
    data_pid = 0x3 #DATA0 

    for pkt_length in range(10, 20):
    
        # min 237
        # increased to 277 when SETUP/OUT checking added
        AppendOutToken(packets, ep_loopback, inter_pkt_gap=277)
        packets.append(TxDataPacket(rand, data_start_val=data_val, length=pkt_length, pid=data_pid)) #DATA0
        packets.append(RxHandshakePacket(timeout=9))
        
        data_val = data_val + pkt_length
        data_pid = data_pid ^ 8

    do_rx_test(arch, clk, phy, packets, __file__, seed,
               level='smoke', extra_tasks=[])
def do_test(arch, tx_clk, tx_phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 1

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    dataval = 0

    AppendOutToken(packets, ep)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    # Note, quite big gap to allow checking.

    dataval += 10
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb))  #DATA1
    packets.append(RxHandshakePacket())

    dataval += 11
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand,
                     data_start_val=dataval,
                     length=12,
                     bad_crc=True,
                     pid=0x3))  #DATA0
    # Bad CRC - dont expect ACK
    #packets.append(RxHandshakePacket())

    #Due to bad CRC, XUD will not ACK and expect a resend of the same packet - so dont change PID
    dataval += 12
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=13, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket(timeout=9))

    # PID toggle as normal
    dataval += 13
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=14, pid=0xb))  #DATA1
    packets.append(RxHandshakePacket())

    do_rx_test(arch,
               tx_clk,
               tx_phy,
               packets,
               __file__,
               seed,
               level='smoke',
               extra_tasks=[])
Exemple #3
0
def do_test(arch, clk, phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 1

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    dataval = 0

    AppendOutToken(packets, ep)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    # Note, quite big gap to allow checking.

    dataval += 10
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb))  #DATA1
    packets.append(RxHandshakePacket())

    #Pretend the ACK went missing. Re-send same packet. xCORE should ACK but throw pkt away
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb))  #DATA1
    packets.append(RxHandshakePacket())

    dataval += 11
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    dataval += 12
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb))  #DATA1
    packets.append(RxHandshakePacket(timeout=9))

    dataval += 13
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    do_rx_test(arch,
               clk,
               phy,
               packets,
               __file__,
               seed,
               level='smoke',
               extra_tasks=[])
Exemple #4
0
def do_test(arch, tx_clk, tx_phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 2

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    dataval = 0

    AppendInToken(packets, ep)
    packets.append(
        RxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3))  #DATA0
    packets.append(TxHandshakePacket())

    dataval += 10
    AppendInToken(packets, ep, inter_pkt_gap=5000)
    packets.append(
        RxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb))  #DATA1
    packets.append(TxHandshakePacket())

    #pretend CRC got broken on way to host and dont send ACK
    dataval += 11
    AppendInToken(packets, ep, inter_pkt_gap=5000)
    packets.append(
        RxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3))  #DATA0
    #packets.append(TxHandshakePacket())

    #xCore should resend same packet again..
    AppendInToken(packets, ep, inter_pkt_gap=5000)
    packets.append(
        RxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3))  #DATA0
    packets.append(TxHandshakePacket())

    dataval += 12
    AppendInToken(packets, ep, inter_pkt_gap=5000)
    packets.append(
        RxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb))  #DATA1
    packets.append(TxHandshakePacket())

    dataval += 13
    AppendInToken(packets, ep, inter_pkt_gap=5000)
    packets.append(
        RxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3))  #DATA0
    packets.append(TxHandshakePacket())

    # Note, quite big gap to allow checking.
    do_rx_test(arch,
               tx_clk,
               tx_phy,
               packets,
               __file__,
               seed,
               level='smoke',
               extra_tasks=[])
Exemple #5
0
def do_test(arch, clk, phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 1

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    dataval = 0

    # Ping EP 2, expect NAK
    AppendPingToken(packets, 2)
    packets.append(RxHandshakePacket(pid=0x5a))

    # And again
    AppendPingToken(packets, 2)
    packets.append(RxHandshakePacket(pid=0x5a))

    # Send packet to EP 1, xCORE should mark EP 2 as ready
    AppendOutToken(packets, ep)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    # Ping EP 2 again - expect ACK
    AppendPingToken(packets, 2, inter_pkt_gap=6000)
    packets.append(RxHandshakePacket())

    # And again..
    AppendPingToken(packets, 2)
    packets.append(RxHandshakePacket())

    # Send out to EP 2.. expect ack
    AppendOutToken(packets, 2, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    # Re-Ping EP 2, expect NAK
    AppendPingToken(packets, 2)
    packets.append(RxHandshakePacket(pid=0x5a))

    # And again
    AppendPingToken(packets, 2)
    packets.append(RxHandshakePacket(pid=0x5a))

    do_rx_test(arch,
               clk,
               phy,
               packets,
               __file__,
               seed,
               level='smoke',
               extra_tasks=[])
def do_test(arch, tx_clk, tx_phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 0

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    AppendSetupToken(packets, ep)
    packets.append(TxDataPacket(rand, length=3, pid=3, bad_crc=True))
    #packets.append(RxHandshakePacket())

    AppendSetupToken(packets, ep)
    packets.append(TxDataPacket(rand, length=8, pid=3, bad_crc=False))
    packets.append(RxHandshakePacket(timeout=11))

    # Note, quite big gap to allow checking.

    packets.append(
        TokenPacket(
            inter_pkt_gap=2000,
            pid=0xe1,  #OUT
            address=dev_address,
            endpoint=ep))

    packets.append(TxDataPacket(rand, length=10, pid=0xb))

    packets.append(RxHandshakePacket())

    packets.append(
        TokenPacket(
            inter_pkt_gap=2000,
            pid=0x69,  #OUT
            address=dev_address,
            endpoint=ep))

    #Expect 0-length
    packets.append(RxDataPacket(rand, length=0, pid=0x4b))

    # Send ACK
    packets.append(TxHandshakePacket())

    do_rx_test(arch,
               tx_clk,
               tx_phy,
               packets,
               __file__,
               seed,
               level='smoke',
               extra_tasks=[])
def do_test(arch, tx_clk, tx_phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 0

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    AppendSetupToken(packets, ep)

    # DATA0 data packet with bad CRC
    packets.append(TxDataPacket(rand, length=8, pid=3, bad_crc=True))

    # Dont expect an ACK due to bad CRC
    #packets.append(RxHandshakePacket())

    AppendSetupToken(packets, ep, inter_pkt_gap=400)
    packets.append(TxDataPacket(rand, length=8, pid=3, bad_crc=False))
    packets.append(RxHandshakePacket(timeout=11))

    # Note, quite big gap to allow checking.

    AppendOutToken(packets, ep, inter_pkt_gap=2000)

    packets.append(TxDataPacket(rand, length=10, pid=0xb))

    packets.append(RxHandshakePacket())

    #IN
    AppendInToken(packets, ep, inter_pkt_gap=500)

    #Expect 0-length
    packets.append(RxDataPacket(rand, length=0, pid=0x4b))

    # Send ACK
    packets.append(TxHandshakePacket())

    do_rx_test(arch,
               tx_clk,
               tx_phy,
               packets,
               __file__,
               seed,
               level='smoke',
               extra_tasks=[])
Exemple #8
0
    def test_dut_online_after_reboot(self, dut, execute_helper):
        """Wait for the DUT to come back online.

        The previous test causes the DUT to reboot.
        """
        dut_address = ""

        # Wait some time before discovering again the DUT
        time.sleep(20)

        while not dut_address:
            dut_address = get_dut_address(dut, execute_helper)
            if dut_address:
                print("DUT {} is online again".format(dut_address))
                break
            print("DUT is still offline. Trying again...")
        assert dut_address is not None
Exemple #9
0
 def test_dut_online_after_reboot(self, dut, execute_helper,
                                  update_component_name):
     """Wait for the DUT to be back online after the reboot."""
     # Wait some time before attempting to discover the DUT
     if update_component_name not in ["sample-app", "multi-app-all-good"]:
         time.sleep(30)
         dut_address = ""
         num_retries = 0
         while not dut_address and num_retries < 30:
             dut_address = get_dut_address(dut, execute_helper)
             if dut_address:
                 print("DUT {} is online again".format(dut_address))
             else:
                 print("DUT is still offline. Trying again...")
             num_retries += 1
         assert dut_address
     else:
         pytest.skip("Don't reboot for app updates")
def do_test(arch, tx_clk, tx_phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 1

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    dataval = 0

    AppendOutToken(packets, ep)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    # Assert RxError during packet
    dataval += 10
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand,
                     data_start_val=dataval,
                     length=11,
                     pid=0xb,
                     rxe_assert_time=5))  #DATA1

    # xCORE should ignore the packet and not handshake...
    #packets.append(RxHandshakePacket())

    # Re-send..
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand,
                     data_start_val=dataval,
                     length=11,
                     pid=0xb,
                     rxe_assert_time=0))  #DATA1
    packets.append(RxHandshakePacket())

    dataval += 11
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket(timeout=9))

    dataval += 12
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand,
                     data_start_val=dataval,
                     length=13,
                     pid=0xb,
                     rxe_assert_time=1))  #DATA1
    #packets.append(RxHandshakePacket())

    #resend
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb))  #DATA1
    packets.append(RxHandshakePacket())

    dataval += 13
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(
        TxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3))  #DATA0
    packets.append(RxHandshakePacket())

    do_rx_test(arch,
               tx_clk,
               tx_phy,
               packets,
               __file__,
               seed,
               level='smoke',
               extra_tasks=[])
Exemple #11
0
def dut_addr(dut, execute_helper):
    """Fixture to return the DUT address."""
    return get_dut_address(dut, execute_helper)
Exemple #12
0
def do_test(arch, tx_clk, tx_phy, seed):
    rand = random.Random()
    rand.seed(seed)

    dev_address = get_dut_address()
    ep = 1

    # The inter-frame gap is to give the DUT time to print its output
    packets = []

    dataval = 0;

    # Reserved PID
    packets.append(TokenPacket( 
        inter_pkt_gap=2000, 
        pid=0x0,
        address=dev_address, 
        endpoint=ep))
    
    # Valid IN but not for us..
    packets.append(TokenPacket( 
        inter_pkt_gap=200, 
        pid=0x69,
        address=dev_address, 
        endpoint=ep,
        valid=False))

  # Valid OUT but not for us..
    packets.append(TokenPacket( 
        inter_pkt_gap=200, 
        pid=0xe1,
        address=dev_address, 
        endpoint=ep,
        valid=False))

    AppendOutToken(packets, ep)
    packets.append(TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0
    packets.append(RxHandshakePacket())

    # Valid SETUP but not for us..
    packets.append(TokenPacket( 
        inter_pkt_gap=200, 
        pid=0x2d,
        address=dev_address, 
        endpoint=ep,
        valid=False))



    # Note, quite big gap to allow checking.
    
    dataval += 10
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb)) #DATA1
    packets.append(RxHandshakePacket())

    # Valid PING but not for us..
    packets.append(TokenPacket( 
        inter_pkt_gap=200, 
        pid=0xb4,
        address=dev_address, 
        endpoint=ep,
        valid=False))



    dataval += 11
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(TxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3)) #DATA0
    packets.append(RxHandshakePacket())

    dataval += 12
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(TxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb)) #DATA1
    packets.append(RxHandshakePacket())

    dataval += 13
    AppendOutToken(packets, ep, inter_pkt_gap=6000)
    packets.append(TxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3)) #DATA0
    packets.append(RxHandshakePacket())


    do_rx_test(arch, tx_clk, tx_phy, packets, __file__, seed,
               level='smoke', extra_tasks=[])