Hi,
I am getting error 61056, "component (one of my FIFOs) has invalid arbitration for single-cycle timed loops." All of my FIFO accessors are in single-cycle timed loops (SCTL), and all of them have the arbitration set to "optimize for single." (I have tried setting them to "none" and "normal," but the error persists). Removing certain SCTLs (or the FIFO accessors) is the only way I can avoid the error.
It is quite possible that I am trying to do too much in a single cycle with some of the SCTLs, and I may need to pipeline, but I don't think that's causing this error. I also have multiple identical accessors (the same FIFO being read in different places, or written in different places), but there should not be the possibility for race conditions or contention. I'm fairly confident that I've avoided these conflicts with case and sequence structures.
On a somewhat related note, I noticed what seems to be an undocumented limitation when using digital IO accessors within SCTLs. It appears that if multiple digital IO accessors to the same resource are used, then either they must all be inside SCTLs or they must all be outside SCTLs. You cannot, for example, write to a digital data node for conn0/dio0 in a SCTL and then later write to another digital data node for conn0/dio0 outside of a SCTL. If both nodes are inside separate SCTLs, however, everything seems to work just fine.
Is this behavior expected?
Are there similar limitations for FIFOs to those I've noticed for DIOs?
Is there something obvious that I'm missing?
Does reading or writing a FIFO take almost a full tick?
How does the time it takes to access a FIFO depend on the storage type used?
Does the use of FIFOs limit the possibility for increasing the FPGA clock speed?
Thanks for reading; any pointers would be appreciated.
~derek