This is a fyi follow-up on what I posted above about using the Avalon-MM Master Translator to export a PCIe BAR from Qsys. I exported two BARs (so far): One is non-bursting and is used for FPGA register accesses. The second supports bursting and is used for DMAs between FPGA memory and host memory. The non-bursting BAR worked fine with the Master Translator, and the bursting BAR worked fine with a burstcount of 1. But when trying to do bursts > 1 the burstcount coming out of the Master Translator was always 0, which is not a legal value. After going through local Altera support it was recommended that we use the Avalon-MM Pipeline Bridge to export the BARs instead of the Master Translator. In fact Altera said this:
"Customers are not really encouraged to use the Avalon-MM Master Translator component, that's an internal Qsys fabric component that the fabric generators build into the generated interconnect. Customers should generally avoid anything in the Qsys Interconnect group unless they really know what they're doing. That's why these things aren't documented, they aren't expected to be generally used."
Today I replaced the Master Translators with Pipeline Bridges and our bursting BAR is now working great.
I also learned from Altera that Qsys Pro (in Quartus Prime Pro) allows PCIe BARs to be exported directly. From Altera:
"If you’re using Qsys Pro, you can instantiate the IP core without a system and manipulate the system-info parameters which control the interfaces in the “exported interfaces” tab. In the case of the PCIE you’d want to set the max slave data width parameter which will feed into the PCIE’s AVMM interfaces. In the end you’d end up with a single .ip file configured as you want it.
In Qsys standard, you’re stuck with the pipeline bridge and setting up a system to configure them to work as expected."
Just wanted to pass this information along.