S
Shannon
Guest
On May 13, 1:23 pm, Dave <dhsch...@gmail.com> wrote:
that exact module and open it as a stand alone project, it synthesizes
and infers a DPRAM as expected. But when I try to synthesize my
entire design of which the DPRAM is just one component, THEN it
decides to UN-infer the RAM. So there has to be something about my
code that gives Quartus the feeling it has to UN-infer this RAM. I
wonder if there is a way to just put brackets around that module and
tell Quartus, "Hey, just synthesize this by itself, infer the RAM and
leave it alone! Then connect it to the rest of my code as indicated
in the component instantiation....er...ah...Please."
Shannon
ah well then that is what I've been doing from the start. If I takeOn May 13, 3:54 pm, Shannon <sgo...@sbcglobal.net> wrote:
On May 13, 11:33 am, Dave <dhsch...@gmail.com> wrote:
On May 13, 1:51 pm, Shannon <sgo...@sbcglobal.net> wrote:
On May 13, 10:48 am, Shannon <sgo...@sbcglobal.net> wrote:
Ok! Now I'm getting somewhere (at least in my mind...for some reason I
have this picture of a clown on a tiny tricycle peddling furiously but
just going in a little circle)
If you take the template I posted and try to synthesize it all by
itself in Quartus II targeting a Cyclone, you will get the same
warning as I've posted above. So, to me, this means the warning has
nothing to do with MY use of the DPRAM elsewhere in my code. The
problem is entirely inside Quartus's own template! Ok, now with your
help I think we can make this thing infer real RAM. Any ideas? It
seems to think the read is asynchronous but in my view the read
behavior is inside a clocked process and the IF .. THEN is
incomplete. This means it will make a register out of the read port
so that it can hold it's value outside the process. That process is
clocked so I can't see how it thinks reads are asynchronous.
Shannon
ooopss I had commented out the 'q_a <= data_a;' lines and it didn't
work. but when I put them back it correctly infers an altsynchRAM..
However, when I put this back into my project the error returns. I
guess that means there MUST be something wrong with my code. It must
be making it create an asynchronous read....grrrrrrr
I'm lost.
Shannon
If it works when it's in its own entity, then maybe you should try
leaving the DPRAM that way, and instantiating it as a component is the
rest of your code. This might help Quartus see things more clearly.
Memory inferring is tricky, and I've found that sometimes the tools
need things a certain way just because, even though you're following
all the rules.
Dave- Hide quoted text -
- Show quoted text -
Excellent idea. I am doing a direct instantiation right now but if I
understand you correctly, I could somehow complile it into a library
or something and then stick it into my code thereby not letting
Quartus re-synthesize the RAM part. Ok, it's back to the books to see
how I can do all that!
Shannon
That's a bit more than I meant... I was just meaning to instantiate
your RAM code, like you would in any hierarchical design. Nothing
more. No precompiling anything or any other weirdness.- Hide quoted text -
- Show quoted text -
that exact module and open it as a stand alone project, it synthesizes
and infers a DPRAM as expected. But when I try to synthesize my
entire design of which the DPRAM is just one component, THEN it
decides to UN-infer the RAM. So there has to be something about my
code that gives Quartus the feeling it has to UN-infer this RAM. I
wonder if there is a way to just put brackets around that module and
tell Quartus, "Hey, just synthesize this by itself, infer the RAM and
leave it alone! Then connect it to the rest of my code as indicated
in the component instantiation....er...ah...Please."
Shannon