Data patterns for AXI4-Stream - 1.0 English

Performance AXI Traffic Generator LogiCORE IP Product Guide (PG381)

Document ID
PG381
Release Date
2023-10-18
Version
1.0 English

The following data patterns are supported by the Synthesizable TG for AXI4-Stream:

Table 1. Data Patterns for Synthesizable TG for AXI4-Stream
Data Pattern Option
CONSTANT DATA
  • The user defined data bytes (max 32-bit wide) is constantly sent on all stream transfers.
  • The user can select the constant data pattern by setting tdata_pattern csv field to constant and can set the data byte value on tdata_pat_value csv field.

  • For example, if the tdata_pattern= constant, tdata_pat_value= 0x5556_5758 and AXI Data Width= 64, all the stream transfer values of the given instruction will be sent as 0x0000_0000_5556_5758.

RANDOM DATA
  • The random data is sent on each stream transfer. The seed value can be set to generate different random patterns.
  • The user can select the random data pattern by setting tdata_pattern csv field to random and can set the seed value on tdata_pat_value csv field.

HAMMER DATA
  • The hammer data has long number of tail bits (MSbits) with value of 0 or 1 and short number of header bits (LSbits) with inverted bit value in a stream transfer. In each stream packet, the value of tail bits (wide of ¾th of data_width_bits) and header bits (wide of ¼th of data_width_bits) of first stream transfer are 0 and 1 respectively. From the second transfer onwards, each stream transfer value is generated as inverse of previous stream transfer.
  • The user can select the hammer data pattern by setting the tdata_pattern csv field to hammer.

  • For example, if AXI Data Width= 64, pkt_cnt=2 and pkt_len=0x5, stream transfers are generated as below:

    • header_width = data_width_bits/4 = 64/4 = 16

    • tail_width = (data_width_bits*3)/4 = (64*3)/4 = 48

  • In each stream packet, the 1st stream transfer is calculated as header bits of 16{{1’b1}} and tail bits of 48{{1’b0}}. From 2nd transfer onwards, the previous tdata value are inverted on each transfer.

    TDATA = 0x0000_0000_0000_FFFF, TLAST = 0

    TDATA = 0xFFFF _ FFFF _FFFF_0000, TLAST = 0

    TDATA = 0x0000_0000_0000_FFFF, TLAST = 0

    TDATA = 0xFFFF _ FFFF _FFFF_0000, TLAST = 0

    TDATA = 0x0000_0000_0000_FFFF, TLAST = 1

    TDATA = 0x0000_0000_0000_FFFF, TLAST = 0

    TDATA = 0xFFFF _ FFFF _FFFF_0000, TLAST = 0

    TDATA = 0x0000_0000_0000_FFFF, TLAST = 0

    TDATA = 0xFFFF _ FFFF _FFFF_0000, TLAST = 0

    TDATA = 0x0000_0000_0000_FFFF, TLAST = 1

BYTE_INCR DATA
  • Every byte in the stream transfer has an incremented value. In each stream packet, the LSbyte value of first transfer is 0x00 and every other byte of transfers has an incremented value.
  • The user can select the byte_incr data pattern by setting tdata_pattern csv field to byte_incr.

  • For example, if AXI Data Width= 128, pkt_cnt=2 and pkt_len=0x3, stream transfers are generated as below:

    TDATA= 0x0F0E_0D0C_0B0A_0908_0706_0504_0302_0100, TLAST= 0

    TDATA= 0x1F1E_1D1C_1B1A_1918_1716_1514_1312_1110, TLAST= 0

    TDATA= 0x2F2E_2D2C_2B2A_2928_2726_2524_2322_2120, TLAST= 1

    TDATA= 0x0F0E_0D0C_0B0A_0908_0706_0504_0302_0100, TLAST= 0

    TDATA= 0x1F1E_1D1C_1B1A_1918_1716_1514_1312_1110, TLAST= 0

    TDATA= 0x2F2E_2D2C_2B2A_2928_2726_2524_2322_2120, TLAST= 1

16BYTE_INCR DATA
  • Every 16 byte in the stream transfer has an incremented value. In each stream packet, the value of Least significant 16 bytes of first transfer is 0x0 and every other set of 16 bytes of transfers has an incremented value.
    Note: 16byte_incr data pattern is only supported on 128-bit, 256-bit and 512-bit data width designs.
  • The user can select the 16byte_incr data pattern by setting tdata_pattern csv field to 16byte_incr.

  • Example1, if AXI Data Width= 128, pkt_cnt=2 and pkt_len=0x4, stream transfers are generated as below:

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0000, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0001, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0002, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0003, TLAST= 1

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0000, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0001, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0002, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0003, TLAST= 1

  • Example2, if AXI Data Width= 256, pkt_cnt=2 and pkt_len=0x4, stream transfers are generated as below:

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0001_0000_0000_0000_0000_0000_0000_0000_0000, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0003_0000_0000_0000_0000_0000_0000_0000_0002, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0005_0000_0000_0000_0000_0000_0000_0000_0004, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0007_0000_0000_0000_0000_0000_0000_0000_0006, TLAST= 1

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0001_0000_0000_0000_0000_0000_0000_0000_0000, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0003_0000_0000_0000_0000_0000_0000_0000_0002, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0005_0000_0000_0000_0000_0000_0000_0000_0004, TLAST= 0

    TDATA= 0x0000_0000_0000_0000_0000_0000_0000_0007_0000_0000_0000_0000_0000_0000_0000_0006, TLAST= 1