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

12.1 约束/时序 - 面向设计配置和时序约束的基础用户约束文件 (UCF) 语法范例

Description

以下为通用用户约束文件 (UCF) 指令的概要。如需了解完整描述,敬请查看 约束指南
http://www.xilinx.com/support/software_manuals.htm

了解更多信息,敬请查看 (Xilinx 答复 3416)(Xilinx 答复 3753)、 和 (Xilinx 答复 6662)

解决方案

时序规范的基础 UCF Syntax 实例

PERIOD TIME-SPEC

PERIOD 规范涵盖开始或终止于寄存器、锁存器或同步 RAM 并由参考网提供时钟控制的所有时序路径(管脚目的地除外)。 另外它还涵盖与其它元件有关的同步元件的设置要求(例如触发器等)。

注:时间的默认单位是十亿分之一秒。

NET clk20MHz PERIOD = 50 ;
NET clk50mhz TNM = registers_50mhz ;
TIMESPEC TS01 = PERIOD registers_50mhz 20 ;

FROM:TO TIME-SPECs

FROM:TO style time specs - 用于约束时间组间路径

注:RAMS、FFS、PADS 和 LATCHES 这几个关键字是预先定义的时间组,用来统一指代设计中的每类元件。


TIMESPEC TS02 = FROM : PADS : TO : FFS : 36 ;
TIMESPEC TS03 = FROM : FFS : TO : PADS : 36 ns ;
TIMESPEC TS04 = FROM : PADS : TO : PADS : 66 ;
TIMESPEC TS05 = FROM : PADS : TO : RAMS : 36 ;
TIMESPEC TS06 = FROM : RAMS : TO : PADS : 35.5 ;


注: 预定义的时间组 LATCHES 和 RAMS 不适用于 CPLD 设计。


OFFSET TIMESPEC

如欲了解有关 OFFSET 的更多详情,敬请查看 Xilinx WP237 “什么是 OFFSET 约束条件":
http://china.xilinx.com/xlnx/xweb/xil_publications_display.jsp?category=White+Papers

为了自动在 "PADS:TO:<synchronous element> 或 <synchronous element>:TO:PADS 时序规范中包含时钟缓冲器/布线延迟,应使用 OFFSET 约束而不是 FROM:TO 约束。


如果输入中驱动器件的最大 clock-to-out (Tco) 是 10 纳秒:

NET in_net_name OFFSET = IN : 10 : AFTER : clk_net_name ;


如果输出中被驱动器件的最小设定时间 (Tsu) 是 5 纳秒:

NET out_net_name OFFSET = OUT : 5 : BEFORE : clk_net_name ;


TIMING IGNORE

如果路径的时序可以被忽略,则使用 Timing Ignore (TIG)。

注:您可以使用 "*" 字符作为总线的通用名。您可使用一个 "?" 字符作为单字符的通用名。


如果忽略 net "reset_n" 的时序:

NET : reset_n : TIG ;


如果忽略实例 "mux_mem"中的 data_reg(7:0) net:

NET : mux_mem/data_reg* : TIG ;


如果忽略仅与名为 TS01 的TIMESPEC 相关的 "mux_mem" 实例的 data_reg(7:0) net:

NET : mux_mem/data_reg* : TIG = TS01 ;


如果忽略 "data1_sig" 和 "data2_sig" net:

NET : data?_sig : TIG ;


路径例外情况

如果您的设计中包含比其它输出更慢的输出,您可以为名为 "out_data(7:0)" 和 "irq_n"的输出网络创建与本例类似的特定 TIMESPEC:


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 ;


如果存在多周期 FF-to-FF 路径,您可利用 TIMEGRP 或 TNM 声明创建一个时间组。


警告: 很多 VHDL/Verilog 综合器不会以预测的方式为触发器 Q 输出网络命名。 然而,大部分综合器会为触发器分配预测实例名。


TIMEGRP example:

TIMEGRP slowffs = FFS(inst_path/ff_q_output_net1* :
inst_path/ff_q_output_net2*);


附于实例的 TNM :

INST inst_path/ff_instance_name1_reg* TNM = slowffs ;
INST inst_path/ff_instance_name2_reg* TNM = slowffs ;


如果 FF clock-enable 用于多周期路径的所有触发器上, 您可将 TNM 附于时钟使能网络。

注:TNM 附于通到 FF、LATCH、RAM 的网络"前向迹线",或 PAD 附于网络。


NET ff_clock_enable_net TNM = slowffs ;


以下实例通过上述三个时间组方法中的任意一个使用 FROM:TO TIMESPEC 中的"slowffs" 时间组

TIMESPEC TS10 = FROM : slowffs : TO : FFS : 100 ;


偏移控制

为了约束与网络有关的偏移或延迟:

NET any_net_name MAXSKEW = 7 ;
NET any_net_name MAXDELAY = 20 ns;


优先

如欲了解更多详情,敬请访问 (Xilinx 答复 5747)

请提供反馈,让我们了解本答复记录如何解决您的需求。


指定逻辑或 I/O 的布局约束

分配或禁止 I/O 引脚数

分配 I/O 引脚数:

PLCC/PQFP 封装:

NET io_net_name LOC = P111 ;
NET HIERARCHY_BLOCK/io_net_name LOC = P44 ;


PGA/BGA 封装:

NET io_net_name LOC = A11 ;
NET HIERARCHY_BLOCK/io_net_name LOC = C12 ;

注: "P" 只与 PLCC/PQFP 封装一起使用。


将一个 I/O 引脚指定给若干个选定的引脚位置:

下面的实例将 "io_net_name" 分配给 P4、P5 或 P6:

NET io_net_name LOC = P4, P5, P6 ;


为了禁止 I/O 引脚 C26 或 CLBR5C3 被使用:

CONFIG PROHIBIT = C26 ;
CONFIG PROHIBIT = CLB_R5C3 ;


注:模式引脚 (MD0, MD1, MD2) 和边界扫描引脚 [TCK, TDI, TDO, TMS] 不能被禁止或分配;如果这些位置在 UCF 文件中被禁止,就会发生错误。这些属于保留位置,只有在设计中指定的情况下才能使用。


配置特定逻辑区域

置 0。

特定 CLB 中的基础元件 (BEL)。BEL = FF, LUT, RAM, etc.:

INST io_buf_name LOC = P110 ;
INST instance_path/BEL_name LOC = CLB_R17C36 ;

分配区域约束

XC3000 - 将 CLB 逻辑置于 F 行 F 列所在器件的左上方:

INST logic_name LOC=AA:FF ;


XC4000 - 将逻辑置于5 行5列5x5区域所在器件的左上方:

INST logic_name LOC=CLB_R1C1:CLB_R5C5 ;


XC4000, XC5200 - 将 BUFT 置于 1 行 1 列和 2 行 8 列区域的任何地方:

INST logic_name LOC=TBUF_R1C1:TBUF_R2C8 ;


XC5200 - 将逻辑置于 4 行 4 列所在器件左上方的任何片上


INST logic_name LOC=CLB_R1C1.LC3:CLB_R4C4..LC0 ;

多个 LOC 约束实例:

XC4000 - 在顶部或底部边缘放置一个解码器:

INST logic_name LOC=T,B ;


XC4000, Virtex, Spartan - 将 CLB 逻辑放置在器件 5x5 区域的左上角(但不在 CLB 中),第 5 行,第 5 列:

INST logic_name LOC=CLB_R1C1:CLB_R5C5 ;
INST logic_name PROHIBIT=CLB_R5C5 ;


XC4000, Virtex, Spartan - 将逻辑放置在第 8 列的任意 CLB 中:

INST logic_name LOC=CLB_R*C8;


为逻辑或 I/O 设定其它约束

Fast 或 Slow 属性

将 OBUF 指定为 FAST 或 SLOW,应使用如下语法:

INST obuf_name FAST ; #Alternate: NET pad_net FAST;
INST obuf_name SLOW ; #Alternate: NET pad_net SLOW;


MEDDELAY 和 NODELAY

要声明一个 IOB 输入 FF 延迟(默认 = MAXDELAY),应使用如下语法:

注:您可以将 MEDDELAY/NODELAY 附于 CLB FF;该 CLB FF 被 "map -pr i" 选项推入到 IOB。


INST input_ff_name MEDDELAY ;
INST input_latch_name NODELAY ;


在版本 3.1i 中,IOB 输入 FF 延迟被改变;这些选项为 IOBDELAY= NONE,IFD,IBUF,或者 BOTH,如下所示:


INST input_ff_name IOBDELAY = Both;
INST input_latch_name IOBDELAY = IFD;


KEEP

为防止网络被吸到逻辑块中,应使用如下语法:

NET net_name KEEP ;


Net Flag(S 属性)

为防止未连接的逻辑从设计中优化出局(仅 FPGA),应使用如下语法:

NET net_name S;


INIT

为了初始化 ROM、RAM 和寄存器,应使用如下语法:

INST ROM_name INIT = 5555;
INST FF_name INIT = S;
AR# 2449
创建日期 08/21/2007
Last Updated 04/02/2014
状态 Active
Type 综合文章
Tools
  • ISE - 10.1
  • ISE Design Suite - 11.1
  • ISE Design Suite - 11.2
  • More
  • ISE Design Suite - 11.3
  • ISE Design Suite - 11.4
  • ISE Design Suite - 11.5
  • ISE Design Suite — 12.1
  • ISE Design Suite - 12.2
  • Less