Stratix DSP Block: Choosing which FFs are enabled

I'm trying to increase the speed of my Stratix design and would like to change which FFs are turned on within a DSP block.

The Stratix handbook shows the DSP path something like this:

[ FF ] [ X ] [ FF ] [ + ] [ FF ]

where [X] is the multiplier block, [+] is an accumulate block and all registers are optional. I don't use any of the accumulators, and I use pipeline_delay=2 going through the multiplier.

What I find is

(a) Quartus always invokes the first and 2nd FFs, viz

[ FF ] [ X ] [ FF ] [ --> ] [ --> ]

(b) There's > 1ns interconnect delay getting out from the 2nd FF.

What I'd really like is to try

[ FF ] [ X ] [ --> ] [ --> ] [ FF ]

in the hope that this will give me faster overall operation.

But I can't find any way to do this. I've looked at the multiplier tdf and it doesn't appear that the choice of which FFs to implement is brought out to HDL.

What I'd like to learn is :

(i) is the path I've diagrammed above possible in the Stratix hardware ?

(ii) how can I make the software implement this ?

Thanks for any help,

-rajeev-

Reply to
Rajeev
Loading thread data ...

Yes, this path is possible to implement in the hardware. Using the altmult_add Megafunction you can control explicitly which registers are used in the DSP Block, while the lpm_mult Megafunction only gives you an option to specify the number of pipeline stages.

Using the altmult_add MegaWizard, create an altmult_add instantiation with 1 multiplier, which ensures only the multiplier portion will be used (the adder portion will not be used). Within this MegaWizard, you can explicitly specify which registers to use. To achieve what you want, you should use the input registers and extra ouput register, but disable the multiplier output register.

Hope this helps.

Subroto Datta Altera Corp.

Reply to
Subroto Datta

Subroto,

Thanks a lot. I'll try this out. It looks like exactly what I wanted.

In the meantime I've discovered that with some optimizations turned on, Quartus is aggressively moving the multiplier registers around -- I didn't know it was possible to separate the registers from the multiplier ! Not only that but it's cramming lots of auxiliary registers into the DSP block, even when all 4 (18-bit) multipliers are used.

Wow!

Regards,

-rajeev-

Reply to
Rajeev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.