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# 10492

6.0 Synplify Pro - When trying to use an AND gate with an input of '1' to model a buffer, it is optimized out.

Description

Keywords: Synplify, Synplicity, AND, gate, buffer, optimized

Urgency: Low

General Description:
If a user creates a design that targets a 9500 device and wishes to use a two-input AND
gate with one input tied high, Synplicity will optimize the AND gate out, even if there are
syn_keep attributes on both sides of the AND gate.

Solution

1

A work-around is to, rather than using an AND gate, instantiate a BUF and put the
syn_keep attribute on both sides of the BUF.

2

Another work-around is to introduce a signal named "one" and preserve it as follows:

library ieee ;
use ieee.std_logic_1164.all ;
use ieee.std_logic_unsigned.all ;
use ieee.std_logic_arith.all ;
library synplify;
use synplify.attributes.all;

entity delay is
port (
data_in_MOST: in std_logic ;
delay_out: out std_logic_vector (24 downto 0);
bus_in: in std_logic
) ;
end delay ;

architecture delay_arch of delay is
signal one : std_logic;
signal delay_out_int: std_logic_vector (24 downto 0);

attribute syn_keep of delay_out_int : signal is true;
attribute syn_preserve of delay_out_int: signal is true;
attribute syn_keep of one: signal is true;
begin
one <= '1';
delay_out_int(0) <= data_in_MOST;
delay_out_int(1) <= delay_out_int(0) and bus_in;

process (delay_out_int)
begin
for i in 2 to 24 loop
delay_out_int(i) <= delay_out_int(i-1) and one;
end loop ;
end process;

delay_out (24 downto 0) <= delay_out_int (24 downto 0);

end delay_arch;
AR# 10492
Date Created 11/10/2000
Last Updated 04/20/2007
Status Archive
Type General Article