Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
13 years ago

How to avoid register "optimisation" in DSP

Hello everyone,

I can't seem to solve this by my own:

I'm using multipliers in my code, as you might know, on Stratix4 getting out of a DSP block has a timing cost of ~0.350ns

So, I'm willing to spend 1 clock cycle to go out of a DSP block, BUT the synthesis aggressively wants to locate any register that I place after inside the DSP. Instanciating explicitely the alt_multadd module or lpm_mult does not change anything.

The only way I found to avoid that is to place 2 "wasted" registers after, thus exhausting the register resources of any DSP slice, but that is ugly and only show that I don't know how to properly constrain my synthesis.

Setting the following attributes does not change anything:

preserve

keep

So, do you know of any assignment, or directive to "protect" my general register from this effect ?

BTW what is this effect? (register merging, dsp balancing?)

13 Replies