by support »
Hi,
In retrospective, it makes sense: A large array should be implemented as a block RAM and not in distributed RAM, or you get a lot of logic, which in turn tangles the wiring, and ends up with poor timing. Not good enough for 250 MHz, that is.
The question is why the synthesizer chose to put a distributed RAM there in the first place. This should have been the default for an array of that size.
I suggest getting acquainted with timing closure techniques, and in particular learn to read the timing reports that detail the critical timing paths. These reports often give a hint on what needs to be fixed (but are unfortunately somewhat misleading sometimes).
So all I can say is welcome aboard to the world of FPGA, with all its peculiarities. It's a prestigious field for good reasons.
Regards,
Eli
Hi,
In retrospective, it makes sense: A large array should be implemented as a block RAM and not in distributed RAM, or you get a lot of logic, which in turn tangles the wiring, and ends up with poor timing. Not good enough for 250 MHz, that is.
The question is why the synthesizer chose to put a distributed RAM there in the first place. This should have been the default for an array of that size.
I suggest getting acquainted with timing closure techniques, and in particular learn to read the timing reports that detail the critical timing paths. These reports often give a hint on what needs to be fixed (but are unfortunately somewhat misleading sometimes).
So all I can say is welcome aboard to the world of FPGA, with all its peculiarities. It's a prestigious field for good reasons. :)
Regards,
Eli