Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
21615 Discussions

Prevent Inferrance of Megafunctions

Altera_Forum
Honored Contributor II
1,808 Views

Hello, 

 

I have a large shift-register that is being optimized by the synthesizer into a megafunction equivalent. The problem is, I need this register to stay a register (DFFs). 

 

Is there a way to turn-off this optimization? 

 

Thanks!
0 Kudos
4 Replies
Altera_Forum
Honored Contributor II
853 Views

yes. 

 

go assignments -> settings -> analysis and synthesis settings -> more settings 

 

There is a setting called "auto shift register placements". Change this to "off". 

 

be wary though - these are global settings. I think these settings can be assigned to individual entites via assignments.
0 Kudos
Altera_Forum
Honored Contributor II
853 Views

Right click on the hierarchy and Locate -> Assignment Editor. Copy and paste the name from the top filter bar to the To column. Auto Shift Register Replacement is the assignment again.

0 Kudos
Altera_Forum
Honored Contributor II
853 Views

The global assignment worked - but trying to assign this rule to a specific part of the design did not. 

 

I found the collection of registers that I need to apply the rule to via the drop-down menu in the 'To' textbox. I filtered on 'Registers: pre-synthesis' and added the name this way. 

 

The collection always has a question mark by it, and the tooltip says that the name is not recognized (which seems odd, because I got the name from the drop-down list). 

 

I've uploaded an image of this to google docs for reference: 

 

https://docs.google.com/open?id=0b4wyejzmihtnzmnkued6aevhrnc 

 

Any ideas? 

 

Thanks!
0 Kudos
Altera_Forum
Honored Contributor II
853 Views

It's possible by synthesis attributes, as discussed in a different thread http://www.alteraforum.com/forum/showthread.php?p=155649 

 

reg data = 6000'b0 /* synthesis altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF" */;
0 Kudos
Reply