D
daniel.larkin@gmail.com
Guest
Hi all,
In my Cyclone 4 based design I'm getting an embedded multiplier
inferred, as expected from the following VHDL:
C <= A * B;
(where A and B are registered 12 bit values, and the output C is
subsequently registered, with no other logic in the path)
However I'm seeing a timing violation on this path. Looking at the
timing reports, there is nearly a 2ns delay between the output of the
multiplier and the flop. Obviously I'd really like to pull in some of
this 2ns, which would sort out the negative slack problem.
I looked through the documentation for the embedded multipliers, and
as expected there are input and output registers as part of the
embedded multiplier block. But clearly with that 2ns delay the output
register isn't being used. So my question is: how do I write my code
to infer the use of the output registers in the embedded multipliers?
As I tried a number of coding styles, including putting the
multiplication operation directly inside a clocked process and it had
no impact on timing. But I definitely don't want to instantiate the
embedded multiplier directly. Perhaps there are any VHDL attributes
that may help (anything other than MULTSTYLE DSP/LOGIC)?
Any suggestions or pointers to documents would be greatly appreciated!
In my Cyclone 4 based design I'm getting an embedded multiplier
inferred, as expected from the following VHDL:
C <= A * B;
(where A and B are registered 12 bit values, and the output C is
subsequently registered, with no other logic in the path)
However I'm seeing a timing violation on this path. Looking at the
timing reports, there is nearly a 2ns delay between the output of the
multiplier and the flop. Obviously I'd really like to pull in some of
this 2ns, which would sort out the negative slack problem.
I looked through the documentation for the embedded multipliers, and
as expected there are input and output registers as part of the
embedded multiplier block. But clearly with that 2ns delay the output
register isn't being used. So my question is: how do I write my code
to infer the use of the output registers in the embedded multipliers?
As I tried a number of coding styles, including putting the
multiplication operation directly inside a clocked process and it had
no impact on timing. But I definitely don't want to instantiate the
embedded multiplier directly. Perhaps there are any VHDL attributes
that may help (anything other than MULTSTYLE DSP/LOGIC)?
Any suggestions or pointers to documents would be greatly appreciated!