AR# 16186


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


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."


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:

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:

output_with_keeper : out STD_LOGIC;

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 08/11/2005
Status Archive
Type General Article
People Also Viewed