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小时内删除。
发表评论