Data patterns for AXI3/AXI4 - 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 AXI3/AXI4.

Table 1. Data Patterns for the Non-Synthesizable TG
Data Format Options
Constant
  • The user-defined data beat value is constantly sent on all Write data beats.
  • In the case of user_defined_pattern_test, you can select the constant data pattern by setting the wdata_pattern CSV field to constant and setting the data value of the wdata_pat_value field.
  • In the case of pre_defined_pattern_test, you can select the constant data pattern by setting the Write Data Pattern Type GUI option to CONSTANT_DATA and setting the data value on the Write Data Pattern Value GUI option.
  • For example, if Write Data Pattern Value = 0xA5A6_A7A8_B5B6_B7B8, AXI Data Width = 64, and assuming it is full transfer, all the values of the given instruction will be sent as 0xA5A6_A7A8_B5B6_B7B8.
Random
  • The random data is sent on each Write data beat. The default seed value of 0 is used to generate random data.
  • In the case of user_defined_pattern_test, you can select the random data pattern by setting the wdata_pattern CSV field to random and setting the seed value on the wdata_pat_value field.
  • In the case of pre_defined_pattern_test, you can select the random data pattern by setting the Write Data Pattern Type GUI option to RANDOM_DATA. The default seed value of 0 is used to generate random data.
WALKING_0
  • Any one bit on the data beat has a value of 0 and the rest have a value of 1. The value 0 walks through (left in a circular fashion shifted by 1) bitwise in each beat. The LSB of the first data beat on the first transaction has a value of 0. From the second beat onwards, the previous data beat is shifted left in a circular fashion.
  • You can select the walking_0 data pattern by setting the wdata_pattern CSV field to walking_0 in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to WALKING_0_DATA in the case of pre_defined_pattern_test.
  • For example, if axi_len = 8 and axi_size = 0, the walking_0 data is sent as follows (shown below the data for the valid byte lane):
    • Beat0 = 8‘b1111_1110
    • Beat1 = 8‘b1111_1101
    • Beat2 = 8‘b1111_1011
    • Beat3 = 8‘b1111_0111
    • Beat4 = 8‘b1110_1111
    • Beat5 = 8‘b1101_1111
    • Beat6 = 8‘b1011_1111
    • Beat7 = 8‘b0111_1111
    • Beat8 = 8‘b1111_1110
WALKING_1
  • Any one bit on the data beat has a value of 1 and the rest have a value of 0. The value 0 walks through (left in a circular fashion shifted by 1) bitwise in each beat. The LSB of the first data beat on the first transaction has a value of 1. From the second beat onwards, the previous data beat is shifted left in a circular fashion.
  • You can select the walking_1 data pattern by setting the wdata_pattern CSV field to walking_1 in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to WALKING_1_DATA in the case of pre_defined_pattern_test.
  • For example, if axi_len = 8 and axi_size = 0, the walking_1 data is sent as follows (shown below the data for the valid bytelane):
    • Beat0 = 8‘b0000_0001
    • Beat1 = 8‘b0000_0010
    • Beat2 = 8‘b0000_0100
    • Beat3 = 8‘b0000_1000
    • Beat4 = 8‘b0001_0000
    • Beat5 = 8‘b0010_0000
    • Beat6 = 8‘b0100_0000
    • Beat7 = 8‘b1000_0000
    • Beat8 = 8‘b0000_0001
Hammer
  • The hammer data has a long number of tail bits (MSBs) with a value of 0 or 1 and a short number of header bits (LSBs) with an inverted bit value in a data beat. The value of the tail bits (width of ¾ of axi_size_in_bits) and header bits (width of ¼ of axi_size_in_bits) is generated based on the corresponding AXI beat address. If the resulting value of beat_start_address divided by axi_size_in_bytes is even, the header bits are 1 and the tail bits are 0. If the resulting value is odd, the header bits are 0 and the tail bits are 1.
  • You can select the hammer data pattern by setting the wdata_pattern CSV field to hammer in the case of user_defined_pattern_test and by setting Write Data Pattern Type GUI option to HAMMER_DATA in the case of pre_defined_pattern_test.
Hammer (continued) For example, if AXI Data Width = 64, axi_addr = 0x0000_0000_A11A, axi_burst = INCR, axi_len = 3, and axi_size = 3, data beats are generated as follows:
  • header_width = axi_size_in_bits/4 = 64/4 = 16
  • tail_width = (axi_size_in_bits*3)/4 = (64*3)/4 = 48
  • Beat0 calculation:

    Aligned(beat_start_address)/axi_size_in_bytes= 0x0000_0000_A118/8 = 0x1423(odd value)

    So, header bits are 16{{1’b0}} and tail bits are 48{{1’b1}}.

    Beat0 = 0xFFFF_FFFF_FFFF_0000

  • Beat1 calculation:

    Aligned(beat_start_address)/axi_size_in_bytes= 0x0000_0000_A120/8 = 0x1424(even value)

    So, header bits are 16{{1’b1}} and tail bits are 48{{1’b0}}.

    Beat1 = 0x0000_0000_0000_FFFF

  • Beat2 calculation:

    Aligned(beat_start_address)/axi_size_in_bytes= 0x0000_0000_A128/8 = 0x1425(odd value)

    So, header bits are 16{{1’b0}} and tail bits are 48{{1’b1}}.

    Beat2 = 0xFFFF_FFFF_FFFF_0000

  • Beat3 calculation:

    aligned(beat_start_address)/axi_size_in_bytes= 0x0000_0000_1130/8 = 0x1426(even value)

    So, header bits are 16{{1’b1}} and tail bits are 48{{1’b0}}.

    Beat3 = 0x0000_0000_0000_FFFF

SAME_AS_SRC
  • The TG source ID value is sent as data on all Write data beats.
  • You can select the same_as_src data pattern by setting the wdata_pattern CSV field to same_as_src in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to SRC_ID_AS_DATA in the case of pre_defined_pattern_test.
SAME_AS_ADDR
  • The corresponding AXI beat byte address (LSB 8 bits) is sent as data in the bytes of the Write beat.
  • You can select the same_as_addr data pattern by setting the wdata_pattern CSV field to same_as_addr in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to ADDR_AS_DATA in the case of pre_defined_pattern_test.
  • For example, if AXI Data Width = 64, axi_addr = 0x0200_0000_11A0, axi_burst = INCR, axi_len = 3, and axi_size = 3, data beats are generated as follows:
    • Byte_Lane0 address on Beat0= 0x0200_0000_11A0 --> LSB 8 bits are A0 which are sent as Write data on byte_lane0 of beat0
    • Byte_Lane1 address on Beat0= 0x0200_0000_11A1 --> LSB 8 bits are A1 which are sent as Write data on byte_lane1 of beat0
    • Beat0 = 0xA7A6_A5A4_A3A2_A1A0
    • Beat1 = 0xAFAE_ADAC_ABAA_A9A8
    • Beat2 = 0xB7B6_B5B4_B3B2_B1B0
    • Beat3 = 0xBFBE_BDBC_BBBA_B9B8
SAME_AS_ADDR_XOR
  • The corresponding AXI beat byte address is bytewise folded, XORed, and sent as data in the bytes of the Write beat.
  • You can select the same_as_addr_xor data pattern by setting the wdata_pattern CSV field to same_as_addr_xor in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to ADDR_XOR_AS_DATA in the case of pre_defined_pattern_test .
  • For example, if AXI Data Width = 64, axi_addr = 0x0200_0000_11A0, axi_burst = INCR, axi_len = 3, and axi_size =3, data beats are generated as follows:
    • Byte_Lane0 address on Beat0= 0x0200_0000_11A0 --> 0x02^0x00^0x00^0x00^0x11^0xA0= 0x B3. It will be sent as Write data on byte_lane0 of beat0.
    • Byte_Lane1 address on Beat0= 0x0200_0000_11A1 --> 0x02^0x00^0x00^0x00^0x11^0xA1= 0x B2. It will be sent as Write data on byte_lane1 of beat0.
    • Beat0 = 0xB4B5_B6B7_B0B1_B2B3
    • Beat1 = 0xBCBD_BEBF_B8B9_BABB
    • Beat2 = 0xA4A5_A6A7_A0A1_A2A3
    • Beat3 = 0xACAD_AEAF_A8A9_AAAB
SAME_AS_ID
  • The corresponding AXI transaction ID value (AWID) is sent as data on all Write data beats.
  • You can select the same_as_id data pattern by setting the wdata_pattern CSV field to same_as_id in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to AXI_ID_AS_DATA in the case of pre_defined_pattern_test.
SAME_AS_BURST
  • The corresponding AXI transaction burst value (AWBURST) is sent as data on all Write data beats.
  • You can select the same_as_burst data pattern by setting the wdata_pattern CSV field to same_as_burst in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to AXI_BURST_AS_DATA in the case of pre_defined_pattern_test.
SAME_AS_LEN
  • The corresponding AXI transaction length value (AWLEN) is sent as data on all Write data beats.
  • You can select the same_as_len data pattern by setting the wdata_pattern CSV field to same_as_len in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to AXI_LEN_AS_DATA in the case of pre_defined_pattern_test.
SAME_AS_SIZE
  • The corresponding AXI transfer size value (AWSIZE) is sent as data on all Write data beats.
  • You can select the same_as_size data pattern by setting the wdata_pattern CSV field to same_as_size in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to AXI_SIZE_AS_DATA in the case of pre_defined_pattern_test.
SAME_AS_CACHE
  • The corresponding AXI transaction cache value (AWCACHE) is sent as data on all Write data beats.
  • You can select the same_as_cache data pattern by setting the wdata_pattern CSV field to same_as_cache in the case of user_defined_pattern_test and by setting the Write Data Pattern Type GUI option to AXI_CACHE_AS_DATA in the case of pre_defined_pattern_test.