Visible to Intel only — GUID: iqj1506356226929
Ixiasoft
Visible to Intel only — GUID: iqj1506356226929
Ixiasoft
1.6. Device Feature List
This section defines a Device Feature List (DFL) structure that creates a linked list of features within MMIO space, thus providing an extensible way of adding and enumerating features. A feature region (sometimes referred to as a “feature”) is a group of related CSRs. For example, two different features of a DMA engine can be queue management and QoS functions. You can group queue management and QoS functions into two different feature regions. A Device Feature Header (DFH) register marks the start of the feature region.
The software can walk through the DFL to enumerate the following:
- AFU
- An AFU is compliant to the CCI-P interface and connected directly to the CCI-P Port. Must implement mandatory AFU registers, including AFU ID.
- The AFU DFH must be located at MMIO address 0x0.
- Private features
- These are a linked list of features within the AFU, which provides a way of organizing functions within an AFU. It is the AFU developer’s responsibility to enumerate and manage them.
- They are not required to implement a ID.
- Intel® FPGA Basic Building Blocks
- Are special features within the AFU, which are meant to be reusable building blocks (design once, reuse many times). Software visible Intel® FPGA Basic Building Blocks typically come with a corresponding software service to enumerate and configure the Intel® FPGA Basic Building Blocks, and possibly provide a higher-level software interface to the Intel® FPGA Basic Building Blocks.
- Do not have strong hardware interface requirements like an AFU, but must have well defined architectural semantics from a software point of view.
- Must implement the mandatory DFH registers when visible.
- Must implement a GUID only for software-visible Intel® FPGA Basic Building Blocks.
The following figure shows an example of an AFU’s feature hierarchy made up of BBBs and private features.
Device Feature Header | |||
---|---|---|---|
Bit | Description | ||
63:60 | Feature Type | ||
4’h1 – AFU | 4’h2 – BBB | 4’h3 – Private Features | |
59:52 | Reserved | ||
51:48 | AFU Minor version number User defined value |
Reserved | |
47:41 | Reserved | ||
40 | End of List 1’b0 There is another feature header beyond this (see “Next DFH Byte Offset”) 1’b1 This is the last feature header for this AFU |
||
39:16 | Next DFH Byte offset Next DFH Address = Current DFH Address + Next DFH Byte offset Also used as indication for the maximum size of MMIO region occupied by this feature. For last feature, this offset points to the beginning of the unallocated MMIO region, if any (or beyond the end of the MMIO space). Refer to the example in Table 45. |
||
15:12 | AFU Major VersionNumber User defined |
Feature Revision Number User defined |
|
11:0 | CCI-P Version Number Use the CCIP_VERSION_NUMBER parameter from ccip_if_pkg.sv |
Feature ID Contains user defined ID to identify features within an AFU |
Feature | DFH Address | EOL | Next DFH Byte Offset |
---|---|---|---|
0 | 0x0 | 0x0 | 0x100 |
1 | 0x100 | 0x0 | 0x180 |
2-Last Feature | 0x280 | 0x1 | 0x80 |
Unallocated MMIO space, no DFH | 0x300 | N/A | N/A |
A DFH with the type set to BBB must be followed by the mandatory BBB registers listed below.
Byte Address offset within DFH | Register Name |
---|---|
0x0000 | DFH Type=BBB |
0x0008 | BBB_ID_L |
0x0010 | BBB_ID_H |
Register Name | BB_ID_L | ||
---|---|---|---|
Bit | Attribute | Description | |
63:0 | RO | Lower 64-bits of the BBB_ID ID |
Register Name | BB_ID_H | ||
---|---|---|---|
Bit | Attribute | Description | |
63:0 | RO | Upper 64-bits of the BBB_ID ID |
The BBB_ID is an GUID, similar in concept to an AFU_ID. It is defined so that each BBB has a unique identifier. This allows the software to identify the software service associated with the BBB hardware.
The figure below shows how a logical feature hierarchy (shown on left-hand side) can be expressed using DFH registers defined in this section.