01.07.2013 Views

Xilinx Constraints Guide

Xilinx Constraints Guide

Xilinx Constraints Guide

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 4: <strong>Xilinx</strong> <strong>Constraints</strong><br />

KEEP (Keep)<br />

The KEEP (Keep) constraint:<br />

• Is an advanced mapping constraint.<br />

• Is a synthesis constraint.<br />

Architecture Support<br />

Applicable Elements<br />

When a design is mapped, some nets may be absorbed into logic blocks. When a net<br />

is absorbed into a block, it can no longer be seen in the physical design database. This<br />

may happen, for example, if the components connected to each side of a net are mapped<br />

into the same logic block. The net may then be absorbed into the block containing the<br />

components. KEEP prevents this from happening.<br />

KEEP is translated into an internal constraint known as NOMERGE when targeting an<br />

FPGA. Messaging from the implementation tools therefore refers to the system property<br />

NOMERGE, not KEEP. In addition to TRUE and FALSE, synthesis (XST) accepts and<br />

additional SOFT value that instructs the tool to preserve the designated net, but also<br />

prevents it from attaching a NOMERGE constraint to this net in the synthesized netlist.<br />

As a result, the net is preserved during synthesis, but implementation tools are given all<br />

freedom to handle it. Conceptually, you are specifying a KEEP=TRUE for synthesis only,<br />

but a KEEP=FALSE for implementation tools.<br />

Applies to all FPGA devices and all CPLD devices.<br />

Applies to signals.<br />

Propagation Rules<br />

Applies to the signal to which it is attached.<br />

Syntax Examples<br />

The following examples show how to use this constraint with particular tools or<br />

methods. If a tool or method is not listed, you cannot use this constraint with it.<br />

Schematic Syntax<br />

• Attach to a net<br />

• Attribute Name<br />

KEEP<br />

• Attribute Values<br />

TRUE<br />

FALSE<br />

SOFT (XST only)<br />

VHDL Syntax<br />

Declare the VHDL constraint as follows:<br />

attribute keep : string;<br />

Specify the VHDL constraint as follows:<br />

attribute keep of signal_name: signal is “{TRUE|FALSE|SOFT}”;<br />

For more information about basic VHDL syntax, see VHDL Attributes.<br />

<strong>Constraints</strong> <strong>Guide</strong><br />

150 www.xilinx.com UG625 (v. 13.2) July 6, 2011

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!