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

11.5 Pack - What are some of the constraints that can be used to control component packing in ISE?

Description

I would like to have more control over the packing of my logic into slice components. What constraints are available to provide this control?

Solution

You can use the following constraints to control component packing. A brief description of the functionality is provided. For more details, see the Constraints Guide (U625).

AREA_GROUP - Normally thought of as a placement constraint, this constraint also affects packing behavior when combined with a GROUP=CLOSED constraint, which prevents logic outside the area group from being packed into components with logic inside the area group. If no range is defined for the area group, this combination of constraints only affects the pack behavior.

UCF syntax example:
INST "inst_name" AREA_GROUP=groupname ;
AREA_GROUP "groupname" GROUP=CLOSED;

BEL - Assigns a Basic Element of Logic (BEL) location within a component.

UCF syntax example:
INST "inst_name" BEL = FFX ;

BLKNM - A grouping constraint that causes all instances with the same BLKNM value to be packed into the same component. It can also be used to ensure that two instances are not packed together by applying different values to the instances. Also, see HBLKNM for a hierarchical version and XBLKNM for an exclusive version of this constraint.

UCF syntax example:
INST "inst_name1" BLKNM=XYZ ;
INST "inst_name2" BLKNM=XYZ ;

HBLKNM - This constraint is the same as BLKNM except that it only groups instances with the same hierarchy. This allows the use of the constraint in multiple instances of a module without conflict.

UCF syntax example:
INST "inst_name1" HBLKNM=XYZ ;
INST "inst_name2" HBLKNM=XYZ ;

HU_SET - This constraint is a hierarchical version of the U_SET constraint that groups instances into RPM macros. This allows the use of the constraint in multiple instances of a module without conflict.

UCF syntax example:
INST "inst_name1" HU_SET=macro1 ;
INST "inst_name2" HU_SET=macro1 ;

IOB - Determines whether a FF that is eligible for packing into an IOB, ILOGIC or OLOGIC component is packed into that component or into fabric logic, usually a slice component.

UCF syntax example:
INST "inst_name1" IOB=TRUE ; # Pack FF into IO component, warn if pack fails due to ineligibility
INST "inst_name2" IOB=FALSE ; # Do not pack FF into IO component,
INST "inst_name2" IOB=FORCE ; # Pack FF into IO component, error if pack fails due to ineligibility

KEEP - Net constraint that blocks any pack that would cause the net to be entirely absorbed into that component.

UCF syntax example:
NET "net_name" KEEP ;

KEEP_HIERARCHY - Used to turn off KEEP HIERARCHY constraint passed by synthesis tools to allow packs that would not otherwise occur.

UCF syntax example:
INST "inst_name1" KEEP_HIERARCHY=FALSE ;

LOC - This placement constraint also determines packing behavior because instances with the same LOC value will be packed together into the same component.

UCF syntax example:
INST "inst_name1" LOC=A5 ;
INST "inst_name2" LOC=A5 ;

LOCK_PINS - Used to define the pin mapping from the logical LUT to the physical LUT and lock that usage by blocking optimization and pin-swapping.

UCF syntax example:
INST "inst_name1" LOCK_PINS ; # Locks to LUT pin usage in logical design
INST "inst_name2" LOCK_PINS=I0:A4,I1:A3,I2:A2,I3:A1 ; # Locks to specified pin usage

LUTNM - Two LUTs with the same LUTNM value will be packed into the same LUT complex. If a LUT has a unique LUTNM value, it will not be automatically combined with another LUT.

UCF syntax example:
INST "inst_name1" LUTNM=XYZ ;
INST "inst_name2" LUTNM=XYZ ;

RLOC - Assigns a relative offset to an instance in an RPM macro. The macro set is either made up of the default set of all RLOC'd instances within a macro or based on a set membership defined by U_SET or HU_SET constraints.

UCF syntax example:
INST "inst_name1" RLOC=x0y0 ;
INST "inst_name2" RLOC=x0y1 ;

U_SET - A grouping constraint that is used in combination with RLOC constraints to group instances into an RPM macro. Also see HU_SET for a hierarchical version. Use this version to combine instances from multiple hierarchies into a macro.

UCF syntax example:
INST "inst_name1" HU_SET=macro1 ;
INST "inst_name2" HU_SET=macro1 ;

USE_RLOC - This constraint is used to override an RLOC constraint imbedded in the netlist, removing it from the RPM macro.

UCF syntax example:
INST "inst_name" USE_RLOC = FALSE ;

XBLKNM - The same as BLKNM except that the constraint is exclusive. All instances with the same XBLKNM value will be packed together and no unconstrained logic will be added to the component.

UCF syntax example:
INST "inst_name1" BLKNM=XYZ ;
INST "inst_name2" BLKNM=XYZ ;

AR# 35509
Date Created 05/07/2010
Last Updated 12/15/2012
Status Active
Type General Article
Devices
  • Spartan-3
  • Spartan-3 XA
  • Spartan-3A
  • More
  • Spartan-3A DSP
  • Spartan-3AN
  • Spartan-3E
  • Spartan-6 LX
  • Spartan-6 LXT
  • Virtex-5 FXT
  • Virtex-5 LX
  • Virtex-5 LXT
  • Virtex-5 SXT
  • Virtex-5 TXT
  • Virtex-5Q
  • Virtex-6 CXT
  • Virtex-6 HXT
  • Virtex-6 LX
  • Virtex-6 LXT
  • Virtex-6 SXT
  • Less
Tools
  • ISE Design Suite - 11.1
  • ISE Design Suite - 11.2
  • ISE Design Suite - 11.3
  • More
  • ISE Design Suite - 11.4
  • ISE Design Suite - 11.5
  • ISE Design Suite - 12.1
  • Less