Error (276003): Cannot convert all sets of registers into RAM megafunctions when creating nodes.
Error (276003): Cannot convert all sets of registers into RAM megafunctions when creating nodes. The resulting number of registers remaining in design exceeds the number of registers in the device or the number specified by the assignment max_number_of_registers_from_uninferred_rams. This can cause longer compilation time or result in insufficient memory to complete Analysis and Synthesis
I started doing some overhaul on the logic in my project today and I got this error. I've made too many changes to incrementally back-step to see what caused this.
How can I identify what the offending code, logic or register usage actually is?
I can't see what my total register usage is yet. I'm using my trusty Cyclone IV EP4CE6 FPGA. I know I have been close to exhausting resources on this device for a while. I have the below array which has usually been a problem, but even when I reduce the size right down it isn't making any difference so it must be something else.
bit[2:0] frameBuffer[49920];
I have been trying to work through resolving all of my truncation warnings etc today but still no joy.
I did however see this in the log:
Info (276014): Found 1 instances of uninferred RAM logic Info (276007): RAM logic "frameBuffer" is uninferred due to asynchronous read logic
What does this mean? I am only reading frameBuffer in one place as far as I can tell:
bit[16:0] frameBufferReadIndex; bit [3:0] frameBufferByte; bit vgaReading; assign frameBufferByte = vgaReading ? frameBuffer[ frameBufferReadIndex ] : 4'h0;
Ignore the 'byte' reference - I have been making the 'byte' smaller and smaller since I began running out of resources.
Internal FPGA block RAM is synchronous, using a clock. If your code doesn't register at least frameBufferReadIndex, it can't infer RAM. Best to follow RAM code template in Quartus.
For maximum memory size, you also need to look at RAM block organization. RAM capacity of EP4CE6 is 30k x 9bit, thus you can't implement more than 30k 4-bit array elements.