📄 constraints.txt
字号:
############################################### BASIC UCF SYNTAX EXAMPLES V2.1.5 ################################################# TIMING SPECIFICATIONS## Timing specifications can be applied to the entire device (global) or to# specific groups of logic in your PLD 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 touchs all the# logic to be grouped in to 'logic_grp'. Example:#NET my_net TNM_NET = logic_grp## Method 2: Group uing 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 with in# 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 the very simple global constraints.## The type of grouping constraint you use can vary depending on the synthesis# tools you are using. For example, Synplicity does well with Method 1, while# FPGA Express does beter 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## -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 Heirarchial 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 is very important for frocing 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 availabe 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 specifcation# -----------------------# 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#
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -