Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20640 Discussions

CycloneIV GX: How do I implement registers in configuration space, or multiple PCI functions?

SRichter
Beginner
1,377 Views

For a customer's test environment I need to emulate a number of PCIe devices so that error states can be simulated easily. The tests shall run inside a virtual machine that receives a PCIe device as a passthrough.

 

I have a CycloneIV GX board lying around and would like to use that for the initial implementation, but I'm open to switching to another family if needed (although I'd need to commission a board then).

 

I can make a single PCIe device with a 64-bit MMIO mapping appear in the system, this works so far.

 

Now I'd like to split my device into two functions, one for test control/status readback, and one for the device that is going to be passed through to the VM, but I haven't found an option to define multiple functions in MegaWizard. Is this possible?

 

In addition, the emulated device has extra registers in configuration space, above 0x40. I haven't been able to see configuration space accesses on the Avalon-ST interface, can this be enabled?

0 Kudos
2 Replies
SengKok_L_Intel
Moderator
455 Views

Hi,

I don't aware cyclone IV support multifunction. However if you are using Cyclone V, you may refer to this link:

https://fpgawiki.intel.com/wiki/Cyclone_V_PCIe_Avalon-MM_Multifunction

 

Regards -SK ​

0 Kudos
SRichter
Beginner
455 Views

This "configuration bypass" mechanism sounds like exactly what I need, for both multi-function and configuration space registers. I'll check if that works on CycloneIV as well or if I have to upgrade, thanks a lot!

0 Kudos
Reply