UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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 Created 08/31/2007
Last Updated 01/17/2011
Status Archive
Type General Article