Forum Discussion
Dexter22
New Contributor
1 hour agoAgilex 7 R-Tile PIPE Direct endpoint receives Set_Slot_Power_Limit, but no Config TLPs
Hello,
I am developing a custom PCIe endpoint using the Agilex 7 R-Tile PIPE Direct interface. The PHY is provided by the R-Tile IP, while the LTSSM, Data Link Layer, and TLP/DLLP handling are implemented in soft RTL.
Environment
- FPGA: Agilex 7 AGIB027R29A
- Quartus Prime Pro 24.3.0 Build 212
- R-Tile PIPE Direct mode
- PCIe Gen3 x8
- Custom soft LTSSM and Data Link Layer
- Linux host with a commercial PC/root complex
- The FPGA is configured before a host cold boot
- The endpoint is not currently visible in lspci
In a successful Signal Tap capture:
- The LTSSM reaches Gen3 L0.
- The Data Link Layer reaches DL_ACTIVE.
- InitFC1 and InitFC2 for Posted, Non-Posted, and Completion traffic are exchanged.
- We observe valid incoming TLP traffic with a correct LCRC.
- The host sends a Message TLP that appears to decode as Set_Slot_Power_Limit.
- No subsequent Configuration Type 0 Read TLP or other expected enumeration TLP is observed.
- The link later returns from L0 to Recovery.RcvrLock.
Our understanding is that Set_Slot_Power_Limit is a posted Message TLP and should not require a Completion TLP from the endpoint. The endpoint should only acknowledge successful reception at the Data Link Layer. Please correct us if this interpretation is wrong.
Questions
- Is receiving Set_Slot_Power_Limit before the first Configuration Read a normal root-port enumeration sequence?
- Does the endpoint need to respond to this Message TLP in any way other than sending a Data Link Layer ACK?
- If the ACK DLLP has an incorrect sequence number, CRC, or timing, could the root port stop sending further TLPs and eventually force the link into Recovery?
- Are there any R-Tile PIPE Direct-specific status or control signals that must be handled before the host starts Configuration transactions?
- Are there recommended R-Tile debug signals for determining why the root port stops after this message?
- Could an incorrect Flow Control advertisement—especially Completion Header/Data credits—cause this behavior even if InitFC2 completes?
- Are there known PERST#, cold-boot, or FPGA-configuration timing requirements for enumeration when using PIPE Direct mode?
We are currently capturing the following signals:
- LTSSM state
- Data Link Layer state
- InitFC1/InitFC2 and UpdateFC status
- Received TLP Fmt/Type and complete header
- Received TLP sequence number
- LCRC result
- ACK/NAK request and transmitted ACK/NAK sequence number
- Replay timer/replay status
- RX block lock, CDR lock, and lane numbers
- Raw 1024-bit PIPE RX block data
Any guidance on the expected transaction sequence after Set_Slot_Power_Limit, or additional signals that should be captured, would be greatly appreciated.
Thank you.
No RepliesBe the first to reply