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

12.1 Constraints - UCF to PCF conversion examples (PERIOD, FROM:TO, LOCs, RPMs)

Description

This Answer Record describes equivalent Physical Constraints File (PCF) syntax for certain common User Constraints File (UCF) constraints; this is by no means a comprehensive list.

A number of constraints are impractical to create from scratch in the PCF, as they require the names of COMPs (CLBs or IOBs) or BELs (flip-flops, LUTs, TBUFs, etc.). If this information is unknown, it is possible to obtain it from the MAP report (".mrp") if the MAP_REPORT_DETAIL environment variable is set to "TRUE".

For the following, the string "_COMP" is used to indicate that a COMP name is required, and "_BEL" is used indicate BEL names (you must view the ".mrp" file to find the actual name).

NOTE: IOB COMPs are always named the same as the pad net (unless you add a BLKNM constraint), and an FF BEL is always named the same as the net on its Q output. For instance, given the following UCF OFFSET constraint:

NET "myinput" OFFSET = IN 55 AFTER "clk";

the net "myinput" and "clk" are the names of the pad nets of the input signal and the clock signal. As the IOB COMP name is identical to the pad net name, the equivalent PCF syntax would be:

COMP "mynet" OFFSET = IN 55 nS AFTER COMP "clk";

For more information, see (Xilinx Answer 2449), (Xilinx Answer 6662), and (Xilinx Answer 3416).

Solution

Timing constraints

==================



PERIOD

------------------------------------

Example #1: (Using the "simple" method)

UCF: NET "clk" PERIOD = 30 low 12;

PCF: NET "clk" PERIOD = 30 nS LOW 12 nS;



Example #2: (Using the "alternate" method)

UCF: TIMESPEC TS01 = PERIOD mygroup 30;

PCF: TS01 = PERIOD TIMEGRP "mygroup" 30 nS HIGH 50.000 % ;


(NOTE: Remember that "mygroup" must be previously defined with TNM.)



OFFSET

------------------------------------

UCF: NET "myinputnet" OFFSET = IN 55 AFTER "clk";

PCF: COMP "myinputnet" OFFSET = IN 55 nS AFTER COMP "clk";


(NOTE: IN/BEFORE, OUT/AFTER, and OUT/BEFORE are comparable.)



TNM/TIMEGRP

------------------------------------

Example #1: (using TNM)

UCF: INST "myinst" TNM = "A";

PCF: TIMEGRP "A" = BEL "**myinst_BEL**"; ##find BEL name



Example #2: (using TIMEGRP)

UCF: TIMEGRP "A" = FFS("myflop_output_net");

PCF: TIMEGRP "A" = BEL "myflop_output_net";



TIMESPEC (using predefined groups)

--------------------------------------------------------------------

UCF: TIMESPEC TS01 = FROM PADS TO FFS 50;

PCF: TIMEGRP "PADS" = PADS("*");

: TIMEGRP "FFS" = FFS("*");

: TS01=MAXDELAY FROM TIMEGRP "PADS" TO TIMEGRP "FFS" 50 nS;



TIMESPEC (using user-defined groups)

--------------------------------------------------------------------

Example #1: (using two user-defined groups)

UCF: TIMESPEC TS01 = FROM "A" TO "B" 50;

PCF: TS01=MAXDELAY FROM TIMEGRP "A" TO TIMEGRP "B" 50 nS;



Example #2: (using one user and one pre-defined group)

UCF: TIMESPEC TS01 = FROM "A" TO FFS(S) 50;

PCF: TIMEGRP "FFS(S)" = BEL "S" ;

: TS01=MAXDELAY FROM TIMEGRP "A" TO TIMEGRP "FFS(S)" 50 nS;


(NOTE: Remember that "A" and "B" must be previously defined with TNM/TIMEGRP.)



TIG (on net)

---------------------------

Example #1: (using net)

UCF: NET "mynet" TIG;

PCF: NET "mynet" TIG;



Example #2: (using source/destination)

UCF: TIMESPEC TSig = FROM "A" TO "B" TIG;

PCF: PATH "FROM A TO B" = FROM TIMEGRP "A" TO TIMEGRP "B";

: PATH "FROM A TO B" TIG;


(NOTE: Remember that "A" and "B" must be previously defined with TNM/TIMEGRP.)


Please provide feedback if this Answer Record meets your needs.



Placement constraints

=====================



LOC

------------------------------------

Example #1: (LOC to one pad)

UCF: NET "myinput" LOC = P6;

PCF: COMP "myinput" LOCATE = SITE "P6" LEVEL 1;



Example #2: (LOC to one of several pads)

UCF: NET "myinput" LOC = P6, P7, P8;

PCF: COMP "myinput" LOCATE = SITE "P6" SITE "P7" SITE "P8"

: LEVEL 1;



Example #3: (LOC to a range of CLBs)

UCF: INST "myflop" LOC = CLB_R3C4:CLB_R5C5;

PCF: COMP "**myflop_COMP**" LOCATE = SITE "CLB_R3C4:CLB_R5C5"

: LEVEL 4; ##



PROHIBIT

------------------------------------

UCF: CONFIG PROHIBIT = P6;

PCF: PROHIBIT = SITE "P6";



RLOC_ORIGIN

------------------------------------

Example #1: (LOC an RLOC prim)

UCF: INST "myprim" RLOC_ORIGIN = R9C8;

PCF: COMP "**myprim_COMP**" LOCATE=SITE "CLB_R11C10" LEVEL 1;


(NOTE: The above assumes "myprim" had a RLOC of R2C2 on it; R2C2+R9C8 = R11C10.)



Example #2: (LOC an RLOC macro that has multiple member COMPs)

UCF: INST "my_macro" RLOC_ORIGIN = R9C8;

PCF: MACRO "my_macro/hset" LOCATE=SITE "CLB_R11C10" LEVEL 1;


(NOTE1: The above assumes "my_macro" contains a prim with an RLOC of R2C2 on it; R2C2+R9C8 = R11C10. Generally, if a macro contains more than one member COMP that belongs to the RLOC set, the RLOC_ORIGIN value will be added to the value of the RLOC on the element with the lowest row (R) value. This is considered the origin. If two or more elements have the same row value and that value is the lowest, the column (C) value will be used to determine which is the origin.)


(NOTE2: The above assumes the name of the set is "hset." This is not true if you specify your own set name via the U_SET or HU_SET constraints. If you attached a U_SET to the elements, use "my_macro/u_set_name"; if you attached a HU_SET to the elements, use "hu_set_name" prefixed by the hierarchy.)



RLOC_RANGE

----------------------------------

Example #1: (LOC an RLOC prim)

UCF: INST "myprim" RLOC_ORIGIN = R9C8:R11C10;

PCF: COMP "**myprim_COMP**" LOCATE=SITE "CLB_R11C10":

"CLB_R13C12" LEVEL 4;


(NOTE: The above assumes "myprim" had an RLOC of R2C2 on it; R2C2+R9C8=R11C10, R2C2+R11C10=R13C12;)



Example #2: (LOC an RLOC macro that has multiple member COMPs)

UCF: INST "my_macro" RLOC_ORIGIN = R9C8:R11C10;

PCF: COMPGRP "$macro_my_macro/hset" = MACRO "my_macro/hset";

: COMPGRP "$macro_my_macro/hset" LOCATE=SITE "CLB_R11C10":

"CLB_R13C12" LEVEL 4;


(NOTE: See the note for Example #2 of RLOC_ORIGIN. Also, note that the string "$macro_" should be added to the macro name.)



UCF constraints that are not available in PCF

====================================


These are the more common constraints (other constraints that cannot be put into the PCF also exist).


BLKNM/HBLKNM, FAST, RLOC, U_SET/HU_SET
AR# 3753
Date Created 08/21/2007
Last Updated 12/15/2012
Status Active
Type General Article
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
  • ISE Design Suite - 12.2
  • Less