On Feb 13, 2013, at 10:42 PM, David MacMahon wrote:

> Unfortunately, the CASPER "Shared BRAM" block does not have a latency setting 
> (defaults to 1?) so the tools do not end up using the underlying BRAM's 
> optional output register (even if there is a register on the Shared BRAM's 
> output that could, in theory, be absorbed into the underlying BRAM).

I just built (using version 13.3 of the Xilinx tools) a test model that had a 
Xilinx SysGen BRAM block with Latency set to 1 and whose dout port was 
connected to a register block.  After building the design and running a verbose 
timing report, I can see that the register was not "absorbed" (i.e. mapped) 
into the BRAM block.  In fact, despite numerous attempts with various map 
options and manually resynthesizing things, I could never get a register on 
dout to be absorbed into a BRAM.

The only way I could get the optional output register to be used was by setting 
the latency to 2 on the Xilinx BRAM block.  That will help timing with Xilinx 
BRAM blocks, but it won't help at all with CASPER Shared BRAM blocks.  I think 
the CASPER Shared BRAM blocks are woefully slow due to this.

Dave


Reply via email to