02-10-2015 10:50 AM
I have a working design of a K70T FPGA that has been in production for several months and recently we received a new PC with i3770K CPU for this product line. Something very strange occurs during the boot sequence. For some reason it hangs in BIOS splash screen and will not load the OS (Win7).
The PCIe card has the following BARs defined:
BAR0 Memory, 2KB
BAR1 Memory, 512B
BAR2 IO, 64B
BAR3 Memory, 1MB
After some playing around I have determined that if I define BAR2 as memory space, or if I change the Class Code 0x06 (Bridge) Subclass 0x80 (Other) to Class code 0xFF (Unknown) Subclass 0x00 while BAR 2 is IO space it will allow the OS to load normally.
I am checking with the motherboard vendor to see if they can shed some light on this.
I have checked FPGA startup time, PCIe Linkup timing all that looks OK.
I know that the PCI-SIG is discouraging use of IO space, but we need to use IO space for legacy serial ports.
Has anyone seen something like this before?
02-10-2015 10:57 AM
Can't offer much help, other than to note that we saw similar issues over 6 years ago.
Our FPGA endpoint device requested some IO BAR space. It wouldn't work reliably with a certain root complex.
Debugging took significant time. Turned out the root complex didn't handle PCIE IO space operations fully to spec. It seems this is not unusual. I think IO space is not only "discouraged", but deprecated.
We changed both our hardware design, and software drivers to use Memory space instead.
I know, problaby NOT what you wanted to hear.