- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all, elementary question perhaps but is there any advantage in instantiating a dual port RAM (or any memory type buffer for that matter) using the IP Catalog/Megafunction Wizard rather than inferring? I suppose the same question could be asked for lots of different functions.
The reason I ask is because what I have done in past projects (rightly or wrongly) is to write a re-usable parameterized module which internally hijacks a megawizard generated module and replaces any fixed numbers with appropriate parameters. This is a bit of a strange way to do it in retrospect (but it works well) and also I had to add parameters to specify RAM type such as M9K or M512 (for Stratix III). Now I am working on a new project with Arria V and some of those settings don't make sense, so I thought why did I ever do it this way? i.e. why not infer and let Quartus work out how to implement the functionality. I apologize in advance if this question comes up all the time, but I suppose it's always good to hear other views on these things. Thanks, DLink Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Generally to ensure compatibility, I would use the IP Catalog and Megafunction.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I generally use VHDL only and let Quartus infer megafunctions to have multivendor compatibility
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Inference is usually prefered, as it allows portability into Xilinx devices. You can use attributes on infered ram to force the ram type to M9k/MLAB etc.
There are some things that cannot be infered, like write-before-read mode. Have you read the coding style guidelines from the Quartus handbook - there is a whole section of templates to infer different styles of RAM- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes I have read the coding guidelines thanks. I think the portability issue is very relevant, more so for us now than a few years ago as it happens. My own opinion is that yes, inference would be better in this regard or at the very least have some form of portability layer to shield the important bits of IP from reliance on specific hardware if at all possible - that's kind of the approach I have taken until very recently.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The way I have seen it done before - have a library that infers ram in the way that each vendor requires the code to be written to infer the ram, ensuring the interface is identical. Then you simply instantitate the memory and just include the appropriate library for the vendor you are currently using.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
See also code template in Quartus

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page