synplify pro generates negative slack

SRLen7 : SRL16 -- synthesis translate_off generic map( INIT => x"0000") -- synthesis translate_on port map (Q => enadd5_d4, A0 => '1', A1 => '1', A2 => '0', A3 => '0', CLK => clock, D => enadd5);

PROCESS(clock,reset) begin if reset ='1' then BITVECTOR4 '0'); EVECTOR4 '0'); elsif clock'event and clock ='1' then

if equal9='1' and enadd5_d4='1' then BITVECTOR4 enadd5_d3, A0 => '0', -- changed from 1 to 0 A1 => '1', A2 => '0', A3 =>

'0', CLK => clock, D => enadd5);

PROCESS(clock,reset) begin if reset ='1' then BITVECTOR4 '0'); EVECTOR4 '0'); enadd5_d4

Reply to
ni
Loading thread data ...

Wrong.

An SRL16 *functions* just like a simple shift register, but physically it is a special configuration of a LUT primitive. The setup time and clock-to-out time is very different from a FF primitive in the fabric. When you are doing a high-speed design, you should always try to make the last stage of your shift register pipeline use a dedicated FF. Most synthesis tools will do this for your automatically if you just write a straightforward shift register in RTL. No need to go instantiating things.

-Ben-

Reply to
Ben Jones

So what your are implying is that its advisable to write the code in the following way

--------------------------------------------------------------------------------------------------------------------------------------------- PROCESS(clock,reset) begin if reset = '1' then en4

Reply to
ni

If I were having trouble making timing, I would use a generic shifter. It is faster in nS and in work hours. Registers are free on many fpga designs.

-- Mike Treseler

Reply to
Mike Treseler

I have recently started(1 week) using Synplify pro. For two years in my fpga designs I never used synplify pro. For most of the generic component I used to use core generator and then instantiate those component in my vhdl code. I was using xilinx XST extensivley and hence never go these problems. Unfortunately before using synplify pro for mycurrent design I have used core genrator in most of the components. So now I am thingkin of cleaning up the code by changing the cores for example adders , subtractors, SRL16s, BRAMs, ROMS etc to vhdl statements. Are ther any good documents for vhdl coding styles to infer the various components in synplify pro?

Thanks for all the suggestions above.

Reply to
ni

Next time post to comp.lang.vhdl.

Start with the Synplify pro vhdl synthesis guide. Most of the core generator blocks can be replaced by a few lines of vhdl code, but there is a learning period.

Here's some brand A examples :

formatting link

Here's some brand X examples :

formatting link

Here are my examples.

formatting link

Good luck.

-- Mike Treseler

Reply to
Mike Treseler

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.