ID 683641
Date 9/26/2022
Public

## 8.5. ECO Command Limitations

The ECO commands have the following limitations due to connection dependencies within Intel FPGA devices.

### Create a new LUT in an exact location

• You cannot use ECO commands to modify dedicated connections.
• You cannot modify dedicated connections within a single ALM. This limitation applies to direct connections between LUT and flip-flop nodes.
• You can connect from or to a Hyper-Register. However, you cannot remove connections from or to a Hyper-Register because removing a connection from a Hyper-Register would leave the routing dangling. As an alternative, you can use make_connection to change a Hyper-Register connection immediately, without removing the previous connection first.
• Use of the place_node command with location arguments does not overwrite Partial Reconfiguration region constraints.
• If a LAB already has the maximum number of legal connections where a node is placed, the place_node or make_connection commands can fail, preventing the connection to the first placed node that cannot be legalized. You can then either move the original node to a different location, or move other nodes from the LAB to free up routing resources.
• The Fitter may fail to apply some I/O related ECO modifications, such as modify_io_slew_rate, modify_io_current_strength, and modify_io_delay_chain, if called using a command-line Tcl script or in interactive context. That is, any case that calls the eco_load_design command directly. To ensure all I/O modifications are applied successfully, use the standard ECO Tcl script approach this document describes.

The recommended order for creating and placing new LUTs or new flipflops is:

1. Create the node by using the create_new_node command.
2. Make connections to and from the node by using the make_connection command.
4. Place the node by using the place_node command.

This flow ensures that analysis includes all routing requirements when determining a legal placement for the new node. For example:

set lut_name new_lut
create_new_node –name $lut_name –type lut make_connection –from input1 –to$lut_name –port DATAA
make_connection –from input2 –to $lut_name –port DATAB make_connection –from$lut_name –to output_dest –port DATAD
modify_lutmask –to $lut_name –eqn {A&B} place_node –name$lut_name –location “X80 Y80 X85 Y95”

### Create a new Flipflop in an exact location

set ff_name new_ff
create_new_node –name $ff_name –type ff make_connection –from input1 –to$ff_name –port DATAA
make_connection –from input2 –to $ff_name –port DATAB make_connection –from$ff_name –to output_dest –port DATAD
modify_lutmask –to $ff_name –eqn {A&B} place_node –name$ff_name –location “X80 Y80 X85 Y95”


Note: To minimize issues with name matching caused by escaped characters, it can be useful to surround entity names with {} characters, instead of "". This technique is particularly useful if entity names contain backslashes or any other special characters.