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

11.5 PACK - What can cause an I/O register to fail to pack into an IOB, ILOGIC, or OLOGIC component?


The following warning message occurs:

"WARNING:Pack:680 - The register symbol xyz has the property IOB=TRUE, but failed to join an I/O component. Please try constraining the register together with a valid pad or I/O buffer symbol."

Why does the register fail to be packed into an I/O component?

What are the restrictions involved, and how can I debug this problem?


There are a number of restrictions that can cause an I/O register pack can fail:

  • The register must be connected to an I/O buffer to be eligible for the I/O component pack. Output FFs should drive only the output buffer since there is no resource to allow the register to drive back out into the fabric.
  • The register's control signals must be compatible with the control signals of other registers in the I/O component. Examine the target I/O component using the Logic Block Editor (LBE) in FPGA Editor (select comp, editblock) to get a graphical representation of the control set connectivity. Compare the control signals involved with the problem register. Sometimes fanout limits during synthesis or Global Optimization can lead to logic replication of the logic driving control signals. If the resulting logically equivalent nets are not partitioned correctly, this can break I/O register packs that would have otherwise worked.
  • If the I/O register is in a different hierarchy than the rest of the I/O logic, the I/O register pack can be blocked by KEEP HIERARCHY constraints. Run MAP again with the "-ignore_keep_hierarchy" option to test for this.
  • If the I/O register belongs to an area group that is range constrained to slice logic, this prevents the I/O component pack. This can be overridden with a more specific LOC constraint to an I/O Site.
  • A KEEP net constraint on the net between the I/O register and I/O buffer can prevent the I/O component pack.

As a debug technique, apply the same BLKNM constraint to I/O register and I/O buffer. This hard constraint results in a more detailed message with information about why the I/O component pack is not possible.

Example UCF syntax:

INST "problem_ff" BLKNM = XYZ ;
INST "problem_iobuf" BLKNM = XYZ ;

AR# 35520
Date Created 05/03/2010
Last Updated 05/07/2010
Status Active
Type General Article
  • 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
  • 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