- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I have been analysing the memory usage of my project and would like to override some of the memory block types used by the NIOS because they are inefficient in terms of use. (I'm fairly tight on memory). More specifically, there are a few blocks which are using M9Ks which I would like to convert to MLAB. The memory types specified by the code are set to "Auto" as reported in the fitter RAM summary report. I have tried to do this by making a parameter assignment in the assignment editor but it appears to be ignored. I haven't seen a message in the compilation report to the effect that the assignment I have made is being ignored, but it does not have an effect i.e. the memory block is still assigned to an M9K. For example, this is one of the memory blocks in question: ChannelApp:NIOS|sgdma_to_lan:the_sgdma_to_lan|sgdma_to_lan_status_token_fifo:the_sgdma_to_lan_status_token_fifo|scfifo:sgdma_to_lan_status_token_fifo_status_token_fifo|scfifo_ic31:auto_generated|a_dpfifo_li31:dpfifo|altsyncram_lqd1:FIFOram|ALTSYNCRAM AUTO Simple Dual Port Dual Clocks 2 24 2 24 yes no yes yes 48 2 24 2 24 48 1 0 0 None M9K_X60_Y1_N0 I basically copied the full path and name of the altsyncram as displayed, copied it into the assignment editor and assigned a parameter "RAM_BLOCK_TYPE" and assigned the value "MLAB" (without the quotes). I have used this very same technique on some of my own memory blocks in my logic and it appears to work fine. So, why does it appear to be ignored? Is it because the fitter is using some form of pre-compiled logic for the NIOS core or something like that?Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have a problem very similar to the one below, in a Stratix 3 I have some 3rd party code which Quartus reports is of memory type AUTO. My own code is using most of the M9K blocks, but Quartus is determined to also put the 3rd party AUTO blocks as M9Ks. How do I force it to use MLABs? I have tried all the compiler options below but it still sets these AUTO blocks to M9K even though this now exceeds the number available in the chip (>639).
Auto RAM to MLAB conversion -ON Equivalent RAM and MLAB paused read capabilities -Don't Care Equivalent RAM and MLAB power up -Don't Care Cheers Tom- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It may be that MLABs don't provide the facilities required by the instantiation of the memory. In my case, the NIOS was using certain modes of some memory blocks which would only work with M9K or M144K. I was able to attempt to override by using a parameter assignment but in the cases where this wouldn't have worked the build failed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I guess that must be the case then. As there are a few different instances of AUTO memory I thought I would be able to make one of them change to MLAB. But unfortunately not! Thanks Tom.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Just for your information this is the kind of assignment I have used in the assignment editor. Obviously you have to find the full path name of the ram block from your compilation output (Compilation report->Fitter->Resource Section->RAM Summary) - may be different if you are using a different version of Quartus - I'm still on 8.1 at the moment.
dsp:dsp0|dsp_processing:dsp_processing_a|buss_mixer:main_group_afl_mix|buss_mix:buss_mix_0|coeff_memory_Xn:coeff_memory_mix_coeffs|coeff_memory_with_byteen:coeff_memory_with_byteen_a|altsyncram:altsyncram_component RAM_BLOCK_TYPE M144K Yes
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page