XILINX语法约束举例说明
序号
页码
关键字
举例及描述
1.
10
TIMESPEC/FROM TO
TIMESPEC "TS01"=FROM FFS TO FFS 30;
时序约束TS01规定从触发器到触发器的最大时间为30ns
2.
10
TIMESPEC/FROM TO
TIMESPEC "TS02"=FROM LATCHES TO LATCHES 25;
时序约束TS02规定从锁存器到锁存器的最大时间为25ns
3.
10
TIMESPEC/FROM TO
TIMESPEC "TS03"=FROM PADS TO RAMS 70;
时序约束TS03规定从引脚到RAMS的最大时间为70ns
4.
10
TIMESPEC/FROM TO
TIMESPEC "TS04"=FROM FFS TO PADS 55;
时序约束TS04规定从触发器到引脚的最大时间为55ns
5.
10
TIMESPEC/FROM TO
TIMESPEC "TS01" = FROM BRAMS_PORTA TO BRAMS_PORTB(gork*);
时序约束TS01规定所有符合下列所有条件的路径:1)从BRAMS_PORTA端口输出;2)从BRAMS_PORTB端口输入,并且BRAMS_PORTB端口的输出需要驱动与gork*相匹配的信号。
6.
10
NET/TNM_NET
NET "X" TNM_NET = BRAMS_PORTA groupA;
时序分组groupA包含所有由网络X驱动的BRAMS_PORTA端口路径。
7.
10
NET/TNM_NET
NET "X" TNM_NET = BRAMS_PORTB( dob* ) groupB;
时序分组groupA包含所有符合下列所有条件的BRAMS_PORTB路径:1) 由网络X驱动的BRAMS_PORTB端口;2) BRAMS_PORTB至少需要驱动1个与dob*匹配的信号。
8.
10
INST/TNM
INST "Y" TNM = BRAMS_PORTB groupC;
时序分组groupC包含所有实例Y下的BRAMS_PORTB的端口。
9.
10
INST/TNM
INST "Y" TNM = BRAMS_PORTA( doa* ) groupD;
时序分组groupD包含所有符合下列所有条件的路径:1)属于实例Y下的BRAMS_PORTA的端口;2)BRAMS_PORTA至少需要驱动1个与doa*匹配的信号。
10.
10
TIMEGRP
TIMEGRP "groupE" = BRAMS_PORTA;
时序分组groupE包含所有双端口RAM单元中的A端口。相当于BRAMS_PORTA ( * )
11.
10
TIMEGRP
TIMEGRP "groupF" = BRAMS_PORTB( mem/dob* );
时序分组groupF包含所有双端口RAM单元中的,输出端驱动信号中包含mem/dob*信号的B端口
12.
10
名字限定语法
predefined group (name_qualifier [ name_qualifier ])
预定义组名字限定语法。其中name_qualifier是包含全部层级的,并由相应原语驱动的网络。
13.
22
NET/TNM_NET
NET "netname" TNM_NET=[predefined_group ] identifier;
14.
29
Verilog
(*attribute_name*)
默认值为1。与(*attribute_name="1"*)意义相同。
15.
29
Verilog
(* clock_buffer = "IBUFG" *) input CLK;
16.
29
Verilog
(* INIT = "0000" *) reg [3:0] d_out;
17.
29
Verilog
always@(current_state or reset)
begin (* parallel_case *) (* full_case *)
case (current_state)
18.
30
Verilog
(* mult_style = "pipe_lut" *) MULT my_mult (a, b, c);
19.
32
疑问
NET "$SIG_0 MAXDELAY" = 10;
NET "$SIG_1 MAXDELAY" = 12 ns;
疑问:上面是否应将"$SIG_0 MAXDELAY"改为"$SIG_0 " MAXDELAY
20.
33
EXCEPT
TIMEGRP "input_pads"=PADS EXCEPT output_pads;
时序分组input_pads是除output_pads分组外的所有引脚。
21.
33
保留字
NET net OFFSET=IN 20 BEFORE CLOCK;        错误
NET "net" OFFSET=IN 20 BEFORE CLOCK;      正确
NET "$SIG_0" OFFSET=IN 20 BEFORE CLOCK;  正确
NET "~OUTSIG1" OFFSET=IN 20 BEFORE CLOCK; 正确
22.
33
通配符
NET "*AT?" FAST;
将倒数第3、2个字符为AT的所有网络设置为高速属性。
23.
33
通配符
INST "$1I3*/ROM2" INIT=5555;
将指定ROM的初始值设置为16进制的5555。
24.
33
通配符
INST "/loads_of_logic/*" LOC=SLICE_X*Y8;
25.
34
Hierarchy
UCF Design Hierarchy
UCF设计的层级举例
26.
35
多重约束
INST myInst LOC = P53 | IOSTANDARD = LVPECL33 | SLEW = FAST;
蒋实例myInst放置在引脚P53,IO标准为LVPECL33,摆率设置为高速
27.
53
OFFSET IN/VALID/
BEFORE
OFFSET = IN value1 VALID value2 BEFORE clock;正则化的约束条件
全局约束,信号应在时钟clock之前value1时间有效,并且需要保持value2时间。
28.
53
TNM_NET
NET "SysCLk" TNM_NET = "SysClk";
将由SysCLk网络驱动的路径定义到分组SysClk;
29.
53
TIMESPEC/ PERIOD/
HIGH
TIMESPEC "TS_SysClk"= PERIOD "SysClk" 5 ns HIGH 50%;
对分组"SysClk"进行周期时序约束,周期5ns,占空比50%
30.
53
OFFSET IN/VALID/
BEFORE
OFFSET = IN 5 ns VALID 5 ns BEFORE "SysClk";
信号应在时钟SysClk之前5ns有效,并且需要保持5ns。
31.
55
OFFSET IN/VALID/
BEFORE/ RISING
OFFSET = IN value1 VALID value2 BEFORE clock RISING;
全局约束,信号应在时钟clock上升沿之前value1时间有效,并且需要保持value2时间。
32.
55
OFFSET IN/VALID/
BEFORE/FALLING
OFFSET = IN value 1 VALID value2 BEFORE clock FALLING;
全局约束,信号应在时钟clock下降沿之前value1时间有效,并且需要保持value2时间。
33.
55
OFFSET IN/VALID/
BEFORE/FALLING
约束举例
NET "SysCLk" TNM_NET = "SysClk";
TIMESPEC "TS_SysClk"= PERIOD "SysClk" 5 ns HIGH 50%;
OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "sysClk" RISING;
OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "sysClk" FALLING;
34.
57
周期约束
NET "ClockName" TNM_NET = "TNM_NET_Name";
建立以网络ClockName驱动的约束组TNM_NET_Name。
TIMESPEC "TS_name"= PERIOD "TNM_NET_Name"  PeriodValue  HIGH HighValue %;
对约束组TNM_NET_Name进行周期约束TS_name,周期值为PeriodValue,周期的开始脉冲为高,占空比为HighValue %
35.
57
周期约束举例
NET "ClkIn" TNM_NET = "ClkIn";
建立以网络ClkIn驱动的约束组ClkIn。
TIMESPEC "TS_ClkIn"= PERIOD "ClkIn"5 ns HIGH 50%;
对约束组ClkIn进行周期约束TS_ClkIn,周期值为5ns,周期的开始脉冲为高,占空比为50%。
TS_ClkIn的值为5ns
36.
57
相关周期
约束语法
NET "PrimaryClock" TNM_NET = "TNM_Primary";
建立以网络PrimaryClock驱动的约束组TNM_Primary
NET "RelatedClock" TNM_NET = "TNM_Related";
建立以网络RelatedClock驱动的约束组TNM_Related
TIMESPEC "TS_primary" = PERIOD "TNM_Primary" PeriodValue HIGH HighValue%;
对约束组TNM_Primary进行周期约束TS_primary,周期值为PeriodValue,周期的开始脉冲为高,占空比为HighValue %。注意:TS_primary中的字母都需要采用大写
TIMESPEC "TS_related" = PERIOD "TNM_Related" TS_Primary_relation PHASE value;
对约束组TNM_Related进行周期约束TS_related,周期值为同TS_primary相关值,相位值为value
37.
58
相关周期
约束举例
NET "Clk1X" TNM_NET = "Clk1X";
建立以网络Clk1X驱动的约束组Clk1X。
NET "Clk2X180" TNM_NET = "Clk2X180";
建立以网络Clk2X180驱动的约束组Clk2X180。
TIMESPEC "TS_Clk1X" = PERIOD "Clk1X" 5 ns;
对约束组Clk1X进行周期约束TS_Clk1X(字母必须全部为大写?),周期值为5ns
TIMESPEC "TS_Clk2X180" = PERIOD "Clk2X180" TS_Clk1X/2 PHASE +1.25 ns ;
对约束组Clk2X180进行周期约束TS_Clk2X180,周期为TS_Clk1X/2=2.5ns,相位比TS_Clk1X提前1.25ns
38.
59
异步时钟域
设置举例
DATAPATHONLY
NET "CLKA" TNM_NET = FFS "GRP_A";
建立以网络CLKA驱动的寄存器时序分组GRP_A。
NET "CLKB" TNM_NET = FFS "GRP_B";
建立以网络CLKB驱动的寄存器时序分组GRP_B。
TIMESPEC TS_Example = FROM "GRP_A" TO "GRP_B" 5 ns DATAPATHONLY;
对约束组GRP_A到GRP_B的最大路径时间进行约束,最大值为5ns
39.
61
全局输出
偏置约束语法
OFFSET = OUT value1 VALID value2 AFTER clock;
全局约束,输出信号在clock后value1时间内有效,并且保持最小value2时间。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。