Forum Discussion
Terasic P16E-FMCP PCIE Express 3.0 compatibility issues with AMD processors
Hi
I bought the Terasic P16E-FMCP to use on my Terasic Apollo S10 SOM board for PCI Express 3.0 implimentation. However after testing the included program, it did not work, so I emailed Terasic Support and they told me it was only tested on Intel CPU and it appears never tested on AMD. So they made me run a simple program called System Information Viewer from rh-software.com which tested the information sent and received from the PCI endpoint and it appears there are errors stimming back from the demo program does not natively run on AMD processors. So for the past 6 months, Terasic has been dragging there feet on this issue, telling me they will work on a solution but I must go out and purchase another computer by Intel, then run several versions of Quartus Pro, starting from 19.1, through 23.3, I must download them individually.
I told them I am not doing this, I am not being paid to test out your code, I simply purchased the board direct from you for $650, and NOWHERE on the website does it publish it works only with Intel CPU. Instead they are pointing the fingers at me saying I'm delayin a resolution on this issue by not testing out there code, I told them that IS YOUR JOB! I AM NOT EMPLOYED BY TERASIC!
Terasic is a partner program of Intel, they have all the means to reach out and contract a device driver writer and solve this incompatiblity issue. This is beyond my expertise. They simply won't do it.
Does anyone have a solution to this problem? Why are they passing the buck at me?
1 Reply
- ai_responder
Community Manager
That's a genuinely frustrating situation, and your core argument is sound — if AMD compatibility is a limitation of the demo software, that should be clearly disclosed at point of sale.
Let me give you some useful technical context from the documentation side.
**What the hardware side looks like**
The Apollo S10 SOM is built on the Stratix 10 SX FPGA. "Apollo S10 SoM" The PCIe Hard IP on that device implements a standard PCIe specification. At the hardware/silicon level, PCIe is a CPU-agnostic bus — the FPGA endpoint doesn't "know" whether the host CPU is AMD or Intel. The link trains, enumerates, and transfers data entirely based on the PCIe specification, not the CPU vendor.
**Where the AMD incompatibility actually lives**
The issue you're describing — errors in the demo program, System Information Viewer seeing endpoint responses — is almost certainly in Terasic's **host-side driver and/or BSP software**, not in the FPGA fabric or the PCIe Hard IP itself. Terasic-provided BSPs are adapted specifically for their boards FPGA AI Suite Design Examples User Guide , and the BSP provided by Terasic is OpenCL-based. Agilex® 7 FPGAs and SoCs Device Overview If that BSP or demo driver was written and tested only against Intel CPU platforms (e.g., specific IOMMU behavior, memory-mapped I/O assumptions, or DMA descriptor handling that differs between Intel and AMD chipsets), it will fail on AMD without code changes. That is a software portability problem Terasic owns.
**What you can verify on the FPGA side to rule out a hardware issue**
If you want to confirm the FPGA PCIe link itself is healthy (independent of the demo software), you can check the LTSSM state:
When link training completes successfully and the link is up, the LTSSM should remain stable in the L0 state. When link issues occur, you can monitor `ltssmstate[4:0]` to determine whether the link training fails before reaching L0, or whether the link is initially established (L0) but then stalls. Arria® V Hard IP for PCI Express* User Guide To check whether the PCIe HIP is actually receiving TLPs, you can observe the PIPE interface signals. Set trigger conditions: `test_out[24]` (rxvalid) = '1', `test_out[23]` (rxdatak) = '1', `test_out[22:15]` (rxdata) = 'fb' (K28.7, Start of TLP). If the trigger condition cannot be met, the endpoint is not sending TLPs to the PCIe HIP root port. How to determine if the PCIe HIP receives the TLP from the other side?
If your LTSSM reaches L0 and TLPs are flowing at the PIPE level, the FPGA hardware is working correctly — and the failure is definitively in the Terasic host software.
**Your position with Terasic**
You are right that you should not be doing their QA work. The practical path forward:
1. **Document that the FPGA link reaches L0** using SignalTap (this proves the hardware works and pins the bug squarely on their driver).
2. **Formally escalate in writing** that the product was sold without disclosing an AMD restriction, and that Terasic is responsible for driver compatibility under their standard support terms.
3. Altera (as the silicon vendor) does not directly control Terasic's BSP/driver software — that is Terasic's responsibility as a partner — but Altera's partner program does have escalation channels if Terasic is unresponsive to a valid support issue.
The FPGA PCIe Hard IP conforms to the PCIe specification and is not inherently AMD-incompatible. The fix Terasic needs to make is in their host driver, not in your hardware or your test setup.Note: To continue using AI Responder, please start your next inquiry with ai_responder
Disclaimer (Beta): The AI Responder is currently provided as a beta feature. AI-generated responses may contain errors or omissions. Please verify technical guidance with official Altera documentation before implementation.
Thank you very much.