4.1.1. Application Request Interface
The data path request interface, or application request interface, provides a 512-bit data bus and dedicated signals for the application to provide HMC request packet field values to the HMC Controller IP core. The interface supports Write requests with payload sizes up to 128 bytes. The maximum payload size limits the interface to data bursts of 2 or fewer core_clk clock cycles. Write requests and read responses with a payload size that is not a multiple of the bus size carry the end of the payload in the lower order bits of the data bus in the final clock cycle.
Your IP core can have one, two, three, or four data path request interfaces. The interfaces are numbered and if you turn off the Response re-ordering parameter, each is restricted to a set range of tags. If you violate this restriction, the results are undefined.
The application must provide the following routing and control information for every request it sends on the TX data path interface:
- A well-formed HMC destination address.
- A unique 9-bit in-flight tag (if you turn off Response re-ordering). This requirement does not apply to posted transaction requests. In the case of multiple ports, each port is assigned a range of tags for its exclusive use. The application can reuse a tag only after the previous transaction with that tag is completely resolved.
- A correct 3-bit cube ID.
In addition, the application must ensure that it sends a request only when it is able to receive the response to the request as soon as that response arrives.
The client acts as a source and the HMC Controller acts as a sink in the transmit direction. N is the number of ports you specify with the Ports parameter.
Signal Name |
Direction |
Description |
---|---|---|
dp<n>_req_ready | Output |
When the HMC Controller IP core asserts this signal, the IP core is ready to receive data. The HMC Controller IP core accepts data when both dp<n>_req_ready and dp<n>_req_valid are asserted in the same cycle. The IP core deasserts this signal to back-pressure the application when it cannot currently process any incoming requests. The IP core does not deassert this signal between the cycles of a multi-cycle write data transfer. |
dp<n>_req_valid | Input |
Indicates that the transaction is valid—all input signals have valid values. The HMC Controller IP core accepts data on the rising edge of core_clk when both dp<n>_req_ready and dp<n>_req_valid are asserted. The application must maintain this signal asserted during a multi-cycle write data transfer. The application can send back-to-back requests by maintaining the dp<n>_req_valid signal asserted.
Note: For requests that require a response, the application must update the value it drives on dp<n>_req_tag for the new request. If the application continues to drive the old values on the input signals, that new request has the same tag as the previous request.
|
dp<n>_req_tag[8:0] | Input |
The user-generated tag associated with this request. The corresponding response returns with the identical tag. This signal is not available if you turn on Response re-ordering. In that case the IP core manages tags internally. The value of this signal is a Don't Care for posted transaction requests. Because these requests have no corresponding response that must be identified, they do not require meaningful tag values. You must ensure every tag in use at any given time by a non-posted transaction is unique. After a response returns, the tag is available for re-use.
If your IP core has multiple ports, each port is restricted to a specific range of tags:
The application must maintain the value on this signal during a multi-cycle write data transfer. |
dp<n>_req_cmd[5:0] | Input |
Indicates the packet command associated with this request. Refer to Table 17 in the HMC Specification v1.1 for the command encodings. The application must maintain the value on this signal during a multi-cycle write data transfer. |
dp<n>_req_cube[2:0] | Input |
The CUB ID of the cube to which the request is directed. The application must maintain the value on this signal during a multi-cycle write data transfer. |
dp<n>_req_addr[33:0] | Input |
Target address in the external HMC device. Current HMC devices ignore the four least significant bits of the address (and assumes they have the value of 4'b0000) in all requests the HMC Controller IP core generates, except for the BIT WRITE request. The application must maintain the value on this signal during a multi-cycle write data transfer. |
dp<n>_req_data[511:0] | Input |
Write data. The application must transfer the least significant bytes of the write payload in the first cycle. If the size of the payload is not an integer multiple of the data bus width, then in the final data transfer cycle, the application must transfer the remaining write payload in the least significant bytes of dp<n>_req_data or dp_req_data. For example, the application must:
During a read request, the value on this data bus does not matter. |
dp<n>_req_sop | Input | Start of packet. The application must assert this signal in the first cycle of all transactions. |
dp<n>_req_eop | Input | End of packet. The application must assert this signal in the final cycle of all transactions. |