ISE约束文件*.ucf的写法

之前一直相不明白,为什么从官网下载的AC97的IP不能跑起来,整个IP就像空壳一样,bit_clk输进去,没有任何信号输出来。从IP的RTL来看,即使是IP不连到CPU的BUS上,只要是综合进FPGA了,当BIT_CLK信号输进IP时,SD_OUT,SYNC就应该有数据和信号输出,但奇怪的是,它们不是为高就是为低,跳都不跳一下,很显然,IP的输出信号并没有成功的输出到管脚上。

后来才发现,原来是约束的问题,看来对于FPGA设计来说,约束真的很重要啊。

下面介绍几种常用的约束语句,以备查阅。

NET "clk0" TNM_NET = "sys_clk_grp"; #在时钟网线clk上附加一个TNM_NET约束,把clk0驱动的所有同步元件定义为一个名为sys_clk的分组

#使用TIMESPEC约束sys_clk_grp的周期

TIMESPEC "TS_ sys_clk_grp " = PERIOD " sys_clk_grp " 9.9 ns HIGH 50 %;#周期9.9ns,HIGH指出时钟周期里的第一个脉冲是高电平,如果是LOW表示是低电平,占空比50%

# FROM_TO用来定义两个逻辑组之间的时序约束

#语法:TIMESPEC "TS_name " = FROM "group1" TO " group2" value;

TIMESPEC "TS_p2s" = FROM "pads" TO "ffs" 10; # pads到ffs延迟10ns

#最大偏移约束MAXSKEW用于说明同一点驱动的时钟信号经过路径传播后,到达两个或多个终点的时间差

NET “AC97_Bit_Clk” MAXSKEW =10ns;

NET tft_wr LOC=C11 | IOSTANDARD = LVCMOS33;

NET clk0 IOSTANDARD = LVCMOS33;#IO电平标准 有LVCMOS25、LVTTL、SSTL2_I、LVDCI_33等

NET sys_rst_in LOC = D6;

NET sys_rst_in PULLUP;# PULLUP、 PULLDOWN上拉和下拉设置

NET sys_rst_in TIG;# TIG(Timing Ignore)不进行时序约束

NET SYNC DRIVE = 8 | SLEW = SLOW;# DRIVE :最小驱动电流,单位mA,可以有2,4,6,8,12,16这几种模式,SLEW ={FAST|SLOW|QUIETIO}, QUIETIO仅用在Spartan-3A。SLEW是压摆 ,如果slew=fast 会出现过冲,此时DRIVE如果很大(12mA)会导致输出功率的失真很厉害,有可能会不满足外接的器件的要求。

#通配符

NET gpio_char_lcd<6> LOC = AE13;

NET gpio_char_lcd<5> LOC = AC17;

NET gpio_char_lcd<4> LOC = AB17;

NET gpio_char_lcd<3> LOC = AF12;

NET gpio_char_lcd<2> LOC = AE12;

NET gpio_char_lcd<1> LOC = AC10;

NET gpio_char_lcd<0> LOC = AB10;

NET gpio_char_lcd<*> IOSTANDARD = LVCMOS33;

NET gpio_char_lcd<*> TIG;

NET gpio_char_lcd<*> PULLDOWN; # *表示任意字符串

#区域约束

# Locate DCM/BUFG - Tools can probably figure them out automatically

# but just LOC them down to be safe

INST dcm_0/dcm_0/DCM_ADV_INST LOC = DCM_ADV_X0Y1;

INST dcm_1/dcm_1/DCM_ADV_INST LOC = DCM_ADV_X0Y2;

INST dcm_2/dcm_2/DCM_ADV_INST LOC = DCM_ADV_X0Y0;

INST dcm_0/dcm_0/CLK0_BUFG_INST LOC = BUFGCTRL_X0Y0;

INST dcm_0/dcm_0/CLK90_BUFG_INST LOC = BUFGCTRL_X0Y1;

INST dcm_0/dcm_0/CLKDV_BUFG_INST LOC = BUFGCTRL_X0Y2;

INST dcm_1/dcm_1/CLK0_BUFG_INST LOC = BUFGCTRL_X0Y31;

INST dcm_1/dcm_1/CLK90_BUFG_INST LOC = BUFGCTRL_X0Y30;

区域的约束相当于将布局过程中指定特定型号的器件的位置,这完全可以通过FloorPlanner的GUI界面进行设置,用图形界面设置完后,配置信息会放到UCF中,这里只介绍UCF的使用。

例如:

INST "Done" LOC = "SLICE_X32Y163" ; #Done映射为一个寄存器,映射到SLICE_X32Y163的位置上。(32,163)相当于一个坐标,可以用FloorPlanner进行查看。INST"BRAM4/BU2/U0/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v4_init.ram/TRUE_DP.SINGLE_PRIM.TDP"LOC = "RAMB16_X2Y22" ;#RAM16的一个映射。

又例如,X,Y,Z是对应的是寄存器。现在想把它们放在一个指定的区域中,我可以这样写,

INST “X” AREA_GROUP = reg;

INST “X” AREA_GROUP = reg;

INST “X” AREA_GROUP = reg;

AREA_GROUP reg RANGE = SLICE_X1Y1 :SLICE_X1Y6;

注:如何查看INST中的名称呢?在ISE中 Timing constraints editor中可以查看。

参考:
1 . http://www.eefocus.com/yq000cn/blog/10-03/185475_6dce2.html
2. http://bbs.ednchina.com/BLOG_ARTICLE_144140.HTM

转载自:心的微笑的博客

转载自 :http://blog.sina.com.cn/s/blog_8200ad9b0101ordv.html

时间: 2024-10-11 23:32:27

ISE约束文件*.ucf的写法的相关文章

Xilinx FPGA用户约束文件(转自xilinx ISE 开发指南

FPGA设计中的约束文件有3类:用户设计文件(.UCF文件).网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束.管 脚约束以及区域约束.3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF文件,最后再经过实现后生成PCF 文件.UCF文件是ASC 2码文件,描述了逻辑设计的约束,可以用文本编辑器和Xilinx约束文件编辑器进行编辑.NCF约束文件的语法和UCF文件相同,二者的区别在于: UCF文件由用户输入,NCF文件由综合工

Xilinx的约束文件

FPGA中有三种约束文件,分别是用户设计文件(.ucf文件),网表约束文件(.NCF文件)与物理约束文件(.PCF文件). 在设计阶段,需要硬件描述文件与UCF文件,经过综合后生成NCF文件,最后得到PCF文件. UCF 文件的语法: {NET|INST|PIN} "signal_name" Attribute; “signal_name”是指 所约束对象的名字,包含了对象所在层次的描述: “Attribute”为约束的具体描述:语句必须以分号“. 抽空再记.

eclipse添加约束文件

DTD 类型约束文件     1. Window->Preferences->XML->XML Catalog->User Specified Entries窗口中,选择Add 按纽             2.在Add XML Catalog Entry 对话框中选择或输入以下内容:         Location: F:\soft\programmingSoft\Framework\Ibatis\sql-map-config-2.dtd         Key Type: U

Eclipse:xml文件中添加.xsd约束文件

今天在使用dubbo的时候,XML文件一直报错.找不到dubbo的xsd约束文件. cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element   'dubbo:reference' 解决方法: 找到dubbo的jar包,然后在META-INF目录下面,找到dubbo.xsd文件. 然后在eclipse中window--> preferences

Vivado约束文件(XDC)的探究(1)

工程建好之后会出现xdc文件: 注意:active 和 target 生成的约束文件如下:

Spring最全约束文件

最全Spring约束文件. 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.s

Myelipse中xml约束文件的导入(以spring为例)

为了在电脑处于未联网状态下,beans.xml中书写标签具有提示功能,需要在电脑本地导入约束文件,下面上图 注意:将location后缀添加到key中beans的后面 注意:导入 context,aop,tx约束的方法同导入beans方法一致,不在截图 这样就是四个约束全部导入成功!!! 接下来将约束写入xml配置文件,书写根元素beans 其他的约束导入xml方式与beans相同,导入成功如下图,这个时候就有提示了. 原文地址:https://www.cnblogs.com/Danial777

在eclipse中引入mybatis和spring的约束文件

eclipse中引入mybatis约束文件步骤: 首先: confi的key值 http://mybatis.org/dtd/mybatis-3-config.dtd mapper的key值 http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd eclipse中引入mybatis约束文件步骤:             原文地址:https://www.cnblogs.com/rgever/p/9355179.html

C#文件路径的写法

在C#中 “\”是特殊字符,要表示它的话需要使用“\\”.由于这种写法不方便,C#语言提供了@对其简化.只要在字符串前加上@即可直接使用“\”.所以上面的路径在C#中应该表示为“Book”,@“\Tmp\Book”,@“C:\Tmp\Book”. 1.绝对路径 绝对路径是指文件在硬盘上真正存在的路径.例如“bg.jpg”这个图片是存放在硬盘的“E:\book\网页布局代码\第2章”目录下,那么 “bg.jpg”这个图片的绝对路径就是“E:\book\网页布\代码\第2章\bg.jpg".那么如果