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

5.1i Simulation, NGD2VHDL - An X_KEEPER is not properly connected to an output-only port ("ERROR: Cannot read output...")

Description

Keywords: simulation, SimPrim, NGD2VHDL, error, cannot, read, output, weak, keeper, X_KEEPER, VHDL, output, port, TMI, ModelSim, MXE

Urgency: Standard

General Description:
I am attempting to simulate a design in which a keeper is attached to the output of an OBUFT, and the port is output-only. However, the following error occurs when I compile the design:

"# ERROR: timesim.vhd(344): Cannot read output: xxx.
# -- Loading entity x_keeper."

Solution

When an X_KEEPER is connected to the output of an OBUFT and the port is only used as an output, NGD2VHDL does not properly connect the X_KEEPER -- the X_KEEPER is directly connected to the output. This causes simulation errors, as the X_KEEPER model must read in the value of the output and an output cannot be read in VHDL.

In most applications, the X_KEEPER is used only on bi-directional signals, but it can be connected to the output of an OBUFT that is used as an output-only. (Please see the Databook for more information:
http://toolbox.xilinx.com/docsan/xilinx5/data/docs/irn/irn0004_4.html)

In the 5.1i software, the only way to work around the problem is to declare the output port as a bi-directional port.

For example, in the port listing for the entity:

Change:
output_with_keeper : out STD_LOGIC;

to:
output_with_keeper : inout STD_LOGIC;

This change must be made for all output ports with keepers attached to them. You must also change the port to INOUT for the testbench and any other files that refer to this entity.
AR# 16186
Date Created 11/19/2002
Last Updated 08/11/2005
Status Archive
Type General Article