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 Non-Synthesizable TG for AXI4-Stream.

Table 1. Data Patterns for Non-Synthesizable TG AXI4-Stream
Data Pattern Options
CONSTANT DATA
  • The user defined data bytes (max 512-bit wide) is constantly sent on all stream transfer.
  • In case of user_defined_pattern_test, the user can select the constant data pattern by setting the tdata_pattern csv field to constant and can set the data value on tdata_pat_value field.
  • In case of pre_defined_pattern_test, the user can select the constant data pattern by setting the GUI parameter USER_C_AXI_TDATA_PATTERN to CONSTANT_DATA and can set the data value on USER_C_AXI_TDATA_VALUE GUI parameter.
  • For example, if tdata_pat_value= 0x3637_3839_4041_4243_4445_4647 and AXI Data Width= 128, all the stream transfer values of the given instruction is sent as 0x0000_0000_3637_3839_4041_4243_4445_4647.
RANDOM DATA
  • The random data is sent on each stream transfer. The seed value can be set to generate different random patterns.
  • In case of user_defined_pattern_test, the user can select the random data pattern by setting the tdata_pattern csv field to random and can set the seed value on tdata_pat_value field.
  • In case of pre_defined_pattern_test, the user can select the random data pattern by setting the GUI parameter USER_C_AXI_TDATA_PATTERN to “RANDOM_DATA” and can set the seed value on USER_C_AXI_TDATA_VALUE GUI parameter.
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 transfer. In a first 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 irrespective of TLAST value.
  • The user can select the hammer data pattern by setting the tdata_pattern csv field to hammer in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to HAMMER_DATA in case of pre_defined_pattern_test.
  • For example, if AXI Data Width= 128, pkt_cnt=2 and pkt_len=0x4, stream transfers are generated as below:

    header_width = data_width_bits/4 = 128/4 = 32

    tail_width = (data_width_bits*3)/4 = (128*3)/4 = 96

    In a first stream packet, the value of 1st stream transfer is calculated as header bits of 32{{1’b1}} and tail bits of 96{{1’b0}}. From 2nd transfer onwards, the previous tdata values are inverted on each transfer irrespective of TLAST value.

    TDATA = 0x0000_0000_0000_0000_FFFF_FFFF, TLAST = 0

    TDATA = 0xFFFF _FFFF_FFFF _ FFFF _0000_0000, TLAST = 0

    TDATA = 0x0000_0000_0000_0000_ FFFF _FFFF, TLAST = 0

    TDATA = 0xFFFF _FFFF_FFFF _ FFFF _0000_0000, TLAST = 0

    TDATA = 0x000_0000_0000_0000_ FFFF _FFFF, TLAST = 1

    TDATA = 0xFFFF _FFFF_FFFF _ FFFF _0000_0000, TLAST = 0

    TDATA = 0x000_0000_0000_0000_ FFFF _FFFF, TLAST = 0

    TDATA = 0xFFFF _FFFF_FFFF _ FFFF _0000_0000, TLAST = 0

    TDATA = 0x000_0000_0000_0000_ FFFF _FFFF, TLAST = 0

    TDATA = 0xFFFF _FFFF_FFFF _ FFFF _0000_0000, 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 the tdata_pattern csv field to byte_incr in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to BYTE_INCR_DATA in case of pre_defined_pattern_test.
  • For example, if AXI Data Width= 128, pkt_cnt=2 and pkt_len=0x2, 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 the tdata_pattern csv field to 16byte_incr in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to 16BYTE_INCR_DATA in case of pre_defined_pattern_test.
  • Example1, if AXI Data Width= 128, pkt_cnt=2 and pkt_len=0x3, stream transfers will be 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 USER_C_AXI_DATA_WIDTH= 256, pkt_cnt=2 and pkt_len=0x3, stream transfers will be 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

WALKING_0 DATA
  • Any one bit on stream transfer has the value as 0 and rest all bits have the value as 1. The value 0 will walk through (that is, circularly left shifted by 1 position) bit wise in each transfer. The LSbit of first stream transfer on first stream packet has the value as 0. From the second transfer onwards, previous stream transfer is circularly left shifted irrespective of TLAST value.
  • The user can select the walking_0 data pattern by setting the “tdata_pattern” csv field to “walking_0” in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to “WALKING_0_DATA” in case of pre_defined_pattern_test.
  • For example, if AXI Data Width= 32, pkt_cnt=9 and pkt_len=0x3, stream transfers are generated as below:

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_1110, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_1101, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_1011, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_0111, TLAST = 1

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1110_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1101_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1011_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_0111_1111, TLAST = 1

    TDATA = 32‘b1111_1111_1111_1111_1111_1110_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1101_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1011_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_0111_1111_1111, TLAST = 1

    TDATA = 32‘b1111_1111_1111_1111_1110_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1101_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1011_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_0111_1111_1111_1111, TLAST = 1

    TDATA = 32‘b1111_1111_1111_1110_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1101_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1011_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1111_0111_1111_1111_1111_1111, TLAST = 1

    TDATA = 32‘b1111_1111_1110_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1101_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_1011_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1111_0111_1111_1111_1111_1111_1111, TLAST = 1

    TDATA = 32‘b1111_1110_1111_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1101_1111_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_1011_1111_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1111_0111_1111_1111_1111_1111_1111_1111, TLAST = 1

    TDATA = 32‘b1110_1111_1111_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1101_1111_1111_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b1011_1111_1111_1111_1111_1111_1111_1111, TLAST = 0

    TDATA = 32‘b0111_1111_1111_1111_1111_1111_1111_1111, TLAST = 1

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_1110, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_1101, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_1011, TLAST = 0

    TDATA = 32‘b1111_1111_1111_1111_1111_1111_1111_0111, TLAST = 1

WALKING_1 DATA
  • Any one bit on stream transfer has the value as 1 and rest all bits have the value as 0. The value 1 walks through (that is, circularly left shifted by 1 position) bit wise, in each transfer. The LSbit of first stream transfer on first stream packet has the value as 1. From the second transfer onwards, previous stream transfer is circularly left shifted irrespective of TLAST value.
  • The user can select the walking_1 data pattern by setting the tdata_pattern csv field to walking_1 in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to WALKING_1_DATA in case of pre_defined_pattern_test.
  • For example, if USER_C_AXI_DATA_WIDTH= 32, pkt_cnt=9 and pkt_len=0x3, stream transfers are generated as below:

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_0001, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_0010, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_0100, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_1000, TLAST = 1

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0001_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0010_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0100_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_1000_0000, TLAST = 1

    TDATA = 32‘b0000_0000_0000_0000_0000_0001_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0010_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0100_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_1000_0000_0000, TLAST = 1

    TDATA = 32‘b0000_0000_0000_0000_0001_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0010_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0100_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_1000_0000_0000_0000, TLAST = 1

    TDATA = 32‘b0000_0000_0000_0001_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0010_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0100_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0000_1000_0000_0000_0000_0000, TLAST = 1

    TDATA = 32‘b0000_0000_0001_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0010_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_0100_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0000_1000_0000_0000_0000_0000_0000, TLAST = 1

    TDATA = 32‘b0000_0001_0000_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0010_0000_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_0100_0000_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0000_1000_0000_0000_0000_0000_0000_0000, TLAST = 1

    TDATA = 32‘b0001_0000_0000_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0010_0000_0000_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b0100_0000_0000_0000_0000_0000_0000_0000, TLAST = 0

    TDATA = 32‘b1000_0000_0000_0000_0000_0000_0000_0000, TLAST = 1

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_0001, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_0010, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_0100, TLAST = 0

    TDATA = 32‘b0000_0000_0000_0000_0000_0000_0000_1000, TLAST = 1

SAME_AS_SRC DATA
  • The TG source ID value is sent as data on all stream transfers.
  • The user can select the same_as_src data pattern by setting the tdata_pattern csv field to same_as_src in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to SRC_ID_AS_DATA in case of pre_defined_pattern_test.
  • For example, if TG Source ID value= 18 and AXI Data Width= 32, all the stream transfer values of the given instruction are sent as 0x0000_0012.
SAME_AS_ID DATA
  • The corresponding stream packet ID value (TID) is sent as data on all stream transfers.
  • The user can select the same_as_id data pattern by setting the tdata_pattern csv field to same_as_id in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to “PKT_ID_AS_DATA” in case of pre_defined_pattern_test.
  • For example, if Stream Packet ID(TID)= 0x1E and AXI Data Width= 32, all the stream transfer values of the given instruction are sent as 0x0000_001E.
SAME_AS_LEN DATA
  • The corresponding stream packet length value is sent as data on all stream transfers.
  • The user can select the same_as_len data pattern by setting the tdata_pattern csv field to same_as_len, in case of user_defined_pattern_test and by setting GUI parameter USER_C_AXI_TDATA_PATTERN to PKT_LEN_AS_DATA in case of pre_defined_pattern_test.
  • For example, if Stream Packet Length set as 0xFFFF and AXI Data Width= 32, all the stream transfer values of the given instruction are sent as 0x0000_FFFF.