AR# 14143


8.1i XST - "ERROR:Xst:871 - <file>.v, line xx: Invalid use of input signal <signal> as target."


When I synthesize a Verilog design, the following error occurs:

"ERROR:Xst:871 - <file>.v, line xx: Invalid use of input signal <signal> as target."


This error might occur when a signal declared as an input of a module is assigned a value within that module.

Examine your code to determine if this port should be declared as an INOUT, or if the assignment to this port should not have been made. If this signal connects to submodules, consider the type and lower-level functionality of the port to which it is connected.

Another cause can be applying a pullup to an input port.

Using the following method, you can add a pullup without getting the above error:

1. Create a wire to connect the input to the pullup.

2. You must use a "keep" so that XST does not remove it.


input my_input;

wire temp;

assign temp = my_input; // synthesis attribute keep of temp is true;

PULLUP u1 (.O(temp));

This error could occur if a PULLUP, PULLDOWN, or KEEPER component is attached to an input signal on a schematic design. The ISE 8.1i Schematic Editor does not properly write out the Verilog netlist for these components.

You can avoid the error by applying the PULLUP/PULLDOWN/KEEPER constraint using any of the following methods:

- Use the CONSTRAINTS EDITOR GUI to place all PULLUP/PULLDOWN/KEEPER resistors on the appropriate signals.

- Place the PULLUP/PULLDOWN constraints on the appropriate net into the UCF file by using a text editor. The constraints would be entered as follows:

NET "<net_name>" PULLUP;

NET "<net_name>" PULLDOWN;

NET "<net_name>" KEEPER;

where <net_name> is the name of the input/3-state output signal.

- Place the PULLUP/PULLDOWN/KEEPER constraint on the signal port in the Schematic Editor entry tool, following these steps:

1. Select and highlight the appropriate net to which you wish to assign the PULLUP/PULLDOWN/KEEPER resistor. When you select it, right-click on the mouse and select "Object Properties."

2. From the options along the side of the GUI, select "New."

3. Under the ATTRIBUTE NAME, enter the type of resistor you wish to assign: PULLUP or PULLDOWN or KEEPER.

4. Under the ATTRIBUTE VALUE, enter TRUE/FALSE: TRUE = apply resistor type to net; FALSE = do not apply resistor type to net.

5. Once you have finished setting and entering the values for the signal, select "OK," then "Apply." This will apply the PULLUP/PULLDOWN/KEEPER resistor to the designated signal name.
AR# 14143
Date 03/17/2011
Status Archive
Type General Article
People Also Viewed