Forum Discussion
Altera_Forum
Honored Contributor
15 years agoHello,
Signals code_word_addr and code_word_addr_wr are slices of an input signal that itself is the output of an adder. They are combinational. I have tried registering the read address (code_word_addr) with no result. I haven't tried registering the write address, though. I will try. Anyway, registering the addresses may be useful for diagnostic but I can't accomodate the extra latency cycle in the design. Neither can I 'move' the module boundaries so that the RAM output does not go straight to the module output (the manual suggested that might be the problem). You see, this BRAM is the line store of a direct-mapped code cache for a MIPS core. The core already works with a 'stub' 1-word cache (which uses no RAM). The trouble started when I began implementing the real cache. The cache is meant to be wired directly to the CPU ports. In this particular case, the output of the code line store goes to the CPU module, where it is registered. BUT, before registering, a slice the unregistered CPU input (i.e. the cache RAM output) is used as the address input for the register bank (which itself is another RAM block). So I just have to use the RAM block output. I hope that made sense... The point is I have used this construct several times in this very design (register bank, startup ROM, etc.) and in many other designs with this and previous versions of Quartus and this is the first time I see this problem... I have to find a way to put a block ram there. I will try to put the block in a separate module (which will complicate the code unnecessarily, but oh well...). Eventually I may have to surrender and just instantiate a Cyclone-2 block (so far the code is vendor agnostic and works with no changes on Xilinx tools). On an unrelated note, I have been unable to install and run Quartus on my Kubuntu machine. Installation errors, missing instructions, program crashes, etc. etc. etc. In my opinion, the Linux version of Quartus-2 is so desperately buggy that Altera should just honestly admit that Linux is not supported -- supporting a small percentage of Linux users on an essentially random basis is not enough. Compare this to Eclipse, Kdevelop, CodeBlocks, OpenOffice, etc. Thank you for your tips!