AHDL

Implementing LCELL & SOFT Primitives



You can limit the extent of logic synthesis by changing NODE variables into SOFT and LCELL primitives. NODE variables and LCELL primitives provide the greatest control over logic synthesis. SOFT primitives provide less control over logic synthesis.

NODE variables, which are declared with a Node Declaration in the Variable Section, place very few restrictions on logic synthesis. During synthesis, the Logic Synthesizer replaces each instance of a NODE variable with the logic that the variable represents. It then minimizes the logic to fit into a single logic cell. This method usually yields the greatest speed, but may result in logic that is too complex or hard to fit.

SOFT buffers provide more control over resource usage than NODE variables. The Logic Synthesizer chooses when to replace instances of SOFT primitives with LCELL primitives. SOFT buffers may help eliminate logic that is too complex and make the project easier to fit, but may increase logic cell utilization and reduce speed performance.

LCELL primitives provide the most control. The Logic Synthesizer minimizes all logic that drives an LCELL primitive so that the logic fits into a single logic cell. LCELL primitives are always implemented in a logic cell, and they are never removed from the project even if they are fed by a single input. If the project is minimized so that an LCELL primitive is fed by a single input, you can use a SOFT primitive instead of an LCELL primitive so that the SOFT primitive is removed during logic synthesis.

The Quartus® II software provides several logic options that automatically insert or remove SOFT and LCELL buffers at appropriate locations in the project.

The following illustration shows two versions of a Text Design File (.tdf): one is implemented with NODE variables and one with SOFT primitives. In nodevar, the variable odd_parity is declared as a NODE, and then assigned the value of the Boolean expression d0 $ d1 $ ... $ d8. In softbuf, the Compiler will replace some of the SOFT primitives with LCELL primitives during processing to improve device utilization.

TDF with NODE Variables: TDF with SOFT Primitives:
SUBDESIGN nodevar
(
   DOTS
)		
VARIABLE
    odd_parity : NODE;
BEGIN		
    odd_parity = d0 $ d1 $ d2
               $ d3 $ d4 $ d5	
               $ d6 $ d7 $ d8;
END;
SUBDESIGN softbuf
(

   DOTS  

)
VARIABLE
   odd_parity : NODE;
BEGIN
   odd_parity = SOFT(d0 $ d1 $ d2)
     $ SOFT(d3 $ d4 $ d5)
     $ SOFT(d6 $ d7 $ d8);
END;


Back to Top

- PLDWorld -

 

Created by chm2web html help conversion utility.