1、XILINX 语法约束举例说明序号 页码 关键字 举例及描述1. 10 TIMESPEC/FROM TO TIMESPEC “TS01“=FROM FFS TO FFS 30;时序约束 TS01 规定从触发器到触发器的最大时间为 30ns2. 10 TIMESPEC/FROM TO TIMESPEC “TS02“=FROM LATCHES TO LATCHES 25;时序约束 TS02 规定从锁存器到锁存器的最大时间为 25ns3. 10 TIMESPEC/FROM TO TIMESPEC “TS03“=FROM PADS TO RAMS 70;时序约束 TS03 规定从引脚到 RAMS 的最
2、大时间为 70ns4. 10 TIMESPEC/FROM TO TIMESPEC “TS04“=FROM FFS TO PADS 55;时序约束 TS04 规定从触发器到引脚的最大时间为 55ns5. 10 TIMESPEC/FROM TOTIMESPEC “TS01“ = FROM BRAMS_PORTA TO BRAMS_PORTB(gork*);时序约束 TS01 规定所有符合下列所有条件的路径: 1)从 BRAMS_PORTA 端口输出;2)从 BRAMS_PORTB 端口输入,并且 BRAMS_PORTB 端口的输出需要驱动与 gork*相匹配的信号。6. 10 NET/TNM_NE
3、T NET “X“ TNM_NET = BRAMS_PORTA groupA;时序分组 groupA 包含所有由网络 X 驱动的 BRAMS_PORTA 端口路径。7. 10 NET/TNM_NETNET “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;时
4、序分组 groupC 包含所有实例 Y 下的 BRAMS_PORTB 的端口。9. 10 INST/TNMINST “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 ( * )序号 页码 关键字 举
5、例及描述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
6、;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 Verilogalways(current_state or reset)begin (* parallel_case *) (* full_case *)case (current_state)18. 30 Verilog (* mult
7、_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 “ MAXDELAY20. 33 EXCEPT TIMEGRP “input_pads“=PADS EXCEPT output_pads;时序分组 input_pads 是除 output_pads 分组外的所有引脚。序号 页码 关键字 举例及描述21. 33 保留字NET net OFFSET=IN
8、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/*
9、“ LOC=SLICE_X*Y8;25. 34 Hierarchy UCF Design HierarchyUCF 设计的层级举例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 时间有效,并且需要保持 valu
10、e2 时间。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 有效,并且需要
11、保持 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 时间有效,并且需要保持
12、value2 时间。33. 55OFFSET 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“;建
13、立以网络 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%;对约
14、束组 ClkIn 进行周期约束 TS_ClkIn,周期值为 5ns,周期的开始脉冲为高,占空比为 50%。TS_ClkIn 的值为 5ns36. 57 相关周期约束语法NET “PrimaryClock“ TNM_NET = “TNM_Primary“;建立以网络 PrimaryClock 驱动的约束组 TNM_PrimaryNET “RelatedClock“ TNM_NET = “TNM_Related“;建立以网络 RelatedClock 驱动的约束组 TNM_RelatedTIMESPEC “TS_primary“ = PERIOD “TNM_Primary“ PeriodValue
15、 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 “Cl
16、k1X“ TNM_NET = “Clk1X“;建立以网络 Clk1X 驱动的约束组 Clk1X。 NET “Clk2X180“ TNM_NET = “Clk2X180“;建立以网络 Clk2X180 驱动的约束组 Clk2X180。TIMESPEC “TS_Clk1X“ = PERIOD “Clk1X“ 5 ns;对约束组 Clk1X 进行周期约束 TS_Clk1X(字母必须全部为大写?) ,周期值为 5nsTIMESPEC “TS_Clk2X180“ = PERIOD “Clk2X180“ TS_Clk1X/2 PHASE +1.25 ns ;对约束组 Clk2X180 进行周期约束 TS_
17、Clk2X180,周期为 TS_Clk1X/2=2.5ns,相位比 TS_Clk1X 提前 1.25ns38. 59异步时钟域设置举例DATAPATHONLYNET “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 的最大路径时间进行约束,最大值为
18、 5ns39. 61 全局输出偏置约束语法 OFFSET = OUT value1 VALID value2 AFTER clock;全局约束,输出信号在 clock 后 value1 时间内有效,并且保持最小 value2 时间。40. 62 全局输出偏置约束举例NET “ClkIn“ TNM_NET = “ClkIn“;OFFSET = OUT 5 ns AFTER “ClkIn“;输出信号应在 ClkIn 有效后 5ns 之内有效。41. 63REFERENCE_PIN源同步输出偏移设置语法OFFSET = OUT AFTERclock REFERENCE_PIN “REF_CLK“ R
19、ISING;OFFSET = OUT AFTERclock REFERENCE_PIN “REF_CLK“ FALLING;42. 63REFERENCE_PIN源同步输出偏移设置举例NET “ClkIn“ TNM_NET = “ClkIn“;OFFSET = OUT AFTER “ClkIn“ REFERENCE_PIN “ClkOut“ RISING;OFFSET = OUT AFTER “ClkIn“ REFERENCE_PIN “ClkOut“ FALLING;序号 页码 关键字 举例及描述43. 65 FROM TO /TIG TIMESPEC “TSid“ = FROM “SRC_
20、GRP“ TO “DST_GRP“ TIG;忽略从 SRC_GRP 到 DST_GRP 的时序约束。44. 65 TIG 举例NET “CLK1“ TNM_NET = FFS “GRP_1“;NET “CLK2“ TNM_NET = FFS “GRP_2“;TIMESPEC TS_Example = FROM “GRP_1“ TO “GRP_2“ TIG;忽略从 GRP_1 到 GRP_2 的时序约束。45. 65 多周期路径 约束语法 TIMESPEC “TSid“ = FROM “MC_GRP“ TO “MC_GRP“ value;设置从 MC_GRP 到 MC_GRP 的最大路径延迟为
21、value46. 66 多周期路径 约束举例NET “CLK1“ TNM_NET = “CLK1“;TIMESPEC “TS_CLK1“= PERIOD “CLK1“5 ns HIGH 50%;NET “Enable“ TNM_NET = FFS “MC_GRP“;TIMESPEC TS_Example = FROM “MC_GRP“ TO “MC_GRP“ TS_CLK1*2;设置从 MC_GRP 到 MC_GRP 的最大路径延迟为 TS_CLK1*2=10ns47. 68 AREA_GROUP INST “X“ AREA_GROUP=groupname ;将实例 X 放入区域组 group
22、name48. 68 AREA_GROUP/ RANGE AREA_GROUP “Groupname“ RANGE=range;将区域组 groupname 约束到范围 range49. 68 AREA_GROUP/ COMPRESSIONAREA_GROUP “Groupname“ COMPRESSION=percent;将区域组 groupname 进行压缩,将逻辑压缩到由 percent 设置的百分比。注意:BRAM,DSP 块,乘法器等不能被压缩。50. 68 AREA_GROUP/ GROUP AREA_GROUP “Groupname“ GROUP=OPEN|CLOSED;允许/禁
23、止区域组 groupname 外的逻辑与组内的逻辑结合51. 68 AREA_GROUP/PLACE AREA_GROUP “Groupname“ PLACE=OPEN|CLOSED;允许/禁止区域组 groupname 外的逻辑放置到区域组定义的范围内序号 页码 关键字 举例及描述52. 69 RANGE RANGE=SLICE_X# Y#:SLICE_X#Y#53. 69 RANGE RANGE=RAMB16_X#Y#:RAMB16_X#Y#54. 69 RANGE RANGE=MULT18X18_X #Y#:MULT18X18_X#Y#55. 69 AREA_GROUP /RANGE A
24、REA_GROUP “Groupname“ RANGE=CLOCKREGION_X#Y#;将区域组 groupname 约束到器件的时钟域 CLOCKREGION_X#Y#56. 69 AREA_GROUP /RANGE AREA_GROUP “group_name“ RANGE=CLOCKREGION_X#Y#:CLOCKREGION_X#Y#;将区域组 groupname 约束到器件的时钟域 CLOCKREGION_X#Y#:CLOCKREGION_X#Y#范围57. 69 AREA_GROUP /RANGE AREA_GROUP “Groupname“ RANGE=CLOCKREGION
25、_X#Y#,CLOCKREGION_X#Y#,.,;将区域组 groupname 约束到器件的时钟域 CLOCKREGION_X#Y#,CLOCKREGION_X#Y#,.,等位置58. 69 AREA_GROUP错误语法举例INST “RM_data_control“ AREA_GROUP = “RR_RM_data_control“ ;AREA_GROUP “RR_RM_data_control“ RANGE = SLICE_X0Y44:SLICE_X27Y20, DSP48_X0Y25:DSP48_X0Y14;上述为错误 RANGE 约束举例。DSP48_X0Y25:DSP48_X0Y1
26、4 约束将被忽略。59. 69 AREA_GROUP正确语法举例INST “RM_data_control“ AREA_GROUP = “RR_RM_data_control“ ;AREA_GROUP “RR_RM_data_control“ RANGE = SLICE_X0Y44:SLICE_X27Y20;AREA_GROUP “RR_RM_data_control“ RANGE = DSP48_X0Y25:DSP48_X0Y14;上述为正确 RANGE 约束举例60. 74 AREA_GROUP /RANGEINST “state_machine_X“ AREA_GROUP=group1;
27、将实例 state_machine_X 的内容放入区域约束组 group1AREA_GROUP “Group1“RANGE=SLICE_X1Y1:SLICE_X10Y10;将区域约束组 group1 的内容约束到 SLICE_X1Y1SLICE_X10Y10 的范围61. 75 TIMEGRP/ AREA_GROUP TIMEGRP timing_group_name AREA_GROUP = area_group_name ;将时序分组 timing_group_name 的内容定义为区域约束组 area_group_name序号 页码 关键字 举例及描述62. 75 TIMEGRP/ AR
28、EA_GROUPNET “clk“ TNM_NET=“clock“;TIMESPEC “TS_clk“ = PERIOD “clock“ 10 MHz;TIMEGRP “clock“ AREA_GROUP=“clock_area“;建立同网络 clk 相关的时序分组 clock;时序分组 clock 的时钟周期约束为 10NHz;以时序分组 clock 的内容定义为区域约束组 clock_area。63. 76 verilog/ ASYNC_REG (* ASYNC_REG = “ TRUE|FALSE“ *)verilog 语法举例64. 76 INST/ ASYNC_REG INST “i
29、nstance_name“ ASYNC_REG = TRUE|FALSE;UCF 语法举例。默认值(不进行 ASYNC_REG 设置时) 为 FALSE;若 ASYNC_REG 的设置值为空,则认为是 TRUE。65. 78 verilog/BEL (* BEL = “ value“ *)BEL 的 verilog 语法66. 78 BEL INST “instance_name “ BEL=value;67. 78 BELINST “upper_BRAM_instance_name“ LOC = RAMB36_XnYn | BEL = UPPER;INST “lower_BRAM_insta
30、nce_name“ LOC = RAMB36_XnYn | BEL = LOWER;BEL 的 UCF 语法68. 78 BELINST “ramb18_inst0“ LOC = RAMB36_X0Y2 | BEL = UPPER; INST “ramb18_inst1“ LOC = RAMB36_X0Y2 | BEL = LOWER;BEL 的 UCF 语法举例69. 78 BEL INST “xyzzy“ BEL=FFX;将 xyzzy 固定到 slice 中的 FFX 处。70. 79 BLKNM NET “net_name“ BLKNM=property_value;BLKNM 的 U
31、CF 语法71. 80 verilog/BLKNM (* BLKNM = “blk_name“ *)BLKNM 的 verilog 语法序号 页码 关键字 举例及描述72. 80 BLKNM INST “instance_name“ BLKNM=block_name;BLKNM 的 UCF 语法73. 80 BLKNM INST “$1I87/block1“ BLKNM=U1358;为实例 block1 分配的逻辑块名为 U135874. 82 BUFG (* BUFG = “CLK | OE | SR | DATA_GATE“ *)BUFG 的 verilog 语法75. 82 BUFGNE
32、T “net_name“ BUFG=CLK | OE | SR | DATA_GATE;INST “instance_name“ BUFG=CLK | OE | SR| DATA_GATE;UCF 语法76. 82 BUFG NET “fastclk“ BUFG=CLK;为网络 fastclk 分配全局时钟网络77. 83 CLOCK_DEDICATED_ROUTE PIN “BEL_INSTANCE_NAME.PIN “CLOCK_DEDICATED_ROUTE = TRUE|FALSE;为“BEL_INSTANCE_NAME.PIN “引脚分配/不分配时钟专用路径78. 84 verilo
33、g/COLLAPSE (* COLLAPSE = “YES|NO|TRUE|FALSE“*)79. 84 verilog/COLLAPSENET “net_name“ COLLAPSE;UCF 语法NET “$1I87/$1N6745“ COLLAPSE;举例80. 86 CONFIG CONFIG_MODE CONFIG CONFIG_MODE=string;UCF 的 FPGA 配置模式设置。具体的有效 string 值见文件。81. 89 verilog/ COOL_CLK (* COOL_CLK = “TRUE | FALSE“ *)verilog 语法82. 89 COOL_CLK
34、NET “signal_name“ COOL_CLK;UCF 语法序号 页码 关键字 举例及描述83. 89 verilog/ DATA_GATE (* DATA_GATE = “TRUE|FALSE“ *)verilog 语法84. 89 DATA_GATE NET “signal_name“ DATA_GATE;UCF 语法85. 92 DCI_CASCADE CONFIG DCI_CASCADE = “ .“; UCF 语法。其中 等为器件的 BANK 号。86. 92 DCI_CASCADE CONFIG DCI_CASCADE = “11 13 15 17“;DCI 的主 BANK
35、为 BANK11,从 BANK 为 BANK13、15、17。87. 94 DCI_VALUE INST pin_name DCI_VALUE = integer;设置引脚 pin_name 的阻抗为 integer 欧姆。其中 integer 默认值为 50。88. 96 verilog/DEFAULT (* CONSTRAINT_NAME = “constrant_value“ *) DEFAULTverilog 语法。其中 CONSTRAINT_NAME 可选 KEEPER/FLOAT/PULLDOWN/PULLUP89. 97 verilog/DEFAULT (* KEEPER = “
36、TRUE“ *) DEFAULT设置 KEEPER 的默认值为有效90. 97 DEFAULT DEFAULT KEEPER = TRUE;设置 KEEPER 的默认值为有效91. 99 verilog/ DIFF_TERM (* DIFF_TERM = “TRUE|FALSE “ *)verilog 语法。打开/关闭 Spartan-6 器件的内置差分终端电阻。92. 100 DIFF_TERM INST “IO block name“ DIFF_TERM = “TRUE|FALSE ?;打开/关闭 Spartan-6 器件 IO BANK 的内置差分终端电阻。93. 103 DISABLEDISABLE=delay_symbol_name;该设置为全局约束。禁止指定的 delay_symbol_name 类型进行路径时序分析。delay_symbol_name 类型在 P103表中描述。94. 106 verilog/DRIVE (* DRIVE = “value“ *)verilog 语法。设置输出端的驱动电流。