- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am using the NCO compiler V10.1 to generate a ROM based NCO. I am using a stratix IV (EP4SE230F29C2) device.
According to both the manual and the wizard itself, the ROM should be implemented with M9K memory blocks. But to my disappointing surprise, it is implementing the NCO with M144K blocks. The NCO compiler manual even provides resource estimates in terms of M9K blocks. Yet the compiler is ignoring its own estimation and goes on to use only M144K blocks. This is a major problem. I am instantiating multiple NCOs and the design won't fit. I have all the M9K blocks available in the world but the tool is insisting on using the M144K, which I don't have enough. Does anybody know what to do? Is this [yet] another Quartus II bug, or is there some hardware limitation here?Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
try Assignments > Settings > Analysis and Synthesis Settings > More A & S Settings > Max number of M44K Blocks maybe in addition to (imported) partitions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks, I tried playing with the "Max number" settings. It doesn't help. It insists on using M144K blocks only.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i confirmed with a single NCO core before i posted. it used M144K until i set the number of blocks to 0, in which case it used M9K
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i'm also using 10.1 (Linux, Subscription)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
have you tried LogicLock?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Interesting. I tried it also but it fails for me. "can't fit design". I am using the windows version.
What can I do with LogicLock?- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
maybe reduce the design down to 1 NCO to see if you can get that to fit to M9K, then scale it up
with LogicLock you can define fixed regions for each NCO instance which contain the specific number of memory blocks needed- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I did reduce it down to 1 NCO and it didn't work. That's what I was referring to above.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hmm, can you post the NCO specs or else the variation .v/.vhd
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's a Large ROM based NCO, 32 bit accumulator, 16 bit phase resolution, 14 bit amplitude resolution, single output, no modulations, no dithering. I use VHDL.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i see the problem now. it doesn't happen in Small ROM but does in Large ROM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks. I'll try it also a little bit later to confirm. But this is still a problem. I need the large ROM because I can't spare the latency.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i think the problem is the deep RAM in the Large ROM, still taking a look
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i think Quartus doesn't want to put a 64k deep RAM into M9K because it would need an 8:1 mux (8 M9K in 8k x 1b)
using M144K you can go 16k deep, so you only need a 4:1 mux (4 M144K in 16k x 18b/19b) you can file an SR, at this point i think the issue is synthesis, not the actual NCO IP. i expect a significant fmax hit if you got the synthesizer to use M9K instead of M144K. what speed are you targeting? any way to trade fmax for latency?- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks,
Ok, I see this now also. But it seems that anything beyond around 2K deep it switches to M144K. I need to run at about 268 MHz. I probably can afford the trade-off (let fmax take a hit). The synthesis should allow you to make that trade off.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i guess i was wondering whether you could run the NCO at double the frequency to try and compensate for lost latency in Small Table mode
i would probably write my own NCO at this point. you are using the easiest mode to recreate and none of the additional features. i don't think you'll get synthesis to use the RAMs as you'd like, so you'll have to stitch them together yourself- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for your help. I opened an SR anyway.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
it would be a nice synthesis enhancement, but i don't know exactly how you'd implement it
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page