Return to Support Page
 homesearchagentssupportask xilinxmap

Answers Database


M1 Constraints: UCF to PCF conversion examples


Record #3753

Problem Title:
M1 Constraints: UCF to PCF conversion examples


Problem Description:
Keywords: ucf, pcf

Urgency: standard


The following will describe the equivalent PCF syntax for
*some* of the more common UCF constraints. It is by no means
a comprehensive list.
Some constraints are impractical to attempt to create from
scratch in the PCF, as some will require the names of COMPs
(CLBs or IOBs) or BELs (flops, LUTs, tbufs, etc). If this is
not known, it is possible to obtain this from the MAP report
(.mrp) if MAP_REPORT_DETAIL env. variable is set to TRUE.
  For the following, the string "_COMP" will be used to indicate that a COMP nam
e is required, and "_BEL" for BEL
names. You must look in the .mrp file to find the actual name.
However, take note: IOB COMPs are always named the same as the
pad net (unless you add a BLKNM constraint), and flop BELs are
always named the same as the net on it's Q output. So, if you
have the following UCF OFFSET constraint, for instance:

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. Since the IOB COMP name
is identical to the pad net name, this would be the equivalent
PCF syntax:

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


Solution 1:

Timing constraints
==================

PERIOD
------------------------------------
Example#1: (Using "simple" method)
UCF: NET "clk" PERIOD = 30 low 12;
PCF: NET "clk" PERIOD = 30 nS LOW 12 nS;

Example#2: (Using "alternate" method)
UCF: TIMESPEC TS01 = PERIOD mygroup 30;
PCF: TS01 = PERIOD TIMEGRP "mygroup" 30 nS HIGH 50.000 % ;

Note: Remember "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 A,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 A,B must be previously defined with TNM/TIMEGRP




Solution 2:

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 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: 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;

Note: Above assumes "my_macro" contained a prim with a
      RLOC of R2C2 on it; R2C2+R9C8 = R11C10.
      In general, if 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, then it will use the column (C) value to
      determine which is the origin.

Also note: Above assumes the name of the set is "hset".
      This is not true if the user specifies his/her
      own set name via the U_SET or HU_SET constraints.
      If you attached a U_SET to the elements, use that
      string name; if you attached a HU_SET to the elements,
      use that string 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: above assumes "myprim" had a 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 note for Example#2 of RLOC_ORIGIN.
      Also note that string "$macro_" should be added to
      the macro name.










Solution 3:

UCF constraints not available in PCF
====================================

Note: These are the more common constraints.
 There are other constraints that cannot be put into the PCF.

BLKNM/HBLKNM, FAST, RLOC, U_SET/HU_SET



End of Record #3753

For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals!

© 1998 Xilinx, Inc. All rights reserved
Trademarks and Patents