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

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

Description

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

Urgency: Standard

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

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

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

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

Solution

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