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 |