You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First a great thank you for the great stuff you provide. I just recently started to work with RV and do digital logic since 1996.
While bringing a mini implementation up with all internal memories in both Vivado and Quartus as well as Lattice I noticed that mainly the optimizers like to optimize away ROM - content leading to futher "optisation" of the RAM rendering synthesis faulty.
I changed the following for quartus (Board: DE0-NANO):
=>Use dedicated ROM/RAM components to infer RAMS, split up processes
=>Blink Check and Debugging okay
For Modelsim:
=>Guard read access (I use 3 kbyte ROM/RAM) from illeagal addresses
=>Blink Check and Debugging okay
For Vivado (Board: Colorlight i9+):
=>Use dont_touch and keep attributes on the write-enables,read-enables of the RAM and address, data on ROM/ROM
=>Blink Check and Debugging okay
For Lattice (Board: Colorlight i9):
=>So far no success, RAM access (dmem) not working
but I will try to get it running as well, need to prevent the Synplify Optimizer from overdoing.
For GoWin (Arora Board):
=> Project just started.
If you have any hints on that pls let me know. I can also contribute generic RAMs and a changed ROM.
The text was updated successfully, but these errors were encountered:
First of all, the memory modules from neorv32/rtl/core/mem were designed in a platform-agnostic way. So they can (should) be synthesized for any platform resulting in the correct inference of block RAM. I have tested this on Xilinx (Vivado), Intel (Quartus) and Lattice (Diamond + Radiant) FPGAs.
I use 3 kbyte ROM/RAM
Better use a power of two for the memory sizes - otherwise the synthesizer might have issues inferring block RAM.
For Lattice (Board: Colorlight i9):
=>So far no success, RAM access (dmem) not working
Have you checked the final synthesis reports? There should be a notification if the tool was not able to infer block RAM.
Thank you for your reply, I am now working on the full system first on the Altera/Intel toolchain and will come back to this once I am finished as debugging on Quartus is the most efficient for me.
First a great thank you for the great stuff you provide. I just recently started to work with RV and do digital logic since 1996.
While bringing a mini implementation up with all internal memories in both Vivado and Quartus as well as Lattice I noticed that mainly the optimizers like to optimize away ROM - content leading to futher "optisation" of the RAM rendering synthesis faulty.
I changed the following for quartus (Board: DE0-NANO):
=>Use dedicated ROM/RAM components to infer RAMS, split up processes
=>Blink Check and Debugging okay
For Modelsim:
=>Guard read access (I use 3 kbyte ROM/RAM) from illeagal addresses
=>Blink Check and Debugging okay
For Vivado (Board: Colorlight i9+):
=>Use dont_touch and keep attributes on the write-enables,read-enables of the RAM and address, data on ROM/ROM
=>Blink Check and Debugging okay
For Lattice (Board: Colorlight i9):
=>So far no success, RAM access (dmem) not working
but I will try to get it running as well, need to prevent the Synplify Optimizer from overdoing.
For GoWin (Arora Board):
=> Project just started.
If you have any hints on that pls let me know. I can also contribute generic RAMs and a changed ROM.
The text was updated successfully, but these errors were encountered: