Reply by Walter Dvorak March 15, 20082008-03-15
Mike Treseler <mike_treseler@comcast.net> wrote:
> If I worked for Xilinx I would write an > ap note in vhdl and verilog for a useful > application example that infers block ram from code, > and then reference that example in all related documents.
it's all (public) available: - XAPP463 ("Using BRAMs in Spartan-3 FPGA") applies also for virtex-2 and with some additions/modifications for the newer virtex parts. - In the xilinx "synthesis and simulation guide" chapter 4, page 152 pp, there are some (usefull) generic HDL code examples: How to implement a "generic BRAM" in VHDL and/or verilog. WD --
Reply by Symon March 12, 20082008-03-12
Peter Alfke wrote:
> On Mar 11, 7:19 am, "Symon" <symon_bre...@hotmail.com> wrote: >> Hi Paul, >> Yeah, if you look at your code, you're trying to do an asynchronous >> read. I suggest you try simulating your design and also a design >> where you instantiate a block ram. You'll be able to compare and see >> clearly what the block ram does. >> HTH., Syms. > > This is not the first time that someone has tried to read the BRAM > asynchronously. I have posted many times, and also inserted a sentence > into our documentation that "nothing happens without a clock". > Any ideas how we can spread this important (and non-obvious) > information even better and wider??? > Peter Alfke, Xilinx Applications
Hi Peter, When the synthesis software itself warns the user "The RAM <XYZ> will be implemented on LUTs because you have described an asynchronous read" and they still don't get it, I'm struggling to see what would be of further help? Cheers, Syms.
Reply by glen herrmannsfeldt March 11, 20082008-03-11
job@amontec.com wrote:

> On Mar 11, 4:48 pm, Peter Alfke <pe...@xilinx.com> wrote:
(snip)
>>Any ideas how we can spread this important (and non-obvious) >>information even better and wider???
> Just rename your component from BRAM to BSRAM ! Synchronous RAM !
Except that SRAM traditionally means Static RAM, so one might still not notice. How about BSyRAM? -- glen
Reply by glen herrmannsfeldt March 11, 20082008-03-11
donald wrote:
(snip)

> This is an FPGA is it not.
> Nothing in an FPGA happens without a clock.
Where does this come from? There is no reason one can't do designs that don't use any FF's in an FPGA, though there is a strong incentive to use them.
> Why would anyone think that BRAM would operate differently ??
Because that is the way traditional SRAMs work and people get used to using them that way. Also, most ROMs. -- glen
Reply by Paul Boven March 11, 20082008-03-11
Hi Peter, Symon, everyone,

Peter Alfke wrote:
> On Mar 11, 7:19 am, "Symon" <symon_bre...@hotmail.com> wrote: >> Hi Paul, >> Yeah, if you look at your code, you're trying to do an asynchronous read. I >> suggest you try simulating your design and also a design where you >> instantiate a block ram. You'll be able to compare and see clearly what the >> block ram does. > > This is not the first time that someone has tried to read the BRAM > asynchronously. I have posted many times, and also inserted a sentence > into our documentation that "nothing happens without a clock". > Any ideas how we can spread this important (and non-obvious) > information even better and wider??? > Peter Alfke, Xilinx Applications
My mistake was not realizing that - of course - the data on the BRAM are not available instantaneously, but will be available at the next clock cycle, hence the need to register them. I mistakenly thought 'hey, this process block has a clock in its sensitivity list, so why is XST still claiming I'm using it asynchronously?' So I was not "tryin to read the BRAM asynchronously" as Peter wonders, just not having any idea what I was doing ;-) Thanks for the many helpful replies. Regards. Paul Boven.
Reply by Nico Coesel March 11, 20082008-03-11
Peter Alfke <peter@xilinx.com> wrote:

>On Mar 11, 7:19=A0am, "Symon" <symon_bre...@hotmail.com> wrote: >> Hi Paul, >> Yeah, if you look at your code, you're trying to do an asynchronous read. = >I >> suggest you try simulating your design and also a design where you >> instantiate a block ram. You'll be able to compare and see clearly what th= >e >> block ram does. >> HTH., Syms. > >This is not the first time that someone has tried to read the BRAM >asynchronously. I have posted many times, and also inserted a sentence >into our documentation that "nothing happens without a clock". >Any ideas how we can spread this important (and non-obvious) >information even better and wider??? >Peter Alfke, Xilinx Applications
A world wide advertising campagne include TV commercials? "And now a serious message from our Xilinx Jedi masters: use the clock!" -- Programmeren in Almere? E-mail naar nico@nctdevpuntnl (punt=.)
Reply by March 11, 20082008-03-11
On Mar 11, 6:10 pm, donald <Don...@dontdoithere.com> wrote:
> j...@amontec.com wrote: > > On Mar 11, 4:48 pm, Peter Alfke <pe...@xilinx.com> wrote: > >> On Mar 11, 7:19 am, "Symon" <symon_bre...@hotmail.com> wrote: > > >>> Hi Paul, > >>> Yeah, if you look at your code, you're trying to do an asynchronous read. I > >>> suggest you try simulating your design and also a design where you > >>> instantiate a block ram. You'll be able to compare and see clearly what the > >>> block ram does. > >>> HTH., Syms. > >> This is not the first time that someone has tried to read the BRAM > >> asynchronously. I have posted many times, and also inserted a sentence > >> into our documentation that "nothing happens without a clock". > >> Any ideas how we can spread this important (and non-obvious) > >> information even better and wider??? > >> Peter Alfke, Xilinx Applications > > > Hi Peter, > > > Just rename your component from BRAM to BSRAM ! Synchronous RAM ! > > > As a ROM based on BRAM should be renamed by BSROM. (It is not regular > > to have synchronous ROM, but yes it is synchronous ( need CLK clock ) > > too when based on Xilinx BRAM ) > > > Regards, > > Laurent > >http://www.amontec.com > > This is an FPGA is it not. > > Nothing in an FPGA happens without a clock. > > Why would anyone think that BRAM would operate differently ?? > > My .02 > > donald
sorry but you may describe LUT as asynchronous ROM ? -> No Clock ! My 0.02 Laurent http://www.amontec.com
Reply by Mike Treseler March 11, 20082008-03-11
Peter Alfke wrote:

> This is not the first time that someone has tried to read the BRAM > asynchronously. I have posted many times, and also inserted a sentence > into our documentation that "nothing happens without a clock". > Any ideas how we can spread this important (and non-obvious) > information even better and wider???
The problems I see in this newsgroup are a result of hdl designers continuously reinventing templates to infer a block ram by trial and error. If I worked for Xilinx I would write an ap note in vhdl and verilog for a useful application example that infers block ram from code, and then reference that example in all related documents. Feel free to use my public template if you like: http://home.comcast.net/~mike_treseler/block_ram.vhd -- Mike Treseler
Reply by donald March 11, 20082008-03-11
job@amontec.com wrote:
> On Mar 11, 4:48 pm, Peter Alfke <pe...@xilinx.com> wrote: >> On Mar 11, 7:19 am, "Symon" <symon_bre...@hotmail.com> wrote: >> >>> Hi Paul, >>> Yeah, if you look at your code, you're trying to do an asynchronous read. I >>> suggest you try simulating your design and also a design where you >>> instantiate a block ram. You'll be able to compare and see clearly what the >>> block ram does. >>> HTH., Syms. >> This is not the first time that someone has tried to read the BRAM >> asynchronously. I have posted many times, and also inserted a sentence >> into our documentation that "nothing happens without a clock". >> Any ideas how we can spread this important (and non-obvious) >> information even better and wider??? >> Peter Alfke, Xilinx Applications > > Hi Peter, > > Just rename your component from BRAM to BSRAM ! Synchronous RAM ! > > As a ROM based on BRAM should be renamed by BSROM. (It is not regular > to have synchronous ROM, but yes it is synchronous ( need CLK clock ) > too when based on Xilinx BRAM ) > > Regards, > Laurent > http://www.amontec.com
This is an FPGA is it not. Nothing in an FPGA happens without a clock. Why would anyone think that BRAM would operate differently ?? My .02 donald
Reply by March 11, 20082008-03-11
On Mar 11, 4:48 pm, Peter Alfke <pe...@xilinx.com> wrote:
> On Mar 11, 7:19 am, "Symon" <symon_bre...@hotmail.com> wrote: > > > Hi Paul, > > Yeah, if you look at your code, you're trying to do an asynchronous read. I > > suggest you try simulating your design and also a design where you > > instantiate a block ram. You'll be able to compare and see clearly what the > > block ram does. > > HTH., Syms. > > This is not the first time that someone has tried to read the BRAM > asynchronously. I have posted many times, and also inserted a sentence > into our documentation that "nothing happens without a clock". > Any ideas how we can spread this important (and non-obvious) > information even better and wider??? > Peter Alfke, Xilinx Applications
Hi Peter, Just rename your component from BRAM to BSRAM ! Synchronous RAM ! As a ROM based on BRAM should be renamed by BSROM. (It is not regular to have synchronous ROM, but yes it is synchronous ( need CLK clock ) too when based on Xilinx BRAM ) Regards, Laurent http://www.amontec.com