AR# 2370

SYNPLIFY: How to preserve instances with unused outputs using the syn_noprune attribute?

Description


General Description:

How to preserve instances with unused outputs using the

syn_noprune attribute?



The syn_noprune attribute disables of the removal (pruning)

of instances with unused outputs.

Solution


VHDL

----



Architectures can be associated with the syn_noprune

attribute. Once it is associated any instantiation of the

architecture (design unit) will be protected from being deleted.



attribute syn_noprune of XILINX : architecture is true;



Component declarations can be associated with the

syn_noprune attribute. Placing the syn_noprune attribute on

a component declaration will only have the desired affect if the

component is recognized by Synplify as a black box. Please see

(Xilinx Solution 2713).



library synplify;

use synplify.attributes.all;



architecture XILINX of EXAMPLE is



component CELL

port (I : in std_logic);

end component;



attribute syn_noprune of CELL : component is true;

-- Synplify must somehow recognize that the

-- component is a black box for the attribute

-- to work.



Also, component instances can be associated with the

syn_noprune attribute. The syn_noprune attribute works the

same on a component instances as with a component declaration.

Placing the attribute on the label of component instance will only

have the desired effect if the component is recognized by Synplify

as a black box.



library synplify;

use synplify.attributes.all;



architecture XILINX of EXAMPLE is



component CELL

port (I : in std_logic);

end component;



attribute syn_noprune of U1 : label is true;

-- The component instance U1 (of CELL) is

-- defined later. Synplify must somehow recognize

-- that CELL is a black box for the attribute to work.



Verilog

-----



Module declarations can be associated with the syn_noprune

attribute. Once it is associated, any instance of the module will be

protected from being deleted.



/* Turn off pruning of all instances of my_design */

module EXAMPLE (I) /* synthesis syn_noprune=1 */ ;



Component instances can be associated with the syn_noprune

attribute. Placing the syn_noprune attribute on a component

instance will only have the desired affect if the component is

recognized by Synplify as a black box. Please see

(Xilinx Solution 2713).



/* Turn off pruning for each of these instances */

EXAMPLE U0 (I) /* synthesis syn_noprune=1 */;

EXAMPLE U1 (I) /* synthesis syn_noprune=1 */;



If your design uses multiple instances with a single module

declaration then the synthesis comment must be placed before

the comma (,) following the port list for each of the instances.



/* Turn off pruning for two of these instances */

EXAMPLE U0 (I) /* synthesis syn_noprune=1 */,

U1 (I),

U2 (I) /* synthesis syn_noprune=1 */;



In this example only the instances U0 and U2 have the attribute

set to true (syn_noprune=1).
AR# 2370
Date 01/17/2011
Status Archive
Type General Article