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

SYNPLIFY 7.1 - How do I make Synplify infer 3-state (tri-state) buffers in my HDL code?


Keywords: Synplify, 3, tri, three, state, buffer, BUFT, BUFE

Urgency: Standard

General Description:
When I use the following (or something similar):

dout <= din1 when enable = '1' else 'Z';
dout <= din2 when enable = '0' else 'Z';

assign dout = enable ? din1 : 1'bz;
assign dout = enable ? 1'bz : din2;

Synplify 7.x will use LUTs instead of 3-state buffers.


Due to simulation mismatches and poorer performance from 3-state buffers, Synplify automatically translates a MUX into gates regardless of whether the use of 3-states has been specified.

A switch that was introduced in Synplify 7.1 allows you to infer 3-state buffers instead of using LUTs:

1. Select "Options".
2. Select "VHDL Compiler" or "Verilog Compiler".
3. Select the "VHDL" or "Verilog" tab.
4. De-select "Push Tristates across Process/Block boundaries".
AR# 14360
Date Created 03/28/2002
Last Updated 04/23/2007
Status Archive
Type General Article