Host Profile - 3.0 English

Versal ACAP CPM DMA and Bridge Mode for PCI Express Product Guide (PG347)

Document ID
PG347
Release Date
2022-06-15
Version
3.0 English

Host profile must be programmed to represent Root Port host. Host profile can be programmed through indirect Context programming. Select QDMA_CTXT_SELC_HOST_PROFILE (4'hA) in QDMA_IND_CTXT_CMD. Host profile context structure is given in below table.

Table 1. Host Profile Context Structure
Bit Bit Width Field Name Description
[255:188] 68 Reserved Reserved
[187:186] 2   H2C AXI4-MM write awprot
[185:182] 4   H2C AXI4-MM write awcache
[181:178] 4   H2C AXI4-MM Steering
[177:104] 74 Reserved Reserved
[103:102] 2   C2H AXI4-MM read arprot
[101:98] 4   C2H AXI4-MM read awcache
[97:94]] 4   C2H AXI4-MM Steering
[0:93] 94 Reserved Reserved

Host Profile Context needs to be programed for any QDMA AXI4-MM transfers. And it needs to be programmed before any Queue context programming. This effects only AX4-MM DMA transfers not Streaming transfers.

Steering values should be set based on the address space location in Versal design. Steering Table below shows values that need to be set and its corresponding Versal location.

Table 2. CPM5 QDMA Steering
Steering values Description
4'b0000 NoC Channel 0 (CPM PCIE NoC 0)
4'b0001 NoC channel 1 (CPM PCIE NoC 1)
4'b0010 Coherent PS Channel 0 (CCI PS AXI0)
4'b0100 AXI4-MM PL channel 0 (PL AXI 0) Applicable for only QDMA1
4'b0101 AXI4-MM PL channel 1 (PL AXI 1) Applicable for only QDMA1
All other values are reserved NA

There are some restrictions based on the QDMA selection. For more information, see Controller Steering Options table in Master Bridge section.

Illustration of how a host profile can be programmed and how some queues can be directed to a specific location.

For this Example QDMA0 is used and targets Queues from 0 to 9 to "NoC channel 0" and for Queues from 10 to 19 to "NoC Channle1". Two Host ID's are need to be setup this transfer. One for Queues from 0 to 9 and second for Queues from 10 to 19

  1. Host ID 0 for Queues 0 to 9.
    • Context DATA Register, program register 0x804 to 0x820 based on the Host Profile table above
      • H2C AXI4-MM Steering and C2H AXI4-MM Steering set to 0x0 to target "NOC Channel0"
      • Set all other values in the table also 0's
    • Context CMP Register, program register 0x844
      • qid [19:7] : 0x0 (Host ID 0)
      • op [6:5] : 0x1 (WR)
      • sel [4:1] : 0xA (Host_PROFILE)
      • busy [0] : x
      write 0x34 to Context CMD register
  2. Host ID 1 for Queues 10 to 19.
    • Context DATA Register, program register 0x804 to 0x820 based on the Host Profile table above
      • H2C AXI4-MM Steering and C2H AXI4-MM Steering set to 0x1 to target "NOC Channel1"
      • Set all other values in the table also 0's
    • Context CMP Register, program register 0x844
      • qid [19:7] : 0x1 (Host ID 1)
      • op [6:5] : 0x1 (WR)
      • sel [4:1] : 0xA (HOST_PROFILE)
      • busy [0] : x
      write 0xB4 to Context CMD register
  3. This sets up two Host ID, 0 and 1.
  4. Use Host ID 0 for setting up Queues 0 to 9. Write 0 in host_id field in context programming.
  5. Use Host ID 1 for setting up Queues 10 to 19. Write 1 in host_id field in context programming.