Answers Database


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


Record #2370

Product Family: Software

Product Line: Synplicity

Product Part: Synplify

Product Version: 5.0

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


Problem Description:
Urgency: Standard

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 1:

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).



Solution 2:

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.




End of Record #2370 - Last Modified: 04/26/99 16:58

For the latest news, design tips, and patch information on the Xilinx design environment, check out the Technical Tips!