QSYS amm interconnect delay with EMIF (Arria 10)
Hello community,
Using Terasic HAN Pilot Plateform (Arria 10), I recently found interesting behavior when using qsys or not for read/write operations to DDR4 external memory through EMIF.
Basically I have my 2 components : the Intel EMIF IP configured for DDR4, and my custom avalon memory mapped controller which is addressing read/writes to EMIF.
When I have a simple top level design with these 2 modules connected, the read and writes (during a burst) works fine and there is no waitrequest. I can basically reach the theoretical datarate during the burst which is here : 266 MHz x 256 bits (on fpga logic side) which corresponds to 2133MT/s x 32 bits, meaning 66Gbps.
I now did the same thing by using plateform designer qsys : I add these to modules, connect them and export necessary in/outs. I instantiate the qsys module in my top level design, make connections... and in this case I have a datarate 8x slower than previously ! Actually there is a waitrequest_n (also called ready by EMIF amm interface) which is high for 8 clock cycles at each read/write within a burst. So to perform a burst of 16 writes, this doesn't take 16 clock cycles, but 144 clock cycles !
Why would the delay occur when I connect my modules through qsys instead of directly in my top level ? I see that qsys module introduces amm_interconnect bridges, I suppose this might be related, but cannot understand why it gives such delay, especially I don't have anything else connected so there cannot be arbitration delay.
I would be glad to have your thoughts about this !
Thanks