Hi, Andrew,

On Feb 13, 2013, at 11:27 PM, Andrew Martens wrote:

> Hi Dave
> 
>> It would be good to add an optional "Latency" parameter to the Shared BRAM 
>> block
> 
> This is on a (rather long) list of library upgrades we are keen on here
> in SA.

I just looked into this and discovered that the "bram_block" pcore is a Xilinx 
provided one and surprisingly it seems NOT to support the optional output 
registers or, equivalently, latency!  I think to provide a latency feature (to 
take advantage of the BRAM's optional output registers) we will need to create 
our own variant of this pcore.

>  Other BRAM related things are;
> * distributed RAM implementation option (for small, 32 bit BRAMs)
> * configurable initial values

These would be nice to have, but IMHO not so critical as fixing this timing 
albatross.

> Not sure when we will get to them and would love it if others could help
> out.

Same here! :-)

> 
>> I think we should also be recommending that regular (i.e. non-yellow) BRAM 
>> blocks be set to a latency of 2 at a minimum.  Maybe we are already?
> 
>> This also seems like an issue for ROACH as well (though the smaller chip 
>> seems faster to cross so maybe not so important as on ROACH2?).
> 
> The majority of timing problems I have run across in ROACH are BRAM to
> multiplier paths. BRAM followed by logic often seems ok. Maybe a
> separate 'BRAM to multiplier latency' parameter with a default of 2?
> Would that be worth the effort? Probably not but worth looking at.

I think just setting the latency to 2 (or more) on the relevant Xilinx BRAM 
blocks would help.  I'm not sure where a separate "BRAM to multiplier latency" 
parameter would be used/applicable.

Dave


Reply via email to