Malfunctioning dual port block ram.

May 18, 2004 6 Replies

Hi,



I have instantiated a dual port block ram through coregen with a 128 bit write only port and a 32 bit read only port.



I am using chipscope to debug the FPGA and when I view all signals connected to ram, all write port signals are correct, but the data read out from read port is sometimes correct, and other times it is garbage data.



Could somebody suggest a solution to this problem. Is it a timing problem? (the frequency of operation is low around 10 Mhz) -- Aniket Naik Computational Mathematics Laboratory, Tata Institute of Fundamental Research, India.



Possibly not the same problem, but I've seen issues recently with a Core Gen RAM not being synthed properly by XST. I switched over to Synplify and the problem disappeared.. My faith in XST is limited!

Cheers, Jon

I didn't think that Coregen'ed stuff *was* synthesised - does the synth not see it as a black box? Then the downstream tools find the EDIF netlist to fill in the gap..

Cheers, Martin

martin.j.thompson@trw.com TRW Conekt, Solihull, UK http://www.trw.com/conekt

Could it wire up the black box wrong? Functional sim worked okay and post-translate sim didn't (neither did h/w). It could have been the translate prog that screwed up I guess, but I didn't have the time or will to find out. Whenever things like that have happened before, switching to Synplify always fixed it. Cheers, JonB

That sounds more likely - or the synthesis of something else related to the RAM (like a WE or address counter for example)

It's not bug-free either....

Cheers, Martin

martin.j.thompson@trw.com TRW Conekt, Solihull, UK http://www.trw.com/conekt

Which FPGA are you using? Some Spartan2 parts had some problems with simultaneous read/writes. I think the 2Es are OK as are the Spartan3s and Virtex2s.

Are the read and write ports using the same clock?

Are you attempting to simultaneously read and write from the same address?, if so don't do that.

I had this problem with leonardo version 2001. I've just changed to leonardo

2002 and it was working well.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required