XILINX语法约束举例说明
序号 1. 2. 3. 4. 页码 10 10 10 10 关键字 TIMESPEC/FROM TO TIMESPEC/FROM TO TIMESPEC/FROM TO TIMESPEC/FROM TO 举例及描述 TIMESPEC \"TS01\"=FROM FFS TO FFS 30; 时序约束TS01规定从触发器到触发器的最大时间为30ns TIMESPEC \"TS02\"=FROM LATCHES TO LATCHES 25; 时序约束TS02规定从锁存器到锁存器的最大时间为25ns TIMESPEC \"TS03\"=FROM PADS TO RAMS 70; 时序约束TS03规定从引脚到RAMS的最大时间为70ns TIMESPEC \"TS04\"=FROM FFS TO PADS 55; 时序约束TS04规定从触发器到引脚的最大时间为55ns TIMESPEC \"TS01\" = FROM BRAMS_PORTA TO BRAMS_PORTB(gork*); 5. 10 TIMESPEC/FROM TO 时序约束TS01规定所有符合下列所有条件的路径:1)从BRAMS_PORTA端口输出;2)从BRAMS_PORTB端口输入,并且BRAMS_PORTB端口的输出需要驱动与gork*相匹配的信号。 NET \"X\" TNM_NET = BRAMS_PORTA groupA; 时序分组groupA包含所有由网络X驱动的BRAMS_PORTA端口路径。 NET \"X\" TNM_NET = BRAMS_PORTB( dob* ) groupB; 时序分组groupA包含所有符合下列所有条件的BRAMS_PORTB路径:1) 由网络X驱动的BRAMS_PORTB端口;2) BRAMS_PORTB至少需要驱动1个与dob*匹配的信号。 INST \"Y\" TNM = BRAMS_PORTB groupC; 时序分组groupC包含所有实例Y下的BRAMS_PORTB的端口。 INST \"Y\" TNM = BRAMS_PORTA( doa* ) groupD; 9. 10 INST/TNM 时序分组groupD包含所有符合下列所有条件的路径:1)属于实例Y下的BRAMS_PORTA的端口;2)BRAMS_PORTA至少需要驱动1个与doa*匹配的信号。 TIMEGRP \"groupE\" = BRAMS_PORTA; 时序分组groupE包含所有双端口RAM单元中的A端口。相当于BRAMS_PORTA ( * ) 6. 10 NET/TNM_NET 7. 10 NET/TNM_NET 8. 10 INST/TNM 10. 10 TIMEGRP 序号 11. 12. 13. 14. 15. 16. 页码 10 10 22 29 29 29 关键字 TIMEGRP 举例及描述 TIMEGRP \"groupF\" = BRAMS_PORTB( mem/dob* ); 时序分组groupF包含所有双端口RAM单元中的,输出端驱动信号中包含mem/dob*信号的B端口 名字限定语法 NET/TNM_NET Verilog Verilog Verilog predefined group (name_qualifier [ name_qualifier ]) 预定义组名字限定语法。其中name_qualifier是包含全部层级的,并由相应原语驱动的网络。 NET \"netname\" TNM_NET=[predefined_group ] identifier; (*attribute_name*) 默认值为1。与(*attribute_name=\"1\"*)意义相同。 (* clock_buffer = \"IBUFG\" *) input CLK; (* INIT = \"0000\" *) reg [3:0] d_out; always@(current_state or reset) begin (* parallel_case *) (* full_case *) case (current_state) (* mult_style = \"pipe_lut\" *) MULT my_mult (a, b, c); NET \"$SIG_0 MAXDELAY\" = 10; NET \"$SIG_1 MAXDELAY\" = 12 ns; 疑问:上面是否应将\"$SIG_0 MAXDELAY\"改为\"$SIG_0 \" MAXDELAY TIMEGRP \"input_pads\"=PADS EXCEPT output_pads; 时序分组input_pads是除output_pads分组外的所有引脚。 17. 29 Verilog 18. 30 Verilog 19. 32 疑问 20. 33 EXCEPT 序号 页码 关键字 举例及描述 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; 正确 NET \"*AT?\" FAST; 将倒数第3、2个字符为AT的所有网络设置为高速属性。 INST \"$1I3*/ROM2\" INIT=5555; 将指定ROM的初始值设置为16进制的5555。 INST \"/loads_of_logic/*\" LOC=SLICE_X*Y8; UCF Design Hierarchy UCF设计的层级举例 INST myInst LOC = P53 | IOSTANDARD = LVPECL33 | SLEW = FAST; 蒋实例myInst放置在引脚P53,IO标准为LVPECL33,摆率设置为高速 OFFSET = IN value1 VALID value2 BEFORE clock; 全局约束,信号应在时钟clock之前value1时间有效,并且需要保持value2时间。 NET \"SysCLk\" TNM_NET = \"SysClk\"; 将由SysCLk网络驱动的路径定义到分组SysClk; TIMESPEC \"TS_SysClk\"= PERIOD \"SysClk\" 5 ns HIGH 50%; 对分组\"SysClk\"进行周期时序约束,周期5ns,占空比50% OFFSET = IN 5 ns VALID 5 ns BEFORE \"SysClk\"; 信号应在时钟SysClk之前5ns有效,并且需要保持5ns。 OFFSET = IN value1 VALID value2 BEFORE clock RISING; 全局约束,信号应在时钟clock上升沿之前value1时间有效,并且需要保持value2时间。 21. 33 保留字 22. 33 通配符 23. 33 通配符 24. 25. 26. 27. 28. 29. 30. 31. 33 34 35 53 53 53 53 55 通配符 Hierarchy 多重约束 OFFSET IN/VALID/ BEFORE TNM_NET TIMESPEC/ PERIOD/ HIGH OFFSET IN/VALID/ BEFORE OFFSET IN/VALID/ BEFORE/ RISING 序号 32. 页码 55 关键字 OFFSET IN/VALID/ BEFORE/FALLING OFFSET IN/VALID/ BEFORE/FALLING 约束举例 33. 55 举例及描述 OFFSET = IN value 1 VALID value2 BEFORE clock FALLING; 全局约束,信号应在时钟clock下降沿之前value1时间有效,并且需要保持value2时间。 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; 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 % NET \"ClkIn\" TNM_NET = \"ClkIn\"; 建立以网络ClkIn驱动的约束组ClkIn。 TIMESPEC \"TS_ClkIn\"= PERIOD \"ClkIn\"5 ns HIGH 50%; 对约束组ClkIn进行周期约束TS_ClkIn,周期值为5ns,周期的开始脉冲为高,占空比为50%。 TS_ClkIn的值为5ns 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 34. 57 周期约束 35. 57 周期约束举例 36. 57 相关周期 约束语法 序号 页码 关键字 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 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 OFFSET = OUT value1 VALID value2 AFTER clock; 全局约束,输出信号在clock后value1时间内有效,并且保持最小value2时间。 NET \"ClkIn\" TNM_NET = \"ClkIn\"; OFFSET = OUT 5 ns AFTER \"ClkIn\"; 输出信号应在ClkIn有效后5ns之内有效。 OFFSET = OUT AFTERclock REFERENCE_PIN \"REF_CLK\" RISING; OFFSET = OUT AFTERclock REFERENCE_PIN \"REF_CLK\" FALLING; NET \"ClkIn\" TNM_NET = \"ClkIn\"; OFFSET = OUT AFTER \"ClkIn\" REFERENCE_PIN \"ClkOut\" RISING; OFFSET = OUT AFTER \"ClkIn\" REFERENCE_PIN \"ClkOut\" FALLING; 38. 59 异步时钟域 设置举例 DATAPATHONLY 39. 61 全局输出 偏置约束语法 全局输出 偏置约束举例 REFERENCE_PIN 源同步输出 偏移设置语法 REFERENCE_PIN 源同步输出 偏移设置举例 40. 62 41. 63 42. 63 序号 43. 页码 65 关键字 FROM TO /TIG 44. 65 TIG举例 举例及描述 TIMESPEC \"TSid\" = FROM \"SRC_GRP\" TO \"DST_GRP\" TIG; 忽略从SRC_GRP到DST_GRP的时序约束。 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的时序约束。 TIMESPEC \"TSid\" = FROM \"MC_GRP\" TO \"MC_GRP\" value; 设置从MC_GRP到MC_GRP的最大路径延迟为value 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=10ns INST \"X\" AREA_GROUP=groupname ; 将实例X放入区域组groupname AREA_GROUP \"Groupname\" RANGE=range; 将区域组groupname约束到范围range AREA_GROUP \"Groupname\" COMPRESSION=percent; 将区域组groupname进行压缩,将逻辑压缩到由percent设置的百分比。 注意:BRAM,DSP块,乘法器等不能被压缩。 AREA_GROUP \"Groupname\" GROUP={OPEN|CLOSED}; 允许/禁止区域组groupname外的逻辑与组内的逻辑结合 AREA_GROUP \"Groupname\" PLACE={OPEN|CLOSED}; 允许/禁止区域组groupname外的逻辑放置到区域组定义的范围内 45. 65 多周期路径 约束语法 46. 66 多周期路径 约束举例 47. 48. 68 68 AREA_GROUP AREA_GROUP/ RANGE AREA_GROUP/ COMPRESSION AREA_GROUP/ GROUP AREA_GROUP/ PLACE 49. 68 50. 51. 68 68 序号 52. 53. 54. 55. 56. 57. 页码 69 69 69 69 69 69 关键字 RANGE RANGE RANGE AREA_GROUP /RANGE AREA_GROUP /RANGE AREA_GROUP /RANGE AREA_GROUP 错误语法举例 举例及描述 RANGE=SLICE_X# Y#:SLICE_X#Y# RANGE=RAMB16_X#Y#:RAMB16_X#Y# RANGE=MULT18X18_X #Y#:MULT18X18_X#Y# AREA_GROUP \"Groupname\" RANGE=CLOCKREGION_X#Y#; 将区域组groupname约束到器件的时钟域CLOCKREGION_X#Y# AREA_GROUP \"group_name\" RANGE=CLOCKREGION_X#Y#:CLOCKREGION_X#Y#; 将区域组groupname约束到器件的时钟域CLOCKREGION_X#Y#:CLOCKREGION_X#Y#范围 AREA_GROUP \"Groupname\" RANGE=CLOCKREGION_X#Y#,CLOCKREGION_X#Y#,...,; 将区域组groupname约束到器件的时钟域CLOCKREGION_X#Y#,CLOCKREGION_X#Y#,...,等位置 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_X0Y14约束将被忽略。 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约束举例 58. 69 59. 69 AREA_GROUP 正确语法举例 60. 74 61. 75 INST \"state_machine_X\" AREA_GROUP=group1; 将实例state_machine_X的内容放入区域约束组group1 AREA_GROUP /RANGE AREA_GROUP \"Group1\"RANGE=SLICE_X1Y1:SLICE_X10Y10; 将区域约束组group1的内容约束到SLICE_X1Y1~SLICE_X10Y10的范围 TIMEGRP/ TIMEGRP timing_group_name AREA_GROUP = area_group_name ; AREA_GROUP 将时序分组timing_group_name的内容定义为区域约束组area_group_name 序号 页码 关键字 62. 75 TIMEGRP/ AREA_GROUP 举例及描述 NET \"clk\" TNM_NET=\"clock\"; TIMESPEC \"TS_clk\" = PERIOD \"clock\" 10 MHz; TIMEGRP \"clock\" AREA_GROUP=\"clock_area\"; 建立同网络clk相关的时序分组clock;时序分组clock的时钟周期约束为10NHz;以时序分组clock的内容定义为区域约束组clock_area。 (* ASYNC_REG = \" {TRUE|FALSE}\" *) verilog语法举例 INST \"instance_name\" ASYNC_REG = {TRUE|FALSE}; UCF语法举例。默认值(不进行ASYNC_REG设置时)为FALSE;若ASYNC_REG的设置值为空,则认为是TRUE。 (* BEL = \" {value}\" *) BEL的verilog语法 INST \"instance_name \" BEL={value}; INST \"upper_BRAM_instance_name\" LOC = RAMB36_XnYn | BEL = UPPER; INST \"lower_BRAM_instance_name\" LOC = RAMB36_XnYn | BEL = LOWER; BEL的UCF语法 INST \"ramb18_inst0\" LOC = RAMB36_X0Y2 | BEL = UPPER; INST \"ramb18_inst1\" LOC = RAMB36_X0Y2 | BEL = LOWER; BEL的UCF语法举例 INST \"xyzzy\" BEL=FFX; 将xyzzy固定到slice中的FFX处。 NET \"net_name\" BLKNM=property_value; BLKNM的UCF语法 (* BLKNM = \"blk_name\" *) BLKNM的verilog语法 63. . 65. 66. 67. 76 76 78 78 78 verilog/ ASYNC_REG INST/ ASYNC_REG verilog/BEL BEL BEL 68. 78 BEL 69. 70. 71. 78 79 80 BEL BLKNM verilog/BLKNM 序号 72. 73. 74. 页码 80 80 82 关键字 BLKNM BLKNM BUFG 举例及描述 INST \"instance_name\" BLKNM=block_name; BLKNM的UCF语法 INST \"$1I87/block1\" BLKNM=U1358;; 为实例block1分配的逻辑块名为U1358 (* BUFG = \"{CLK | OE | SR | DATA_GATE}\" *) BUFG的verilog语法 NET \"net_name\" BUFG={CLK | OE | SR | DATA_GATE}; INST \"instance_name\" BUFG={CLK | OE | SR| DATA_GATE}; UCF语法 NET \"fastclk\" BUFG=CLK; 为网络fastclk分配全局时钟网络 PIN \"BEL_INSTANCE_NAME.PIN \"CLOCK_DEDICATED_ROUTE = {TRUE|FALSE}; 为\"BEL_INSTANCE_NAME.PIN \"引脚分配/不分配时钟专用路径 (* COLLAPSE = \"{YES|NO|TRUE|FALSE}\"*) NET \"net_name\" COLLAPSE; UCF语法 NET \"$1I87/$1N6745\" COLLAPSE; 举例 CONFIG CONFIG_MODE=string; UCF的FPGA配置模式设置。具体的有效string值见文件。 (* COOL_CLK = \"{TRUE | FALSE}\" *) verilog语法 NET \"signal_name\" COOL_CLK; UCF语法 75. 82 BUFG 76. 77. 78. 82 83 84 BUFG CLOCK_DEDICATED _ROUTE verilog/COLLAPSE 79. 84 verilog/COLLAPSE 80. 81. 82. 86 CONFIG CONFIG_MODE verilog/ COOL_CLK COOL_CLK 序号 83. 84. 85. 86. 87. 88. . 90. 91. 92. 页码 92 92 94 96 97 97 99 100 关键字 verilog/ DATA_GATE DATA_GATE DCI_CASCADE DCI_CASCADE DCI_VALUE verilog/DEFAULT verilog/DEFAULT DEFAULT verilog/ DIFF_TERM DIFF_TERM 举例及描述 (* DATA_GATE = \"{TRUE|FALSE}\" *) verilog语法 NET \"signal_name\" DATA_GATE; UCF语法 CONFIG DCI_CASCADE = \" ...\"; UCF语法。其中 等为器件的BANK号。 CONFIG DCI_CASCADE = \"11 13 15 17\"; DCI的主BANK为BANK11,从BANK为BANK13、15、17。 INST pin_name DCI_VALUE = integer; 设置引脚pin_name的阻抗为integer欧姆。其中integer默认值为50。 (* CONSTRAINT_NAME = \"constrant_value\" *) DEFAULT verilog语法。其中CONSTRAINT_NAME可选KEEPER/FLOAT/PULLDOWN/PULLUP (* KEEPER = \"TRUE\" *) DEFAULT 设置KEEPER的默认值为有效 DEFAULT KEEPER = TRUE; 设置KEEPER的默认值为有效 (* DIFF_TERM = \"{TRUE|FALSE }\" *) verilog语法。打开/关闭Spartan-6器件的内置差分终端电阻。 INST \"IO block name\" DIFF_TERM = \"{TRUE|FALSE }?; 打开/关闭Spartan-6器件IO BANK的内置差分终端电阻。 DISABLE=delay_symbol_name; 该设置为全局约束。禁止指定的delay_symbol_name类型进行路径时序分析。delay_symbol_name类型在P103表中描述。 (* DRIVE = \"value\" *) verilog语法。设置输出端的驱动电流。 93. 103 DISABLE 94. 106 verilog/DRIVE 序号 95. 96. 97. 页码 106 108 108 关键字 DRIVE DROP_SPEC DROP_SPEC 举例及描述 INST \"instance_name\" DRIVE={2|4|6| 8|12|16 |24}; 设置实例instance_name的引脚驱动电流2~24为mA。 TIMESPEC \"TSidentifier\" =DROP_SPEC; TIMESPEC \"TS67\"=DROP_SPEC; 取消时序约束TS67。 ENABLE= delay_symbol_name ; 该设置为全局约束。允许对delay_symbol_name进行路径延迟的时序分析。delay_symbol_name类型在P110表中描述。 CONFIG ENABLE_SUSPEND=\"{NO | FILTERED | UNFILTERED}\"; 器件进入休眠的触发类型设置,不允许/滤除毛刺/不过滤。 CONFIG ENABLE_SUSPEND=\"FILTERED\"; 器件进入休眠的触发类型采用滤除毛刺(需要长脉冲有效)的方式。 (* FAST = \"{TRUE | FALSE}\" *) 设置是否增加接口的速度 INST \"$1I87/y2\" FAST; 增加单元y2的输出接口速度。 NET \"net1\" FAST; 增加网络net1连接的输出接口速度。 NET output_clock_net FEEDBACK = value units NET input_feedback_clock_net ; (* XIL_FILE = \"file_name\" *) (* FLOAT = \"{TRUE|FALSE}\" *) 令三态输出引脚在无驱动时为悬空状态。 98. 109 ENABLE 99. 100. 101. 102. 103. 104. 105. 106. 111 111 113 113 113 114 117 118 ENABLE_SUSPEND ENABLE_SUSPEND verilog/FAST FAST FAST FEEDBACK verilog/XIL_FILE verilog/ FLOAT 序号 107. 页码 120 关键字 FROM THRU TO /DATAPATHONLY FROM TO /DATAPATHONLY FROM TO /DATAPATHONLY verilog/ HBLKNM HBLKNM HBLKNM HBLKNM HBLKNM verilog/ HIODELAY_GROUP HIODELAY_GROUP verilog/ HLUTNM HLUTNM 举例及描述 TIMESPEC \"TSidentifier\"=FROM \"source_group\" THRU \"Thru_pt1\"....[THRU \"Thru_pt2\"....] TO \"destination_group\" value [Units] [DATAPATHONLY]; TIMESPEC \"TSname\"=FROM \"group1\" TO \" group2\" value [DATAPATHONLY]; TIMESPEC TS_MY_PathA = FROM \"My_src_grp\" TO \"My_dst_grp\"23.5 ns DATAPATHONLY; 不考虑时钟歪斜和相位,从时序组My_src_grp 到时序组My_dst_grp的最大延时为23.5 ns。 (* HBLKNM = \"block_name\" *) NET \"net_name?HBLKNM=property_value; INST \"instance_name\" HBLKNM=block_name; INST \"$I13245/this_fmap\" HBLKNM=group1; NET \"net1\" HBLKNM=$COMP_0; (* HIODELAY_GROUP = \"group_name\" *) INST \"instance_name\" HIODELAY_GROUP = group_name; (* HLUTNM = \"string_value\" *) INST \"symbol_name\" HLUTNM=string_value ; 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 122 122 126 126 126 126 126 127 127 129 129 序号 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 页码 132 132 132 134 134 134 134 136 136 136 136 138 关键字 verilog/ HU_SET HU_SET HU_SET verilog/ IBUF_DELAY_VALUE verilog/ IBUF_DELAY_VALUE IBUF_DELAY_VALUE IBUF_DELAY_VALUE verilog/ IFD_DELAY_VALUE verilog/ IFD_DELAY_VALUE IFD_DELAY_VALUE IFD_DELAY_VALUE verilog/ IN_TERM 举例及描述 (* HU_SET = \"set_name\" *) INST \"instance_name\" HU_SET=set_name ; INST \"$1I3245/FF_1\" HU_SET=heavy_set; (* IBUF_DELAY_VALUE=\"value\" *) input top_level_port_name; 为顶层输入接口top_level_port_name设置IBUF_DELAY_VALUE的值。 (* IBUF_DELAY_VALUE=\"5\" *) input DataIn1; 为为顶层输入接口DataIn1设置IBUF_DELAY_VALUE的值为5。 NET \"top_level_port_name\" IBUF_DELAY_VALUE = value; 为顶层输入接口top_level_port_name设置IBUF_DELAY_VALUE的值。 NET \"DataIn1\" IBUF_DELAY_VALUE = 5; 为为顶层输入接口DataIn1设置IBUF_DELAY_VALUE的值为5。 (* IFD_DELAY_VALUE=\"value\" *) input top_level_port_name; (* IFD_DELAY_VALUE=\"5\" *) input DataIn1; NET \"top_level_port_name\" IFD_DELAY_VALUE = value; NET \"DataIn1\" IFD_DELAY_VALUE = 5; (* IN_TERM = \"{NONE | TUNED_SPLIT | UNTUNED_SPLIT_25 |UNTUNED_SPLIT_50 | UNTUNED_SPLIT_75 }\" *) 设置输入引脚的终端匹配电阻 序号 131. 页码 138 关键字 IN_TERM 举例及描述 NET \"pad_net_name\" IN_TERM = \"{NONE | TUNED_SPLIT | UNTUNED_SPLIT_25 | UNTUNED_SPLIT_50 | UNTUNED_SPLIT_75 }\"; 设置网络pad_net_name连接的输入引脚的终端匹配电阻 DEFAULT IN_TERM = TUNED_SPLIT; NET \"signal_name\" INREG; 使用网络signal_name连接的输入引脚的输入寄存器 INST \"Register_name\" INREG; 令寄存器Register_name使用输入引脚的寄存器 CONFIG INTERNAL_VREF_BANKn=v; 132. 133. 134. 135. 136. 137. 138 139 139 140 140 142 DEFAULT /IN_TERM INREG INREG INTERNAL_VREF_BANK 设置BANK n的内部参考电平为v。其中n为BANK号,v的值可选(0.0, 0.6, 0.675, 0.75, 0.9, 1.1, 1.25)等。 CONFIG INTERNAL_VREF_BANK5=1.1; INTERNAL_VREF_BANK 令BANK5的内部参考电平为1.1V。 verilog/ IOB (* IOB = \"{TRUE|FALSE |AUTO|FORCE}\" *) 设置使用IOB中寄存器的方式,允许/不允许/由XST软件决定/强制使用。 INST \"foo/bar\" IOB=TRUE; 允许foo/bar使用IOB中寄存器。 注意:NET \"foo/bar\" IOB=TRUE;为非法描述。 NET \"signal_name\" iob={true|false|auto|force}; 设置使用IOB中寄存器的方式,允许/不允许/由XST软件决定/强制使用。 INST \" instance_name\" iob={true |false |auto|force}; 设置使用IOB中寄存器的方式,允许/不允许/由XST软件决定/强制使用。 (* IOBDELAY = {NONE|BOTH|IBUF|IFD} *) 配置IOB中的延迟单元的使用,延迟路径包括IBUF延迟和IFD延迟,配置值包括NONE(都不使用)、BOTH(都使用)、IBUF(使用IBUF)、IFD(使用IFD)。 138. 142 verilog/ IOB 139. 140. 142 142 IOB IOB 141. 144 verilog/ IOBDELAY 序号 142. 页码 144 关键字 IOBDELAY verilog/ IODELAY_GROUP IODELAY_GROUP IOSTANDARD IOSTANDARD verilog/ KEEP KEEP KEEP verilog/ KEEP_HIERARCHY KEEP_HIERARCHY verilog/ KEEPER KEEPER 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 146 146 148 148 150 151 151 154 154 156 156 举例及描述 INST \"instance_name\" IOBDELAY={NONE|BOTH|IBUF|IFD}; 配置instance_name 在IOB中的延迟单元的使用,延迟路径包括IBUF延迟和IFD延迟,配置值包括NONE(都不使用)、BOTH(都使用)、IBUF(使用IBUF)、IFD(使用IFD)。 (* IODELAY_GROUP = \"group_name\" *) INST \"instance_name\" IODELAY_GROUP = group_name; INST \"instance_name\" IOSTANDARD= iostandard_name; 为实例instance_name分配接口标准为iostandard_name NET \"Pad_net_name\" IOSTANDARD=iostandard_name; 为网络Pad_net_name连接的引脚分配接口标准为iostandard_name (* KEEP = \"{TRUE|FALSE |SOFT}\" *) 设置是否对信号进行保持,可选:保持/不保持/由软件控制。 INST \"instance_name\" KEEP={TRUE|FALSE}; 设置实例\"instance_name\"是否保持可见,可选:保持/不保持 NET \"$1I3245/$SIG_0\" KEEP; 令网络\"$1I3245/$SIG_0\"一直可见。 (* KEEP_HIERARCHY = \"{TRUE|FALSE}\" *) 设置是否保持模块的对外层级关系。 INST \"instance_name\" KEEP_HIERARCHY={TRUE|FALSE}; 设置是否保持实例instance_name的本级层级关系。即实例instance_name的接口信号一直可见。 (* KEEPER = \" {YES|NO|TRUE|FALSE}\" *) NET \"pad_net_name\" KEEPER; 令pad_net_name网络连接的输出引脚上,当信号被撤销时(高阻状态),输出保持保持原状态有效。 序号 154. 155. 156. 157. 158. 159. 160. 161. 162. 页码 156 159 160 160 160 160 160 160 160 关键字 KEEPER LOC LOC LOC LOC LOC LOC LOC LOC 举例及描述 DEFAULT KEEPER = TRUE; 全局设置。令所有输出引脚上,当信号被撤销时(高阻状态),输出保持保持原状态有效。 INST \"instance_name\" LOC=location; 将实例\"instance_name\"分配到location处。 INST \"instance_name\" LOC=P12; 将引脚分配到P12 INST \"instance_name\" LOC=SLICE_X3Y2; 将逻辑分配到SLICE_X3Y2处 INST \"instance_name\" LOC=RAMB16_X0Y6; 将RAM逻辑分配到块RAM RAMB16_X0Y6处 INST \"instance_name\" LOC=MULT18X18_X0Y6; 将乘法器逻辑分配到MULT18X18_X0Y6处 INST \"instance_name\" LOC=FIFO16_X0Y15; 将FIFO逻辑分配到FIFO16_X0Y15处 INST \"instance_name\" LOC=IDELAYCTRL_X0Y3; 将IDELAYCTRL逻辑分配到IDELAYCTRL_X0Y3处 INST \"instance_name\" LOC=SLICE_X2Y10,SLICE_X1Y10; 将逻辑分配到SLICE_X2Y10和SLICE_X1Y10处 INST \"instance_name\" LOC=location1 :location2 {SOFT }; 将实例\"instance_name\"的逻辑分配到由location1 :location2指定的范围中,其中location1 指定范围的左下角,location2指定范围的右下角。若指定SOFT时,则当软件有更好的放置位置时,可以将逻辑放到范围外。 INST \"instance_name\" LOC=SLICE_X3Y5:SLICE_X5Y20; 将实例\"instance_name\"的逻辑分配到由SLICE_X3Y5:SLICE_X5Y20指定的范围中。 (* LOC = \"location\" *) 163. 160 LOC 1. 165. 161 162 LOC verilog/LOC 序号 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 页码 162 162 162 162 163 163 163 1 1 1 1 1 关键字 verilog/LOC LOC LOC LOC LOC LOC LOC LOC LOC LOC LOC LOC 举例及描述 (* LOC = \"location_1 location_2 location_3... ?*) 对总线进行约束。 INST \"/FLIP_FLOPS/*\" LOC=SLICE_X*Y8; 将/FLIP_FLOPS/下的每个实例都放置到第8列的CLB处 INST \"MUXBUF_D0_OUT\" LOC=P110; 将实例MUXBUF_D0_OUT放置到引脚P110 NET \"DATA<1>\" LOC=P111; 将网络DATA<1>连接的引脚放置到P111处 INST \"instance_name\" LOC = DCM_XYB; (for all Spartan devices) 将实例\"instance_name\"放置到DCM_XYB处 INST \"instance_name\" LOC = DCM_ADV_XYB; (for Virtex-4 and Virtex-5 devices) INST \"Myinstance\" LOC = DCM_X0Y0; 将实例\" Myinstance \"放置到DCM_X0Y0 INST \"/top-12/fdrd\" LOC=SLICE_X1Y5; 将实例\"/top-12/fdrd\"放置到SLICE_X1Y5处。 INST \"/top-12/fdrd\" LOC=SLICE_X1Y1:SLICE_X5Y7; 将实例\"/top-12/fdrd\"放置到SLICE_X1Y1:SLICE_X5Y7指定的范围中。 INST \"/top-12/fdrd/top-54/fdsd\" LOC=SLICE_X*Y3; 将实例\"/top-12/fdrd/top-54/fdsd\"放置到任意Y=3的SLICE中。 INST \"/top-54/fdsd\" LOC=SLICE_X2Y4,SLICE_X7Y9; 将实例\" /top-54/fdsd\"放置到SLICE_X2Y4或SLICE_X7Y9处。 CONFIG PROHIBIT=SLICE_X5Y*; 禁止将逻辑放置到X=5的SLICE中。 序号 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 1. 页码 165 165 165 165 166 166 166 167 167 167 167 168 关键字 LOC LOC LOC LOC LOC LOC LOC LOC LOC LOC LOC LOC 举例及描述 INST \"/top-102/data0_pad\" LOC=P17; 将端口\"/top-102/data0_pad\"放置到器件引脚P17。 INST \"instance_name\" LOC=P13; 将实例\"instance_name\"端口放置到器件引脚P13。 CONFIG PROHIBIT=p36, p37, p41; 禁止用户I/O端口使用p36, p37, p41。 INST \"$1I323\" LOC=SLICE_X7Y3; 将实例逻辑\"$1I323\"放置到SLICE_X7Y3 INST \"Top/dec0011\" LOC=CLB_R2C4,CLB_R3C4; 将实例逻辑\"Top/dec0011\"放置到CLB_R2C4或者CLB_R3C4处。 INST \"$3I27\" LOC=SLICE_X5Y5:SLICE_X10Y8; 将实例逻辑\"$3I27\"放置到SLICE_X5Y5:SLICE_X10Y8指定的范围中。 INST \"/top-7/rq\" LOC=MULT18X18_X0Y0; 将实例逻辑\"/top-7/rq\"放置到MULT18X18_X0Y0处。 INST \"/top-7/rq\" LOC=SLICE_X1Y1; INST \"/top-7/rq\" LOC=SLICE_X2Y4,SLICE_X7Y9; CONFIG PROHIBIT=SLICE_X5Y*; INST \"/top-7/rq\" LOC=RAMB16_X0Y0; INST \"instance_name\" LOC=SLICE_X133Y10; 序号 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 页码 168 168 168 168 169 169 169 171 171 171 171 171 关键字 LOC LOC LOC LOC LOC LOC LOC verilog/LOCK_PINS LOCK_PINS LOCK_PINS LOCK_PINS LOCK_PINS 举例及描述 INST \"instance_name\" LOC=SLICE_X0Y*; INST \"instance_name\" LOC=SLICE_X0Y3, SLICE_X67Y120, SLICE_X3Y0; INST \"instance_name\" LOC=SLICE_X3Y22:SLICE_X10Y55; CONFIG PROHIBIT=SLICE_X0Y0; CONFIG PROHIBIT=SLICE_X2Y3:SLICE_X10Y10; CONFIG PROHIBIT=SLICE_X3Y*; CONFIG PROHIBIT=SLICE_X2Y4,SLICE_X7Y9; 禁止将逻辑放置到SLICE_X2Y4和SLICE_X7Y9处。 (* LOCK_PINS = \"all\" *) INST \"XSYM1\" LOCK_PINS; INST \"XSYM1\" LOCK_PINS='ALL'; INST I_5 LOCK_PINS=I0:A2; INST I_4 LOCK_PINS=I3:A1,I2:A4; 序号 202. 页码 171 关键字 LOCK_PINS 举例及描述 INST tvAgy LOCK_PINS=I0:A4,I1:A3,I2:A2,I3:A1; (* LUTNM = \"value\" *) 可以在代码的2个部分为LUTNM设置相同的\"value\",则可以实现2处逻辑分享1个6输入查找表的2个5输入查找表功能。 INST \"LUT5_instance_name\" LUTNM=\"value\"; 语法 INST \"LUT5_inst1\" LUTNM=\"logic_group1\"; INST \"LUT5_inst2\" LUTNM=\"logic_group1\"; 由于2行(必须为2行)约束的值都为\"logic_group1\",则将\"LUT5_inst1\"和\"LUT5_inst2\"分别放入1个6输入查找表的2个5输入查找表中。 INST \"instance_name\" MAP=[PUC | PUO | PLC | PLO] ; 设置实例\"instance_name\"的CLB的MAP类型。 PUC:CLB的PIN为unlocked,CLB为closed。软件可以交换CLB的引脚信号,不能增减CLB逻辑内容。 PUO:CLB的PIN为unlocked,CLB为opened。软件可以交换CLB的引脚信号,能增减CLB逻辑内容。 PLC:CLB的PIN为locked,CLB为closed。软件不能交换CLB的引脚信号,不能增减CLB逻辑内容。 PLO:CLB的PIN为locked,CLB为opened。软件不能交换CLB的引脚信号,能增减CLB逻辑内容。 (* mark_debug = \"{TRUE|FALSE|SOFT}\" *) wire wire_name; 203. 171 LUTNM 204. 174 LUTNM 205. 174 LUTNM 206. 175 MAP 207. 177 208. 179 配置线网wire_name的调试状态。 verilog/ MARK_DEBUG TRUE:将信号作为ChipScope 软件的调试项; FALSE:将本约束忽略; SOFT:当本信号没有被优化掉时,作为ChipScope 软件的调试项。 (* max_fanout = \"integer\" *) verilog/ max_fanout 设置信号的最大扇出系数 序号 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 页码 180 182 182 182 184 184 186 186 186 188 188 188 关键字 max_fanout verilog/MAXDELAY MAXDELAY MAXDELAY verilog/MAXPT MAXPT verilog/MAXSKEW MAXSKEW MAXSKEW MCB_PERFORMANCE MCB_PERFORMANCE MCB_PERFORMANCE 举例及描述 NET \"signal_name\" max_fanout=REDUCE; 当采用MAP Register Duplication选项时,在UCF文件中约束如上。 (*MAXDELAY = \"value [units]\" *) 设置网络信号的最大延迟时间 NET \"net_name\" MAXDELAY=value units; 设置网络\"net_name\"的最大延迟时间 NET \"$1I3245/$SIG_4\" MAXDELAY=10 ns; 网络\"$1I3245/$SIG_4\"的最大延迟时间为10ns。 (* MAXPT = \"integer\" *) 设置CPLD的最大乘积项的值 Net \"signal_name\" maxpt=integer; 网络\"signal_name\"的最大乘积项为integer(1个整数)。 (* MAXSKEW = \"allowable_skew [units]\" *) 设置非全局时钟网络的最大歪斜值 NET \"net_name\" MAXSKEW=allowable_skew [units]; 设置设置非全局时钟网络\"net_name\"的最大歪斜值为allowable_skew [units] NET \"$1I3245/$SIG_6\" MAXSKEW=3 ns; 设置设置非全局时钟网络\"$1I3245/$SIG_6\"的最大歪斜值为3ns CONFIG MCB_PERFORMANCE=[STANDARD|EXTENDED]; CONFIG MCB_PERFORMANCE= STANDARD; Spartan-6的Memory Controller Block(MCB)采用标准配置。 CONFIG MCB_PERFORMANCE=EXTENDED; Spartan-6的Memory Controller Block(MCB)采用高性能配置。 序号 221. 页码 1 关键字 MIODELAY_GROUP 222. 223. 224. 225. 226. 227. 228. 190 191 191 191 192 193 194 NODELAY verilog/NODELAY NODELAY NODELAY verilog/ NOREDUCE NOREDUCE OFFSET IN 举例及描述 MIODELAY_GROUP \"master_group_name\" = iodelay_group1 iodelay_group2 ... ; 针对V4和V5器件,将已经定义过的IODELAY组iodelay_group1 和iodelay_group2组成新的组\"master_group_name\"。 NET \"net_name\" NODELAY; 去掉Spartan-3/-3A/-3E器件的输入延迟单元,此操作可以减小输入建立时间,增大信号保持时间。 (* NODELAY = \"{TRUE|FALSE}\" *) 去掉Spartan-3/-3A/-3E器件的输入延迟单元,此操作可以减小输入建立时间,增大信号保持时间。 INST \"$1I87/inreg67\" NODELAY; IOB寄存器inreg67不使用输入延迟功能 NET \"net1\" NODELAY; 网络\"net1\"连接的输入引脚不使用输入延迟功能。 (* NOREDUCE = \"{TRUE|FALSE}\" *) 是否禁止CPLD逻辑最小化多余项,以避免产生竞争冒险问题。 NET \"$SIG_12\" NOREDUCE; 禁止CPLD逻辑减少生成\"$SIG_12\"信号的布尔逻辑 OFFSET = IN \"offset_time\" [units] [VALID [UNITS]] {BEFORE|AFTER} \"Clk_name\" [{RISING|FALLING}]; 语法 [TIMEGRP \"Pad_groupname\"] OFFSET = IN \"offset_time\"[units] [VALID [UNITS]] {AFTER \"Clk_name\"[TIMEGRP \"Reg_groupname\"] | BEFORE \"Clk_name\"[TIMEGRP \"Reg_groupname\"] [{RISING|FALLING}]}; 语法 NET \"Pad_net_name\" OFFSET = IN \"offset_time\"[units] [VALID [UNITS]]{BEFORE|AFTER} \"Clk_name\"[TIMEGRP \"Reg_groupname\"] [{RISING|FALLING}]; 语法 229. 195 OFFSET IN 230. 196 OFFSET IN 序号 页码 关键字 231. 197 OFFSET IN 举例及描述 NET \"Clock\"TNM_NET = CLK; TIMESPEC TS_CLK = PERIOD CLK 5.0 ns HIGH 50%; OFFSET = IN -250 ps VALID 2 ns BEFORE clock RISING; OFFSET = IN -250 ps VALID 2 ns BEFORE clock FALLING; 语法举例 NET \"Clock\" TNM_NET = CLK; TIMESPEC TS_CLK = PERIOD CLK 5.0 ns HIGH 50%; OFFSET = IN 1 ns VALID 2 ns BEFORE clock RISING; OFFSET = IN 1 ns VALID 2 ns BEFORE clock FALLING; 语法举例 NET \"Clock\" TNM_NET = CLK; TIMESPEC TS_CLK = PERIOD CLK 5.0 ns HIGH 50%; OFFSET = IN 4.5 ns VALID 4 ns BEFORE clock; 语法举例 OFFSET = OUT \"offset_time\"[units] {BEFORE \"Clk_name\"| AFTER \"Clk_name\"[REFERENCE_PIN \"Ref_pin\"]} [{RISING | FALLING}]; 语法 [TIMEGRP \"Pad_groupname\"] OFFSET = OUT \"offset_time\"[units] {BEFORE|AFTER} \"Clk_name\"[REFERENCE_PIN \"Ref_pin\"] [TIMEGRP \"Reg_groupname\"] [{RISING |FALLING}]; 语法 NET \"Pad_net_name\" OFFSET = OUT \"offset_time\" [units] {BEFORE|AFTER} \"Clk_name\" [TIMEGRP \"Reg_groupname\"] [REFERENCE_PIN \"Ref_pin\"] [{RISING | FALLING}]; 语法 232. 198 OFFSET IN 233. 198 OFFSET IN 234. 200 OFFSET OUT/ REFERENCE_PIN OFFSET OUT/ REFERENCE_PIN OFFSET OUT/ REFERENCE_PIN 235. 201 236. 202 序号 页码 关键字 237. 203 OFFSET OUT/ REFERENCE_PIN 举例及描述 NET \"Clock\" TNM_NET = CLK; TIMESPEC TS_CLK = PERIOD CLK 5.0 ns HIGH 50%; OFFSET = OUT AFTER clock REFERENCE_PIN \"TxClock\"RISING; OFFSET = OUT AFTER clock REFERENCE_PIN \"TxClock\"FALLING; 这里没有指定OFFSET OUT的约束时间,约束无效。详见P201第二行 NET \"Clock\"TNM_NET = CLK; TIMESPEC TS_CLK = PERIOD CLK 5.0 ns HIGH 50%; OFFSET = OUT 5 ns AFTER \"Clock\"; (* OPEN_DRAIN = \"{TRUE|FALSE}\" *) verilog语法。仅用于CoolRunnerII器件 NET \"Mysignal\" OPEN_DRAIN; 语法。仅用于CoolRunnerII器件 (* OUT_TERM = \"{NONE|TUNED|UNTUNED_25|UNTUNED_50|UNTUNED_75}\" *) 设置输出端接电阻为:无/ TUNED /25欧姆/50欧姆/75欧姆。 NET \"pad_net_name\"OUT_TERM = \"{NONE|TUNED|UNTUNED_25|UNTUNED_50|UNTUNED_75 }\"; 设置网络\"pad_net_name\"连接的输出引脚端接电阻为:无/ TUNED /25欧姆/50欧姆/75欧姆。 DEFAULT OUT_TERM = TUNED; 设置默认的输出端接电阻类型为TUNED。 TIMESPEC \"TSidentifier\" PERIOD \"TNM_reference\" period {HIGH | LOW} [high_or_low_time] INPUT_JITTER value; 语法。 TIMESPEC TS_master = PERIOD \"Master_clk\" 50 HIGH 30 INPUT_JITTER 50; 应用到网络\"Master_clk\"的时钟周期约束为:周期50ns,时钟初始30ns为高电平,输入抖动为50ps。 238. 203 OFFSET OUT 239. 240. 241. 242. 243. 244. 245. 205 205 207 207 207 209 209 verilog /OPEN_DRAIN OPEN_DRAIN verilog /OUT_TERM OUT_TERM OUT_TERM PERIOD PERIOD 序号 页码 关键字 246. 209 PERIOD 举例及描述 TIMESPEC TS_clkinA = PERIOD \"ClkinA\" 21 ns LOW 50% INPUT_JITTER 500ps; TIMESPEC TS_clkinB = PERIOD \"ClkinB\" 21 ns HIGH 50% INPUT_JITTER 500 ps; 应用到网络\"ClkinA\"的时钟周期约束为:周期21ns,占空比50%,时钟初始为低电平,输入抖动为500ps。 应用到网络\"ClkinB\"的时钟周期约束为:周期21ns,占空比50%,时钟初始为高电平,输入抖动为500ps。 NET \"net_name\"PERIOD = period {HIGH|LOW} [ high_or_low_time]INPUT_JITTER value; 语法。不推荐使用本语法。 TIMESPEC \"TSidentifier\"=PERIOD \"timegroup_name\" \"TSidentifier\" [* or /] factor PHASE [+ |-] phase_value [units]; 语法。 TIMESPEC \"TS01\"= PERIOD \"clk0\" 10.0 ns; 设置网络\"clk0\"的周期为10.0ns,同时将时序标识\"TS01\"的值设置为10.0 ns。 TIMESPEC \"TS02\"= PERIOD \"clk180\" TS01 PHASE + 5.0 ns; 设置网络\"clk180\"的周期为\"TS01\"(10.0ns),相位比\"TS01\"提前5.0 ns。 TIMESPEC \"TS03\"= PERIOD \"clk90\" TS01 PHASE - 2.5 ns; 设置网络\"clk90\"的周期为\"TS01\"(10.0ns),相位比\"TS01\"延后2.5 ns。 TIMESPEC \"TS04\"= PERIOD \"clk180\" TS01 / 2 PHASE + 2.5 nS; 设置网络\"clk180\"的周期为\"TS01/2\"(5.0ns),相位比\"TS01\"提前2.5 ns。 (* PERIOD = \"Period [units]\" *) verilog语法 TIMESPEC \"TSidentifier\" PERIOD \"TNM_reference period\"[units] [{HIGH | LOW} [high_or_low_time [hi_lo_units]]] INPUT_JITTER value [units]; 语法。 NET \"CLOCK\" PERIOD=40 HIGH 25; 设置网络\"CLOCK\"的时钟周期为40ns,时钟初始25ns为高电平。不推荐采用NET的约束方法。 PIN \"Module.pin\" LOC=location ; 将模块的引脚\"Module.pin\"定位到器件的引脚location处。 247. 248. 249. 250. 251. 252. 253. 210 210 210 210 210 210 211 PERIOD/ NET PERIOD/ PHASE PERIOD/ PHASE PERIOD/ PHASE PERIOD/ PHASE PERIOD/ PHASE verilog /PERIOD 254. 212 PERIOD 255. 256. 212 216 PERIOD/ NET PIN 序号 257. 258. 259. 260. 261. 262. 263. 页码 216 217 218 219 220 221 222 关键字 PIN POST_CRC POST_CRC_ACTION POST_CRC_FREQ POST_CRC_INIT_FLAG POST_CRC_SIGNAL POST_CRC_SOURCE 举例及描述 PIN mod.pin TIG; 忽略对模块引脚mod.pin的时序约束。 CONFIG POST_CRC = {ENABLE|DISABLE|ONESHOT}; 全局配置。使能/禁止器件的配置存储区的CRC校验。 CONFIG POST_CRC_ACTION = [HALT|CONTINUE]; 全局配置。暂停/继续POST_CRC的操作,只有当POST_CRC的配置值为ENABLE时有效。 CONFIG POST_CRC_FREQ = [1|3|6|7|8|10|12|13|17|22|25|27|33|44|50|100]; 全局配置。用于配置POST_CRC运行的时钟频率。只有当POST_CRC的配置值为ENABLE时有效。 CONFIG POST_CRC_INIT_FLAG = [DISABLE|ENABLE]; 用于配置是否使用INIT_B引脚作为POST_CRC的信号输出。 CONFIG POST_CRC_SIGNAL = [FRAME_ECC_ONLY|INIT_AND_FRAME_ECC]; CONFIG POST_CRC_SOURCE = {PRE_COMPUTED|FIRST_READBACK}; normal_timespec_syntax PRIORITY integer; 设置时序约束normal_timespec_syntax的优先级为integer。其中integer的值可以为正数、负数和0。值越小,优先级越高。 TIMESPEC \"TS01\" =FROM \"GROUPA\" TO \"GROUPB\" 40 PRIORITY 4; 设置从\"GROUPA\" 到 \"GROUPB\"最大时延为40ns,优先级为4. CONFIG PROHIBIT=location; 禁止使用location位置的资源。支持的位置类型见P224表。 CONFIG PROHIBIT=location1, location2, ... ,locationn; 禁止使用location1, location2, ... ,locationn位置的资源。 CONFIG PROHIBIT=location1:location2; 禁止使用location1:location2位置的资源。 2. 223 PRIORITY 265. 266. 267. 268. 223 225 225 225 PRIORITY PROHIBIT PROHIBIT PROHIBIT 序号 269. 270. 271. 页码 225 225 227 关键字 PROHIBIT PROHIBIT verilog /PULLDOWN 举例及描述 CONFIG PROHIBIT=P45; 禁止使用P45引脚 CONFIG PROHIBIT=SLICE_X6Y8; 禁止使用SLICE_X6Y8处的资源 (* PULLDOWN = \"{YES|NO|TRUE|FALSE}\" *) 令三态网络在没有驱动时保持低电平而不是悬空状态。可用于输入/三态输出/双向引脚。 NET \"pad_net_name\" PULLDOWN; 令网络\"pad_net_name\"连接的引脚的下拉有效。 注意:KEEPER, PULLUP和PULLDOWN只能用于连接引脚的NET,不能用于任何类型的实例(INST)。 DEFAULT PULLDOWN = TRUE; 设置为默认下拉有效。 (* PULLUP = \"{YES|NO|TRUE|FALSE}\" *) 令三态网络在没有驱动时保持高电平而不是悬空状态。可用于输入/三态输出/双向引脚。 NET \"pad_net_name\" PULLUP; 令网络\"pad_net_name\"连接的引脚的上拉有效。 注意:KEEPER, PULLUP和PULLDOWN只能用于连接引脚的NET,不能用于任何类型的实例(INST)。 DEFAULT PULLUP = TRUE; 设置为默认下拉有效。 (* PWR_MODE = \"{LOW|STD}\" *) 仅用于XC9500器件。设置器件宏单元的工作模式是低功耗还是标准(高性能)模式。 NET \"$1187/$SIG_0\" PWR_MODE=LOW; 仅用于XC9500器件。设置实现\"$1187/$SIG_0\"网络的宏单元的工作模式是低功耗。 (* REG = {CE|TFF} *) 仅用于CPLD器件。配置宏单元中寄存器的使用方式。 272. 228 PULLDOWN 273. 274. 228 230 PULLDOWN verilog /PULLUP 275. 230 PULLUP 276. 277. 278. 279. 230 231 232 234 PULLUP verilog /PWR_MODE PWR_MODE verilog / REG 序号 280. 281. 282. 283. 284. 285. 286. 287. 288. 2. 290. 291. 292. 293. 页码 234 234 245 245 248 249 253 253 256 257 259 259 260 261 关键字 REG REG verilog /RLOC RLOC U_SET HU_SET verilog / RLOC_ORIGIN RLOC_ORIGIN verilog / RLOC_RANGE RLOC_RANGE verilog/SAVE NET FLAG SAVE NET FLAG verilog/ SCHMITT_TRIGGER SCHMITT_TRIGGER 举例及描述 INST \"instance_name\" REG = {CE | TFF}; 仅用于CPLD器件。配置宏单元中寄存器的使用方式 INST \"Q1\" REG=CE; 寄存器Q1的CE引脚采用XC9500XL宏单元的时钟使能乘积项产生。 (* RLOC = \"[element ]XmYn [.extension ]\" *) INST \"/V2/design/FF1\" RLOC=X4Y4; 将实例\"/V2/design/FF1\"放置在距离设置原点+4X +4Y处的位置。 U_SET=set_name HU_SET=set_name (* RLOC_ORIGIN = \"value\" *) 设置RLOC的原点的位置\"value\"。\"value\"的格式为XmYn INST \"/archive/designs/FF1\" RLOC_ORIGIN=X4Y4; (* RLOC_RANGE = \"value\" *) \"value\"的格式为Xm1Yn1:Xm2Yn2 INST \"/archive/designs/MACRO4\" RLOC_RANGE=X4Y4:X10Y10; (* S = {YES|NO|TRUE|FALSE} *) 语法 NET $SIG_9 S; 禁止信号$SIG_9被删除,即使该信号没有被使用。 (* SCHMITT_TRIGGER = \"{TRUE|FALSE}\" *) 施密特触发器有效/无效。仅用于CoolRunnerII器件。 NET \"Mysignal\" SCHMITT_TRIGGER; 网络\"Mysignal\"采用施密特触发器。 序号 294. 295. 页码 263 265 举例及描述 INST \"1187/y2\" SIM_COLLISION_CHECK={WARNING_ONLY|GENERATE_X_ONLY|ALL|NONE}; SIM_COLLISION_CHECK 设置当实例\"1187/y2\"中的Block RAM在仿真时发生读写冲突时的处理方式。 (* SLEW=\"value\" *) verilog/ SLEW 设置引脚的输出类型,\"value\"可选FAST或SLOW。 module top ( (* SLEW=\"FAST\" *) output FAST_OUT ; ); 设置输出引脚FAST_OUT的类型为FAST NET \"top_level_port_name\" SLEW=\"value\"; NET \"FAST_OUT\" SLEW=\"FAST\"; 设置输出引脚FAST_OUT的类型为FAST NET \"net_name\" SLOW; 将网络\"net_name\"连接的输出引脚设置为低速。 (* SLOW = \"{TRUE|FALSE}\" *) INST \"$1I87/y2\" SLOW; 将实例的\"$1I87/y2\"设置为低速 NET \"net1\" SLOW; 将网络\"net1\"连接的输出引脚设置为低速。 CONFIG STEPPING=\"n\"; 全局设置。设置器件的等级。n的值可以为:(ES, SCD1, 1, 2, 3, ...)。 CONFIG STEPPING=\"1\"; 器件等级设置为1. 关键字 296. 265 verilog/ SLEW 297. 298. 299. 300. 301. 302. 303. 304. 265 265 267 268 268 268 269 269 SLEW SLEW SLOW verilog/SLOW SLOW SLOW STEPPING STEPPING 序号 305. 页码 271 关键字 verilog/SUSPEND 举例及描述 (* SUSPEND=\"value\" *) 设置器件挂起时输出引脚状态。\"value\"值可设置为DRIVE_LAST_VALUE、3STATE、3STATE_PULLUP、3STATE_PULLDOWN、3STATE_KEEPER。仅用于Spartan-3A/ Spartan-6器件。 module top ( (* SUSPEND=\"DRIVE_LAST_VALUE\" *) output STATUS ); 当器件被挂起时,输出引脚STATUS保持最终的输出状态。 (* SYSTEM_JITTER = \"value ps\" *) 设置系统抖动值,单位为ps。 SYSTEM_JITTER= value ps; 设置系统抖动值,单位为ps。 TEMPERATURE=value [C |F| K]; TEMPERATURE=25 C; 相关分析的节点温度为25℃. NET \"RESET\" TIG=TS_fast, TS_even_faster; 忽略时序约束组TS_fast, TS_even_faster中所有从RESET网络引出的相关路径。 NET \"net_name\" TIG; 忽略所有从\"net_name\"网络引出的相关路径 PIN \"ff_inst.RST\" TIG=TS_1; INST \"instance_name\" TIG=TS_2; TIG=TS identifier1 . . . TS identifiern 忽略时序约束TS identifier1 . . . TS identifiern NET \"RESET\" TIG=TS_fast, TS_even_faster; 忽略时序约束组TS_fast, TS_even_faster中所有从RESET网络引出的相关路径。 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 271 273 273 274 274 276 277 277 277 277 277 verilog/SUSPEND verilog/ SYSTEM_JITTER SYSTEM_JITTER TEMPERATURE TEMPERATURE TIG TIG TIG TIG TIG TIG 序号 317. 页码 279 关键字 TIMEGRP 318. 279 TIMEGRP 举例及描述 TIMEGRP \"big_group\"=\"small_group\" \"Medium_group\"; 将时序约束组\"small_group\" \"Medium_group\"合成为时序约束组\"big_group\"。 TIMEGRP \"many_ffs\"=\"ffs1\" \"ffs2\"; TIMEGRP \"ffs1\"=\"many_ffs\" \"ffs3\"; 上述2句中包含循环定义(\"many_ffs\"和\"ffs1\"互相包含),将会产生错误 TIMEGRP \"group1\"=\"group2\" EXCEPT \"group3\"; 将\"group2\"中去掉与\"group3\"重合的路径后,定义为时序约束组\"group1\"。 TIMEGRP \"Group1\"=\"Group2\" \"Group3\" EXCEPT \"group4\" \"group5\"; 在\"Group2\" \"Group3\"中去掉与\"group4\" \"group5\"重合的路径后,定义为时序约束组\"Group1\"。 TIMEGRP \"Group1\"=RISING FFS; \"Group1\"为包含所有上升沿触发的触发器的时序约束组。 TIMEGRP \"Group2\"=RISING \"ffs_group\"; \"Group2\"为包含\"ffs_group\"组中所有上升沿触发的路径的时序约束组。其中\"ffs_group\"为仅包含触发器的组。 TIMEGRP \"Group3\"=FALLING FFS; \"Group3\"为包含所有下降沿触发的触发器的时序约束组。 TIMEGRP \"Group4\"=FALLING \"ffs_group; \"Group4\"为包含\"ffs_group\"组中所有下降沿触发的路径的时序约束组。其中\"ffs_group\"为仅包含触发器的组。 TIMEGRP \"falling_ffs\"=FALLING FFS; \"falling_ffs\"定义为所有由下降沿触发的触发器的时序约束组。 TIMEGRP \"lowgroup\"=TRANSLO \"latchgroup\"; \"lowgroup\"定义为\"latchgroup\"组中所有由低电平触发的锁存器组成的组。 TIMEGRP \"highgroup\"=TRANSHI \"latchgroup\"; \"highgroup\"定义为\"latchgroup\"组中所有由高电平触发的锁存器组成的组。 TIMEGRP \"Group_name\"=predefined_group(\"Pattern\"); 采用模式匹配的方式建立时序配置组的语法。 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 280 280 280 280 280 280 280 281 280 282 TIMEGRP/ EXCEPT TIMEGRP/ EXCEPT TIMEGRP/ RISING TIMEGRP/ RISING TIMEGRP/ FALLING TIMEGRP/ FALLING TIMEGRP/ FALLING TIMEGRP/ TRANSLO TIMEGRP/ TRANSHI TIMEGRP 序号 329. 页码 283 关键字 TIMEGRP 330. 331. 332. 283 283 283 TIMEGRP/ EXCEPT TIMEGRP/ latches TIMEGRP/FROM TO 举例及描述 TIMEGRP \"Group1\"=FFS(\"$1I3/FRED*\"); 定义一组源网络名称包含\"$1I3/FRED*\"的所有触发器的时序约束组。 疑问:为何这里以\"$1I3/FRED*\"作为触发器的源网络,而不是输出网络。 TIMEGRP \"This_group\"=FFS EXCEPT FFS(\"a*\"); 定义一组输出信号网络名称不包含\"a*\"的所有触发器的时序约束组。 TIMEGRP \"some_latches\"=latches(\"$113/xyz*\"); 定义时序约束组\"some_latches\",组中包含所有输出网络名以$113/xyz*开始的输入锁存器。 TIMESPEC \"TSidentifier\"=FROM predefined_group(\"Pattern\") TO predefined_group(\"Pattern\") value; TIMEGRP \"some_ffs\"=FFS(\"a*:b?:c*d\"); 定义时序约束组\"some_ffs\",组内包含所有符合下列条件之一的触发器:1)包含以a开头的输出信号;2)包含以b开头,并且包含2个字母的输出信号;3)包含以c开头,以d结尾的输出信号。 TIMEGRP \"newgroup\"=\"existing_grp1\" \"existimg_grp2\" [\"existing_grp3\" ...]; TIMEGRP \"GROUP1\"= \"Gr2\" \"GROUP3\"; TIMEGRP \"GROUP3\"= FFS except \"Grp5\"; TIMESPEC \"TSID1\" = FROM \"Gr1\" TO \"Gr2\" 50; TIMESPEC \"TSMAIN\" = FROM \"here\" TO \"There\" TSID1 /2; 定义时序约束TSID1,从\"Gr1\" 到 \"Gr2\"的最大延迟为50ns,同时令TSID1的值为50。 定义时序约束\"TSMAIN\",从\"here\"到 \"There\"的最大延迟为25ns。 上述被引用的TSID1,其所有字母必须用大写。 TIMESPEC \"TSidentifier\"=FROM \"source_group\" TO \"dest_group\" value units; 定义时序约束TSidentifier,从\" source_group \" 到 \" dest_group \"的最大延迟为value units。 333. 283 TIMEGRP 334. 284 TIMEGRP 335. 284 TIMEGRP 336. 287 TIMESPEC 337. 287 TIMESPEC/FROM TO 序号 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 页码 287 287 288 288 288 288 288 2 290 290 290 290 关键字 TIMESPEC/FROM TIMESPEC/TO TIMESPEC/ PERIOD TIMESPEC/FROM TO TIMESPEC/FROM TO TIMESPEC/PERIOD TIMESPEC/PERIOD/ PHASE TNM/ NET TNM/ PIN TNM/ INST TNM TNM 举例及描述 TIMESPEC \"TSidentifier\"=FROM \"source_group\" value units; 定义时序约束TSidentifier,从\" source_group \" 到 \" source_group \"的最大延迟为value units。 TIMESPEC \"TSidentifier\"=TO \"dest_group\" value units; 定义时序约束TSidentifier,从\" dest_group \" 到 \" dest_group \"的最大延迟为value units。 TIMESPEC \"TS_master\"=PERIOD \"Master_clk\" 50 HIGH 30; 定义时序约束TS_master,Master_clk组的周期为50ns,初始高脉冲为30ns。 TIMESPEC \"TS_THIS\"=FROM FFS TO RAMS 35; 定义时序约束TS_THIS,从FFS到 RAMS的最长延迟为35ns。 TIMESPEC \"TS_THAT\"=FROM PADS TO LATCHES 35; 定义时序约束TS_THAT,从PADS 到 LATCHES的最长延迟为35ns。 TIMESPEC \"TSidentifier\"=PERIOD \"timegroup_name\" value [units]; 语法。 TIMESPEC \"TSidentifier\"=PERIOD \"timegroup_name\" \"TSidentifier\" [* or /] factor PHASE [+ |-] phase_value [units]; 语法。 NET \"net_name\" TNM=\"Property_value\"; 将网络\"net_name\"驱动的触发器、锁存器、RAM和PAD组成时序约束组\"Property_value\"。 PIN \"Pin_name\" TNM=\"FLOPS\"; 将引脚\"Pin_name\"驱动的所有路径放入到组成时序约束组\"FLOPS\"中。 INST \"instance_name\" TNM=FLOPS; {NET|PIN} \"net_or_pin_name\" TNM=FFS data; 将网络/引脚\"net_or_pin_name\"驱动的触发器路径放置到时序约束组data中。 {NET|PIN} \"net_or_pin_name\" TNM=RAMS fifo; 将网络/引脚\"net_or_pin_name\"驱动的RAM路径放置到时序约束组fifo中。 序号 350. 351. 352. 353. 页码 290 291 291 291 关键字 TNM TNM TNM TNM 举例及描述 {NET|PIN} \"net_or_pin_name\" TNM=RAMS capture; 将网络/引脚\"net_or_pin_name\"驱动的RAM路径放置到时序约束组capture中。 {NET|INST|PIN} \"net_or_pin_or_inst_name \" TNM= [predefined_group ] identifier ; 语法。 NET clk TNM = FFS (my_flop) Grp1; 将网络clk驱动的所有符合如下条件(输出包括包括网络名my_flop信号)的触发器放置到时序约束组Grp1中。 INST clk TNM = FFS (my_macro) Grp2; 将实例clk驱动的所有符合如下条件(输出包括驱动实例my_macro的信号)的触发器放置到时序约束组Grp2中。 NET \"PADCLK\" TNM= \"PADGRP\"; 说明:网络PADCLK为输入引脚直接连接的网络,该网络经过IBUF后变为网络INTCLK。 将网络PADCLK驱动的同步器件放置到时序约束组\"PADGRP\"中。由于TNM不能穿过IBUF,该约束组为空。 NET \"PADCLK\" TNM=FFS \"FFGRP\"; 说明:网络PADCLK为输入引脚直接连接的网络,该网络经过IBUF后变为网络INTCLK。 将网络PADCLK驱动的所有触发器放置到时序约束组\"FFGRP\"中。由于TNM不能穿过IBUF,该约束组为空。 NET \"INTCLK\" TNM=FFS FFGRP; 说明:网络PADCLK为输入引脚直接连接的网络,该网络经过IBUF后变为网络INTCLK。 将网络INTCLK驱动的所有触发器放置到时序约束组\"FFGRP\"中。 NET PADCLK TNM_NET=FFS FFGRP; 说明:网络PADCLK为输入引脚直接连接的网络,该网络经过IBUF后变为网络INTCLK。 将网络PADCLK驱动的所有触发器放置到时序约束组\"FFGRP\"中。由于TNM_NET能穿过IBUF,该约束组不为空。 {NET|INST} \"net_name\" TNM_NET=[predefined_group:]identifier; 语法。 NET clk TNM_NET = FFS (my_flop) Grp1; 将网络clk驱动的所有符合如下条件(输出包括包括网络名my_flop信号)的触发器放置到时序约束组Grp1中。 354. 294 TNM 355. 294 TNM 356. 294 TNM 357. 294 TNM_NET 358. 359. 295 295 TNM_NET TNM_NET 序号 360. 361. 362. 363. 3. 365. 366. 367. 368. 页码 295 296 299 299 299 299 300 300 300 关键字 TNM_NET TNM_NET TPSYNC TPSYNC TPSYNC TPSYNC TPTHRU TPTHRU TPTHRU 举例及描述 INST clk TNM_NET = FFS (my_macro) Grp2; 将实例clk驱动的所有符合如下条件(输出包括驱动实例my_macro的信号)的触发器放置到时序约束组Grp2中。 NET \"PADCLK\" TNM_NET=FFS \"GRP1\"; 将网络PADCLK驱动的所有触发器放置到时序约束组\"GRP1\"中。 NET \"net_name\" TPSYNC=identifier; INST \"instance_name\" TPSYNC=identifier; PIN \"Pin_name\" TPSYNC=identifier; NET \"logic_latch\" TPSYNC=latch; NET \"net_name\" TPTHRU=identifier; 将网络\"net_name\"定义为时序路径标识符identifier。 INST \"instance_name\" TPTHRU=identifier; 将实例\"instance_name\"定义为时序路径标识符identifier。 PIN \"instance_name.pin_name\" TPTHRU=\"thru_group_name\"; 将引脚\"instance_name.pin_name\"定义为时序路径标识符\"thru_group_name\"。 TIMESPEC \"TSidentifier\" = FROM \"source_group\" THRU \"Thru_point\" [THRU \"Thru_point\"] TO \"dest_group\" allowable_delay [units]; 语法。 TIMESPEC \"TSidentifier\" = FROM \"source_group\" THRU \"Thru_point\" [THRU \"Thru_point\"] allowable_delay [units]; 语法。 369. 301 FROM THRU TO 370. 301 FROM THRU 序号 页码 关键字 371. 301 FROM THRU TO 举例及描述 INST \"FLOPA\" TNM=\"A\"; INST \"FLOPB\" TNM=\"B\"; NET \"MYNET\" TPTHRU=\"ABC\"; TIMESPEC \"TSpath1\"=FROM \"A\" THRU \"ABC\" TO \"B\" 30; 从时序约束组A经过ABC到时序约束组B的最大延迟为30ns。 NET \"on_the_way\" TPTHRU=\"here\"; 将网络\"on_the_way\"定义为中间点,并用时序约束名\"here\"进行命名。 TIMESPEC \"TSidentifier\" = FROM \"source_group\" TO \"dest_group\" allowable_delay [units]; 语法。 TIMESPEC \"TSidentifier\"=FROM \"source_group\" THRU \"Thru_point\" [THRU \"Thru_point1\"... \"Thru_pointn\"] TO \"dest_group\" allowable_delay [units]; 语法。 TIMESPEC \"TSidentifier\"=FROM \"source_group\" TO \"dest_group\" another_TSid [/ | *] number; 372. 373. 301 303 TPTHRU FROM TO 374. 303 FROM THRU TO 375. 304 376. 304 377. 304 378. 305 语法。 TIMESPEC \"TSidentifier\"=PERIOD \"TNM_reference\" value [units] [{HIGH | LOW} [high_or_low_time [hi_lo_units]]] PERIOD/ INPUT_JITTER INPUT_JITTER value; 语法。 TIMESPEC \"TSidentifier\"=PERIOD \"TNM_reference\" \"another_PERIOD_identifier\"[/ | *]number [{HIGH | LOW} PERIOD/ INPUT_JITTER [high_or_low_time [hi_lo_units]]] INPUT_JITTER value; 语法。 TIMESPEC \"TSidentifier\"=FROM \"source_group\" TO \"dest_group\" TIG; FROM TO/TIG 语法。 FROM THRU TO/TIG TIMESPEC \"TSidentifier\"= FROM \"source_group\" THRU \"Thru_point\" [THRU \"Thru_point1\"... \"Thru_pointn\"] TO \"dest_group\" TIG; 语法。 FROM TO 379. 305 序号 380. 381. 382. 383. 384. 页码 305 305 307 307 307 关键字 FROM TO PERIOD vreilog/U_SET U_SET U_SET vreilog/ USE_INTERNAL_VREF USE_INTERNAL_VREF vreilog/USE_LUTNM USE_LUTNM vreilog/ USE_RLOC vreilog/ USE_RLOC vreilog/ USELOWSKEWLINES 举例及描述 TIMESPEC \"TS_35\"=FROM \"here\" TO \"there\" 50; 时序约束\"TS_35\"规定从组\"here\"到组\"there\"的最大延迟为50ns。 TIMESPEC \"TS_70\" = PERIOD \"Clock_a\" 25 high 15; 时序约束\"TS_70\"规定组\"Clock_a\"的周期约束为25ns,其周期第一个脉冲为15ns的高电平。 (* U_SET = name *) 语法。 INST \"instance_name\" U_SET= name; INST \"$1I3245/ELEM_1\" U_SET=JET_SET; (* USE_INTERNAL_VREF = \"{TRUE|FALSE|DONT_CARE}\" *) 只对Virtex-6器件有效。设置是否使用内部的IO BANK电压参考,当使用内部电压参考时,IO BANK的Vref引脚可以用作其他功能。 INST \"instance_name\" USE_INTERNAL_VREF={TRUE|FALSE|DONT_CARE}; 只对Virtex-6器件有效。 (* USE_LUTNM = \"{TRUE|FALSE}\" *) 设置某个单元是否打开/关闭LUTNM。只能用于实例和宏,不能用于网络。 INST \"instance_name\" USE_LUTNM={TRUE|FALSE}; 打开/关闭实例\"instance_name\"中的LUTNM。 (* USE_RLOC = \"{TRUE|FALSE}\" *) 语法。只能用于实例和宏,不能用于网络。 INST \"instance_name\" USE_RLOC={TRUE | FALSE}; 语法。只能用于实例和宏,不能用于网络。 (* USELOWSKEWLINES = \"{YES|NO|TRUE|FALSE}\" *) 指定网络使用低歪斜路径资源。只有当所有的主全局时钟被使用后才能使用本约束。 385. 308 386. 387. 388. 3. 390. 391. 309 310 311 314 314 316 序号 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 页码 316 317 318 318 318 320 321 321 322 322 324 324 关键字 USELOWSKEWLINES VCCAUX vreilog/VCCAUX_IO VCCAUX_IO VCCAUX_IO VOLTAGE VREF VREF vreilog/WIREAND WIREAND vreilog/XBLKNM XBLKNM 举例及描述 NET \"$1I87/$1N6745\" USELOWSKEWLINES; 指定网络\"$1I87/$1N6745\"使用低歪斜路径资源。只有当所有的主全局时钟被使用后才能使用本约束。 CONFIG VCCAUX=\"value\"; 设置VCCAUX的电压值,\"value\"可选2.5和3.3。本约束只用于Spartan-3A和Spartan-6器件。 (* VCCAUX_IO = { NORMAL|HIGH|DONTCARE} *) 设置高速IO bank的电源类型。用于Kintex-7和Virtex-7器件。 NET \"net_name\" VCCAUX_IO=(0| NORMAL|HIGH|DONTCARE); INST \"instance_name\" VCCAUX_IO=( NORMAL|HIGH|DONTCARE); VOLTAGE=value [V]; 设置器件的工作电压。为全局约束。 CONFIG VREF=value_list; 语法 CONFIG VREF=P12,P13; 举例。 (* WIREAND = \"{YES|NO|TRUE|FALSE}\" *) 允许/禁止线与操作。仅用于XC9500类型器件。 NET \"$I167/SIG_11\" WIREAND; 允许对\"$I167/SIG_11\"网络进行线与优化。仅用于XC9500类型器件。 (* XBLKNM = \"block_name\" *) 语法。 INST \"instance_name\" XBLKNM=block_name; 序号 404.页码 324 关键字 XBLKNM 举例及描述 INST \"$1I87/flip_flop2\" XBLKNM=U1358;