首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ISE约束--UCF编辑的入门介绍(2)

ISE约束--UCF编辑的入门介绍(2)

摘要:本文主要通过一个实例具体介绍ISE中通过编辑UCF文件来对FPGA设计进行约束,主要涉及到的约束包括时钟约束、群组约束、逻辑管脚约束以及物理属性约束。
Xilinx FPGA设计约束的分类
Xilinx定义了如下几种约束类型:
• “Attributes and Constraints”
• “CPLD Fitter”
• “Grouping Constraints”
• “Logical Constraints”
• “Physical Constraints”
• “Mapping Directives”
• “Placement Constraints”
• “Routing Directives”
• “Synthesis Constraints”
• “Timing Constraints”
• “Configuration Constraints”
通过编译UCF(user constraints file)文件可以完成上述的功能。
还是用实例来讲UCF的语法是如何的。
[url=https://6eyzew.bay.livefilestore.com/y1m68AsVJX5tMwx3Pu08rhGPUX38S40YO3GjMAMZeFUaD84ZGyn7NkIvMh6jNriBvX8u_w6mrteaUA3FYasSes5kGT7zpo3zSCwHwwAdvYruYihUDbuy-Gky74mBCRmKQ8CtOBhXlglSj0w5VwltpjZHg/image[3]%205D02F480.png][img]https://6eyzew.bay.livefilestore.com/y1mq_D8bB5bsJplIkEA2AYFduxmN-ilLAaS4j6XdoBY1Vl0X369zo9oiGTcOEDv_uggTemsfcm8miKSOT-xoUj59e9Z8W3iiRBvo7wKi_FgJ0r7Q6tK3z1g12rlZSnD6eouIwoqrkzWwv535fGx7anh1g/image_thumb[1]%200F490D17.png[/img][/url]
图1 RTL Schematic
图1 是顶层文件RTL图,左侧一列输入,右侧为输出,这些端口需要分配相应的FPGA管脚。
   1: NET "pin_sysclk_i" LOC = AD12 | TNM_NET = pin_sysclk_i;   2: TIMESPEC TS_pin_sysclk_i = PERIOD "pin_sysclk_i" 15 ns HIGH 50 %;   3: #   4: NET "pin_plx_lreset_n_i"  LOC = B18;   5: #   6: NET "pin_plx_lhold_i"  LOC = C17;   7: NET "pin_plx_lholda_o" LOC = D17 | SLEW = FAST;   8: #   9: NET "pin_plx_ads_n_i"  LOC = E18;  10: NET "pin_plx_ads_n_i" OFFSET = IN 6.3 ns AFTER "pin_sysclk_i" HIGH;  11: #  12: NET "pin_plx_lw_r_n_i"  LOC = E9;  13: NET "pin_plx_lw_r_n_i" OFFSET = IN 6.3 ns AFTER "pin_sysclk_i" HIGH;  14: #  15: NET "pin_plx_blast_n_i"  LOC = D18;  16: NET "pin_plx_blast_n_i" OFFSET = IN 6.3 ns AFTER "pin_sysclk_i" HIGH;  17: #  18: NET "pin_plx_lad_io<0>" LOC = AD13 | SLEW = FAST | TNM = LAD;  19: NET "pin_plx_lad_io<1>" LOC = AC13 | SLEW = FAST | TNM = LAD;  20: NET "pin_plx_lad_io<2>" LOC = AC15 | SLEW = FAST | TNM = LAD;  21: NET "pin_plx_lad_io<3>" LOC = AC16 | SLEW = FAST | TNM = LAD;  22: NET "pin_plx_lad_io<4>" LOC = AA11 | SLEW = FAST | TNM = LAD;  23: NET "pin_plx_lad_io<5>" LOC = AA12 | SLEW = FAST | TNM = LAD;  24: NET "pin_plx_lad_io<6>" LOC = AD14 | SLEW = FAST | TNM = LAD;  25: NET "pin_plx_lad_io<7>" LOC = AC14 | SLEW = FAST | TNM = LAD;  26: NET "pin_plx_lad_io<8>" LOC = AA13 | SLEW = FAST | TNM = LAD;  27: NET "pin_plx_lad_io<9>" LOC = AB13 | SLEW = FAST | TNM = LAD;  28: NET "pin_plx_lad_io<10>" LOC = AA15 | SLEW = FAST | TNM = LAD;  29: NET "pin_plx_lad_io<11>" LOC = AA16 | SLEW = FAST | TNM = LAD;  30: NET "pin_plx_lad_io<12>" LOC = AC11 | SLEW = FAST | TNM = LAD;  31: NET "pin_plx_lad_io<13>" LOC = AC12 | SLEW = FAST | TNM = LAD;  32: NET "pin_plx_lad_io<14>" LOC = AB14 | SLEW = FAST | TNM = LAD;  33: NET "pin_plx_lad_io<15>" LOC = AA14 | SLEW = FAST | TNM = LAD;  34: NET "pin_plx_lad_io<16>" LOC = D12 | SLEW = FAST | TNM = LAD;  35: NET "pin_plx_lad_io<17>" LOC = E13 | SLEW = FAST | TNM = LAD;  36: NET "pin_plx_lad_io<18>" LOC = C16 | SLEW = FAST | TNM = LAD;  37: NET "pin_plx_lad_io<19>" LOC = D16 | SLEW = FAST | TNM = LAD;  38: NET "pin_plx_lad_io<20>" LOC = D11 | SLEW = FAST | TNM = LAD;  39: NET "pin_plx_lad_io<21>" LOC = C11 | SLEW = FAST | TNM = LAD;  40: NET "pin_plx_lad_io<22>" LOC = E14 | SLEW = FAST | TNM = LAD;  41: NET "pin_plx_lad_io<23>" LOC = D15 | SLEW = FAST | TNM = LAD;  42: NET "pin_plx_lad_io<24>" LOC = D13 | SLEW = FAST | TNM = LAD;  43: NET "pin_plx_lad_io<25>" LOC = D14 | SLEW = FAST | TNM = LAD;  44: NET "pin_plx_lad_io<26>" LOC = F15 | SLEW = FAST | TNM = LAD;  45: NET "pin_plx_lad_io<27>" LOC = F16 | SLEW = FAST | TNM = LAD;  46: NET "pin_plx_lad_io<28>" LOC = F11 | SLEW = FAST | TNM = LAD;  47: NET "pin_plx_lad_io<29>" LOC = F12 | SLEW = FAST | TNM = LAD;  48: NET "pin_plx_lad_io<30>" LOC = F13 | SLEW = FAST | TNM = LAD;  49: NET "pin_plx_lad_io<31>" LOC = F14 | SLEW = FAST | TNM = LAD;  50: TIMEGRP "LAD" OFFSET = IN 6.4 ns AFTER "pin_sysclk_i" HIGH;  51: TIMEGRP "LAD" OFFSET = OUT 3.1 ns BEFORE "pin_sysclk_i" HIGH;  52: #  53: NET "pin_plx_ready_n_o" LOC = F18 | SLEW = FAST;  54: NET "pin_plx_ready_n_o" OFFSET = OUT 4.2 ns BEFORE "pin_sysclk_i" HIGH;  55: #  56: NET "pin_plx_bterm_n_o" LOC = D10 | SLEW = FAST;  57: NET "pin_plx_bterm_n_o" OFFSET = OUT 4.2 ns BEFORE "pin_sysclk_i" HIGH;  58: #  59: NET "pin_led_o<0>" LOC = D22;  60: NET "pin_led_o<1>" LOC = C22;  61: NET "pin_led_o<2>" LOC = E21;  62: NET "pin_led_o<3>" LOC = D21;  63: NET "pin_led_o<4>" LOC = C21;  64: NET "pin_led_o<5>" LOC = B24;  65: NET "pin_led_o<6>" LOC = C20;  66: NET "pin_led_o<7>" LOC = B23;

表1. UCF example
对上面的UCF文件进行一些注释:
该UCF文件主要是完成了管脚的约束、时钟的约束,以及组的约束。
继承事业,薪火相传
返回列表