##############################################
#      BASIC UCF SYNTAX EXAMPLES V2.1.6      #
##############################################
#
# The "#" symbol is a comment character.   To use this sample file, find the
# specification necessary, remove the comment character (#) from the beginning
# of the line, and modify the line (if necessary) to fit your design.
#
#              TIMING SPECIFICATIONS
#
# Timing specifications can be applied to the entire device (global) or to
# specific groups in your design (called "time groups'). The time groups are
# declared in two basic ways.
#
# Method 1: Based on a net name, where 'my_net' is a net that touches all the
#           logic to be grouped in to 'logic_grp'. Example:
#NET my_net TNM_NET = logic_grp ;
#
# Method 2: Group using the key word 'TIMEGRP' and declare using the names of
#           logic in your design. Example:
#TIMEGRP group_name = FFS ("U1/*");
#           creates a group called 'group_name' for all flip-flops within
#           the hierarchical block called U1. Wildcards are valid.
#
# Grouping is very important because it lets you tell the software which parts
# of a design run at which speeds.  For the majority of the designs with only
# one clock, use simple global constraints.
#
# The type of grouping constraint you use can vary depending on the synthesis
# tools you are using.  Foundation Express does better with Method 2.
#
#
############################################################
# Internal to the device clock speed specifications - Tsys #
############################################################
#
# data      _________      /^^^^^\       _________   out
# ----------| D   Q |-----{ LOGIC } -----| D   Q |------
#           |       |      \vvvvv/       |       |
#        ---|> CLK  |                 ---|> CLK  |
# clock  |  ---------                 |  ---------
# ------------------------------------
#
# ---------------
# Single Clock
# ---------------
#
# ----------------
# PERIOD TIME-SPEC
# ----------------
# The PERIOD spec. covers all timing paths that start or end at a
# register, latch, or synchronous RAM which are clocked by the reference
# net (excluding pad destinations).  Also covered is the setup
# requirement of the synchronous element relative to other elements
# (ex. flip flops, pads, etc...).
# NOTE:  The default unit for time is nanoseconds.
#
#NET clock PERIOD = 50ns ;
NET "clkin_p" PERIOD = 20 ns ;
#
#       -OR-
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
# FROM:TO style timespecs can be used to constrain paths between time
# groups.  NOTE:  Keywords:  RAMS, FFS, PADS, and LATCHES are predefined
# time groups used to specify all elements of each type in a design.
#TIMEGRP RFFS = RISING FFS ("*");  // creates a rising group called RFFS
#TIMEGRP FFFS = FALLING FFS ("*");  // creates a falling group called FFFS
#TIMESPEC TSF2F  = FROM : FFS   : TO : FFS   : 50 ns; // Flip-flips with the same edge
#TIMESPEC TSR2F  = FROM : RFFS  : TO : FFFS  : 25 ns; // rising edge to falling edge
#TIMESPEC TSF2R  = FROM : FFFS  : TO : RFFS  : 25 ns; // falling edge to rising edge
#
# ---------------
# Multiple Clocks
# ---------------
# Requires a combination of the 'Period' and 'FROM:TO' type time specifications
#NET clock1 TNM_NET = clk1_grp ;
#NET clock2 TNM_NET = clk2_grp ;
#
#TIMESPEC TS_clk1 = PERIOD : clk1_grp : 50 ;
#TIMESPEC TS_clk2 = PERIOD : clk2_grp : 30 ;
#TIMESPEC TS_ck1_2_ck2 = FROM : clk1_grp : TO : clk2_grp : 50 ;
#TIMESPEC TS_ck2_2_ck1 = FROM : clk2_grp : TO : clk1_grp : 30 ;
#
#
############################################################
# CLOCK TO OUT specifications - Tco                        #
############################################################
#
# from      _________      /^^^^^\       --------\
# ----------| D   Q |-----{ LOGIC } -----| Pad    >
# PLD       |       |      \vvvvv/       --------/
#        ---|> CLK  |
# clock  |  ---------
# --------
#
# ----------------
# OFFSET TIME-SPEC
# ----------------
# To automatically include clock buffer/routing delay in your
# clock-to-out timing specifications, use OFFSET constraints .
# For an output where the maximum clock-to-out (Tco) is 25 ns:
#
#NET out_net_name OFFSET = OUT 25 AFTER clock_net_name ;
#
#      -OR-
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
#TIMESPEC TSF2P  = FROM : FFS   : TO : PADS  : 25 ns;
# Note that FROM: FFS : TO: PADS constraints start the delay analysis
# at the flip flop itself, and not the clock input pin.  The recommended
# method to create a clock-to-out constraint is to use an OFFSET constraint.
#
#
############################################################
# Pad to Flip-Flop speed specifications - Tsu              #
############################################################
#
# ------\         /^^^^^\       _________   into PLD
# |pad   >-------{ LOGIC } -----| D   Q |------
# ------/         \vvvvv/       |       |
#                            ---|> CLK  |
# clock                      |  ---------
# ----------------------------
#
# ----------------
# OFFSET TIME-SPEC
# ----------------
# To automatically account for clock delay in your input setup timing
# specifications, use OFFSET constraints.
# For an input where the maximum setup time is 25 ns:
#NET in_net_name OFFSET = IN 25 BEFORE clock_net_name ;
#
#      -OR-
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
#TIMESPEC TSP2F  = FROM : PADS  : TO : FFS   : 25 ns;
# Note that FROM: PADS : TO: FFS constraints do not take into account any
# delay for the clock path.  The recommended method to create an input
# setup time constraint is to use an OFFSET constraint.
#
#
############################################################
# Pad to Pad speed specifications - Tpd                    #
############################################################
#
# ------\         /^^^^^\       -------\
# |pad   >-------{ LOGIC } -----| pad   >
# ------/         \vvvvv/       -------/
#
# ------------------
# FROM:TO TIME-SPECs
# ------------------
#TIMESPEC TSP2P  = FROM : PADS  : TO : PADS  : 125 ns;
#
#
############################################################
# Other timing specifications                              #
############################################################
#
# -------------
# TIMING IGNORE
# -------------
# If you can ignore timing of paths, use Timing Ignore (TIG). NOTE: The
# "*" character is a wild card, which can be used for bus names.  A "?"
# character can be used to wild-card one character.
# Ignore timing of net reset_n:
#NET : reset_n : TIG ;
#
# Ignore data_reg(7:0) net in instance mux_mem:
#NET : mux_mem/data_reg* : TIG ;
#
# Ignore data_reg(7:0) net in instance mux_mem as related to a TIMESPEC
# named TS01 only:
#NET : mux_mem/data_reg* : TIG = TS01 ;
#
# Ignore data1_sig and data2_sig nets:
#NET : data?_sig : TIG ;
#
# ---------------
# PATH EXCEPTIONS
# ---------------
# If your design has outputs that can be slower than others, you can
# create specific timespecs similar to this example for output nets
# named out_data(7:0) and irq_n:
#TIMEGRP slow_outs = PADS(out_data* : irq_n) ;
#TIMEGRP fast_outs = PADS : EXCEPT : slow_outs ;
#TIMESPEC TS08 = FROM : FFS : TO : fast_outs : 22 ;
#TIMESPEC TS09 = FROM : FFS : TO : slow_outs : 75 ;
#
# If you have multi-cycle FF to FF paths, you can create a time group
# using either the TIMEGRP or TNM statements.
#
# WARNING:  Many VHDL/Verilog synthesizers do not predictably name flip
# flop Q output nets.  Most synthesizers do assign predictable instance
# names to flip flops, however.
#
# TIMEGRP example:
#TIMEGRP slowffs = FFS(inst_path/ff_q_output_net1* :
#inst_path/ff_q_output_net2*);
#
# TNM attached to instance example:
#INST inst_path/ff_instance_name1_reg* TNM = slowffs ;
#INST inst_path/ff_instance_name2_reg* TNM = slowffs ;
#
# If a FF clock-enable is used on all flip flops of a multi-cycle path,
# you can attach TNM to the clock enable net.  NOTE:  TNM attached to a
# net "forward traces" to any FF, LATCH, RAM, or PAD attached to the
# net.
#NET ff_clock_enable_net TNM = slowffs ;
#
# Example of using "slowffs" timegroup, in a FROM:TO timespec, with
# either of the three timegroup methods shown above:
#TIMESPEC TS10 = FROM : slowffs : TO : FFS : 100 ;
#
# Constrain the skew or delay associate with a net.
#NET any_net_name MAXSKEW = 7 ;
#NET any_net_name MAXDELAY = 20 ns;
#
#
# Constraint priority in your .ucf file is as follows:
#
#    highest 1.  Timing Ignore (TIG)
#            2.  FROM : THRU : TO specs
#            3.  FROM : TO specs
#    lowest  4.  PERIOD specs
#
# See the on-line "Library Reference Guide" document for
# additional timespec features and more information.
#
#
############################################################
#                                                                                                                    #
#         LOCATION and ATTRIBUTE SPECIFICATIONS            #
#                                                                                                                    #
############################################################
# Pin and CLB location locking constraints                 #
############################################################
#
# -----------------------
# Assign an IO pin number
# -----------------------
#INST io_buf_instance_name  LOC = P110 ;
#NET io_net_name  LOC = P111 ;
#
# -----------------------
# Assign a signal to a range of I/O pins
# -----------------------
#NET "signal_name" LOC=P32, P33, P34;
#
# -----------------------
# Place a logic element(called a BEL) in a specific CLB location.
# BEL = FF, LUT, RAM, etc...
# -----------------------
#INST instance_path/BEL_inst_name  LOC = CLB_R17C36 ;
#
# -----------------------
# Place CLB in rectangular area from CLB R1C1 to CLB R5C7
# -----------------------
#INST /U1/U2/reg<0> LOC=clb_r1c1:clb_r5c7;
#
# -----------------------
# Place hierarchical logic block in rectangular area from CLB R1C1 to CLB R5C7
# -----------------------
#INST /U1* LOC=clb_r1c1:clb_r5c7;
#
# -----------------------
# Prohibit IO pin P26 or CLBR5C3 from being used:
# -----------------------
#CONFIG PROHIBIT = P26 ;
#CONFIG PROHIBIT = CLB_R5C3 ;
CONFIG PROHIBIT = "P24";
CONFIG PROHIBIT = "P107";
CONFIG PROHIBIT = "P108";
CONFIG PROHIBIT = "P115";
CONFIG PROHIBIT = "P119";
CONFIG PROHIBIT = "P126";
CONFIG PROHIBIT = "P129";
CONFIG PROHIBIT = "P132";
CONFIG PROHIBIT = "P135";
CONFIG PROHIBIT = "P142";
CONFIG PROHIBIT = "P146";
CONFIG PROHIBIT = "P153";
CONFIG PROHIBIT = "P154";
CONFIG PROHIBIT = "P160";
CONFIG PROHIBIT = "P161";
# Config Prohibit is very important for forcing the software to not use critical
# configuration pins like INIT or DOUT on the FPGA.  The Mode pins and JTAG
# Pins require a special pad so they will not be available to this constraint
#
# -----------------------
# Assign an OBUF to be FAST or SLOW:
# -----------------------
#INST obuf_instance_name FAST ;
#INST obuf_instance_name SLOW ;
#
# -----------------------
# FPGAs only:  IOB input Flip-flop delay specification
# -----------------------
# Declare an IOB input FF delay (default = MAXDELAY).
# NOTE:  MEDDELAY/NODELAY can be attached to a CLB FF that is pushed
# into an IOB by the "map -pr i" option.
#INST input_ff_instance_name MEDDELAY ;
#INST input_ff_instance_name NODELAY ;
#
# -----------------------
# Assign Global Clock Buffers Lower Left Right Side
# -----------------------
# INST gbuf1 LOC=SSW
#
# #
#NET "clkin_p"      LOC =  "P77";
#NET "done_in"      LOC =  "P102";
#NET "done_out"     LOC =  "P101";
#PINLOCK_BEGIN
#Tue Dec 11 21:11:23 2001
NET "mcevrst" LOC = "P49";
NET "difevr" LOC = "P48";
NET "db<2>" LOC = "P47";
NET "db<3>" LOC = "P46";
NET "db<5>" LOC = "P45";
NET "db<4>" LOC = "P44";
NET "pulse<0>" LOC = "P43";
NET "am0" LOC = "P42";
NET "db<0>" LOC = "P41";
NET "delay_0<2>" LOC = "P37";
NET "am4" LOC = "P36";
NET "jtadd<1>" LOC = "P35";
NET "jtadd<0>" LOC = "P34";
NET "delay_0<3>" LOC = "P33";
NET "delay_0<5>" LOC = "P31";
NET "delay_0<4>" LOC = "P30";
NET "jtms" LOC = "P29";
NET "delay_0<1>" LOC = "P27";
NET "delay_0<0>" LOC = "P23";
NET "plsttl<0>" LOC = "P22";
NET "db<1>" LOC = "P21";
NET "jtadd<2>" LOC = "P20";
NET "db<6>" LOC = "P18";
NET "db<13>" LOC = "P17";
NET "add_in<5>" LOC = "P16";
NET "db<7>" LOC = "P15";
NET "db<12>" LOC = "P14";
NET "db<14>" LOC = "P10";
NET "db<15>" LOC = "P9";
NET "db<11>" LOC = "P8";
NET "tp1" LOC = "P7";
NET "bcrsttl" LOC = "P6";
NET "trgttc" LOC = "P5";
NET "trgled" LOC = "P4";
NET "mcbcrst" LOC = "P3";
NET "sysreset" LOC = "P206";
NET "am1" LOC = "P57";
NET "trgros" LOC = "P205";
NET "write" LOC = "P58";
NET "mctrg" LOC = "P204";
NET "brd_sel" LOC = "P59";
NET "add_in<3>" LOC = "P203";
NET "delay_0<6>" LOC = "P60";
NET "tdio" LOC = "P202";
NET "jtdi" LOC = "P61";
NET "add_in<4>" LOC = "P201";
NET "am5" LOC = "P62";
NET "delay_1<1>" LOC = "P200";
NET "jtadd<3>" LOC = "P63";
NET "diftrg" LOC = "P199";
NET "am3" LOC = "P67";
NET "add_in<2>" LOC = "P195";
NET "lword" LOC = "P68";
NET "add_in<6>" LOC = "P194";
NET "jtck" LOC = "P69";
NET "pulse<1>" LOC = "P193";
NET "ron<1>" LOC = "P70";
NET "trg_dly_p" LOC = "P192";
NET "g245" LOC = "P71";
NET "plsttl<1>" LOC = "P191";
NET "ds1" LOC = "P73";
NET "int_ext<0>" LOC = "P189";
NET "iackin" LOC = "P74";
NET "as" LOC = "P188";
NET "jtdo" LOC = "P75";
NET "int_ext<1>" LOC = "P187";
NET "clkin_p" LOC = "P77";
NET "locked" LOC = "P81";
NET "dtack" LOC = "P181";
NET "ron<6>" LOC = "P82";
NET "intled" LOC = "P180";
NET "ds0" LOC = "P83";
NET "iack" LOC = "P179";
NET "add_in<1>" LOC = "P84";
NET "iackout" LOC = "P178";
NET "delay_1<2>" LOC = "P86";
NET "irq<1>" LOC = "P176";
NET "trgnim" LOC = "P87";
NET "irq<2>" LOC = "P175";
NET "trganal" LOC = "P88";
NET "irq<4>" LOC = "P174";
NET "delay_1<6>" LOC = "P89";
NET "irq<3>" LOC = "P173";
NET "delay_1<5>" LOC = "P90";
NET "irq<6>" LOC = "P172";
NET "add_in<0>" LOC = "P94";
NET "trgttl" LOC = "P95";
NET "irq<5>" LOC = "P167";
NET "delay_1<3>" LOC = "P96";
NET "difbcr" LOC = "P166";
NET "robrsttl" LOC = "P164";
NET "tp3" LOC = "P163";
NET "done_out" LOC = "P101";
NET "done_in" LOC = "P102";
NET "evrsttl" LOC = "P111";
NET "delay_1<4>" LOC = "P112";
NET "ron<0>" LOC = "P113";
NET "jroberr" LOC = "P114";
NET "ron<2>" LOC = "P120";
NET "delay_1<0>" LOC = "P121";
NET "jtrktm" LOC = "P122";
NET "ron<3>" LOC = "P123";
NET "jtrkrst" LOC = "P125";
NET "fltb" LOC = "P127";
NET "ron<4>" LOC = "P133";
NET "ron<5>" LOC = "P134";
NET "difrst" LOC = "P136";
NET "veto" LOC = "P138";
NET "jtrkadv" LOC = "P139";
NET "db<9>" LOC = "P140";
NET "db<10>" LOC = "P141";
NET "irq<7>" LOC = "P147";
NET "db<8>" LOC = "P148";
NET "tp2" LOC = "P151";
#PINLOCK_END
#NET "clkin_p" TNM_NET = "clkin_p";
NET "jtck" DRIVE = 24;
NET "jtdi" DRIVE = 24;
NET "jtms" DRIVE = 24;
NET "jtrkadv" DRIVE = 24;
NET "jtrkrst" DRIVE = 24;
NET "jtrktm" DRIVE = 24;
