xilinx时序约束
更新时间:2024-04-24 11:47:01 阅读量: 综合文库 文档下载
前一段时间调试了xilinx的板子上跑代码,自己加IP核,看了它的约束文件,在网上找了一些讲语法的资料,自己整理了一下,我感觉在你了解了语法之后,确实得好好看一下它自己给出的约束,有些我自己没用到,我就没整理了。 1.约束文件的概念
FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件), 可以完成时序约束、管脚约束以及区域约束。3类约束文件的关系为: 用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF文件,最后再经过实现后生成PCF 文件。 本节主要介绍UCF文件的使用方法。
UCF文件是ASC 2码文件,描述了逻辑设计的约束,可以用文本编辑器和Xilinx约束文件编辑器进行编辑。
NCF约束文件的语法和UCF文件相同,二者的区别在于: UCF文件由用户输入,NCF文件由综合工具自动生成,
当二者发生冲突时,以UCF文件为准,这是因为UCF的优先级最高。PCF文件可以分为两个部分:
一部分是映射产生的物理约束,另一部分是用户输入的约束,同样用户约束输入的优先级最高。
一般情况下,用户约束都应在UCF文件中完成,不建议直接修改 NCF文件和PCF文件。 2.UCF文件的语法说明
UCF文件的语法为:
{NET|INST|PIN} \其中,“signal_name”是指所约束对象的名字,包含了对象所在层次的描述;
“Attribute”为约束的具体描述;语句必须以分号“;”结束。可以用“#”或“/* */”添加注释。
需要注意的是:UCF文件是大小写敏感的,信号名必须和设计中保持大小写一致,但约束的关键字可以是大写、小写甚至大小写混合。 在UCF文件中描述管脚分配的语法为: NET “端口名称” LOC = 引脚编号;
NET \就是所约束信号名,LOC = P30;是约束具体的含义,将CLK信号分配到FPGA的P30管脚上。 通配符
在UCF文件中,通配符指的是“*”和“?”。“*”可以代表任何字符串以及空,“?”则代表一个字符。
在编辑约束文件时,使用通配符可以快速选择一组信号,当然这些信号都要包含部分共有的字符串。例如: NET \
将包含“CLK”字符并以一个字符结尾的所有信号,并提高了其速率。 在位置约束中,可以在行号和列号中使用通配符。例如: INST \
把CLK_logic层次中所有的实例放在第7列的CLB中。 3.约束
3.1管脚约束:
最简单的应用主要是位置约束LOC,和电平标准IOSTANDARD NET CLK_27MHZ_FPGA LOC=\DCI
NET CLK_33MHZ_FPGA LOC=\DCI
NET CLK_FPGA_N LOC=\ fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<5> IOSTANDARD = LVCMOS33; 3.2时序约束: 1)周期约束
PERIOD约束是一个基本时序和综合约束,它附加在时钟网线上,时序分析工具根据PERIOD约束检查时钟域内所有同步元件的时序是否满足要求,
它将检查与同步时序约束端口相连接的所有路径的延迟,但是不会检查PAD到寄存器的路径。
附加时钟周期约束的首选方法(Preferred Method)语法如下: TIMESPEC “TSidentifier” = PERIOD “TNM_reference” period {HIGH|LOW} [high_or_low_time]
其中“[]”内为可选项,“{}”为必选项,参数period为要求的时钟周期,可以使用ps、ns、us或者ms等单位,大小写都可以,缺省单位为
ns。
HIGH|LOW关键词指出时钟周期里的第一个脉冲是高电平还是低电平,而high_or_low_time为脉冲的延续时间,缺省单位也是ns,如果不提供该项, 则缺省占空比为50%。
TIMESPEC是一个基本时序相关约束标识,表示本约束为时序规范。TSidentifier包括字母TS和一个标识符identifier(为ASCII码字符串)
共同组成一个时序规范。例如定义时钟周期约束时,首先在时钟网线clk上附加一个TNM_NET约束,把clk驱动的所有同步元件定义为一个名为sys_clk的分组,
然后使用TIMESPEC约束定义时钟周期。 NET “clk” TNM_NET=”sys_clk”;
TIMESPEC “TS_sys_clk”= PERIOD “sys_clk” 50 HIGH 30; 而定义派生时钟的语法如下:
TIMESPEC “TSidentifier_2”=PERIOD “timegroup_name” “TSidentifier_1” [*or/] factor PHASE [+|-] phase_value [units]; 其中TSidentifier_2为要定义的派生时钟,TSidentifier_1为已经定义的时钟,factor指出两者周期的辈出关系,是一个浮点数。 phase_value指出两者之间的相位关系,为浮点数。例如:
定义主时钟clk0:
TIMESPEC “TS01” = PERIOD “clk0” 10.0 ns; 定义派生时钟clk180,其相位与主时钟相差180°:
TIMESPEC “TS02” = PERIOD “clk180” TS01 PHASE + 5.0 ns; 定义派生时钟clk180_2,其周期为主时钟的1/2,并延迟2.5ns: TIMESPEC “TS03” = PERIOD “clk180_2” TS01 /2 PHASE + 2.5 ns;
2)偏移约束
偏移约束规定了外部时钟和数据输入输出引脚之间的时序关系,只用于与PAD相连的信号,不能用于内部信号。
使用该约束可以为综合实现工具指出输入数据到达的时刻,或者输出数据稳定的时刻,从而在综合实现中调整布局布线过程, 使正在开发的FPGA/CPLD的输入建立时间以及下一级电路的输入建立时间满足要求。 基本语法如下:
OFFSET = {IN|OUT} “offset_time” [units] {BEFORE|AFTER} “clk_name” [TIMEGRP “group_name”];
其中{IN|OUT}说明约束的是输入还是输出,offset_time为FPGA引脚数据变化与有效时钟沿之间的时间差,BEFORE|AFTER说明该时
间差在有效时钟沿的前面还是后面,TIMEGRP “group_name”定义了约束的触发器组,缺省时约束该时钟驱动的所有触发器。 OFFSET根据芯片外围电路的时序特性约束了内部延时。 OFFSET_IN 约束输入信号
OFFSET_IN_AFTER:输入信号(in)在时钟后(after)多长时间进入芯片。
OFFSET_IN_BEFORE:输入信号(in)在时钟前(before)多长时间进入芯片。
显然 CLOCK = OFFSET_IN_AFTER + OFFSET_IN_BEFORE。 OFFSET_IN_AFTER 反映的是外围电路的时序特性,我们无法左右。
OFFSET_IN_BEFORE 是留给芯片的时序余量。PAR的目的就是要满足这个余量,不得超过。 OFFSET_OUT 约束输出信号
OFFSET_OUT_AFTER:输出信号(out)在时钟后(after)多长时间输出芯片。
OFFSET_OUT_BEFORE:输出信号(out)在时钟前(before)多长时间输出芯片。
显然 CLOCK = OFFSET_OUT_AFTER + OFFSET_OUT_BEFORE。
OFFSET_OUT_BEFORE 反映的是外围电路的时序特性,我们无法左右。
OFFSET_OUT_AFTER 是留给芯片的时序余量。PAR的目的就是要满足这个余量,不得超过。 例
OFFSET = IN 10 ns BEFORE \
NET “Q_OUT” OFFSET=OUT 15.0 BEFORE “CLK_SYS”; 说明:第二个例子好理解,第一个例子没有指明对象,表示所有受到“i_ref_clk”约束的信号都被施加了该约束 3)分组约束
使用TNM(Timing Name)约束可以选出构成一个分组的元件,并赋予一个名字,以便给它们附加约束。
TNM_NET(timing name for nets)约束只加在网线上,其作用与TNM加在网上时基本相同,即把该网线所在路径上的所有有效同步元件作为命名组的一部分。
不同之处在于当TNM约束加在PAD NET上时,TNM的值将被赋予PAD,而不是该网线所在的路径上的同步元件,即TNM约束不能穿过IBUF。
而用TNM_NET约束就不会出现这种情况。
TNM是Timing Name的缩写,是一种grouping约束,用于把若干信号组合成一个特定的组以施加相同的约束。例如 INST \INST \
......
INST \
采用该方法后一些列信号都被列入名为“dbg_out”的组合。然后可以统一施加约束。如
TIMESPEC \TIG;
4)专门约束
附加约束的一般策略是首先附加整体约束,例如PERIOD、OFFSET等,然后对局部的电路附加专门约束,这些专门约束通常比整体约束宽松,
通过在可能的地方尽量放松约束可以提高布线通过率,减小布局布线的时间。
FROM_TO约束在两个组之间定义时序约束,对两者之间的逻辑和布线延迟进行控制,这两个组可以是用户定义的,也可以是与定义的。 用户可以使用TNM_NET、TNM和TIMEGRP定义组,而与定义组主要包括FFS、LATCHES、PADS和RAMS等。语法如下: TIMESPEC “TSname” = FROM “group1” TO “group2” value; 其中value为延迟时间,可以使具体数值或表达式。
MAXDELAY约束定义了特定网线上的最大延迟,其语法如下:
NET “net_name” MAXDELAY = value units;
TIG是Timing IGnore的缩写。表示忽略该对象上的时序约束。例如 NET “RESET” TIG=TS_fast, TS_even_faster;
表示对RESET信号,时序约束TS_fast和TS_even_faster无效。 关于from to 的约束是一个比较实用,也比较好用的约束。 尤其在跨时钟域处理中的应用,特别有效。
举例: 设计中有两个时钟,一个是PLL的输入,一个是PLL的输出,并且两者为异步形式,当设计中有数据在该两个时钟域中传递时, 又没有用到fifo隔离,那么这个使用就需要用这个约束。 TIMEGRP \TIMEGRP \
TIMESPEC \TIMESPEC \这样工具就不会对该两个跨时钟路径就不会分析了。
如果不加这个约束,时序会比较紧,很容易造成其它模块的时序过不去。
当然如果不用TIG,给具体的时间也是可以的,那么时钟域之间的延时只要小于你给的时间值就不会报错。
正在阅读:
xilinx时序约束04-24
高考地理一轮复习 第18讲 人口迁移与人口流动教学案 鲁教版04-28
阅读狼09-08
一般将来时、一般现在时、一般过去时、正在进行时练习题08-30
2019-2020学年最新北师大版小学语文三年级上册《小镇的早晨》2教学设计-评奖教案10-17
大学新生军训动员大会上的领导讲话01-07
如何改进自己的不足和缺点04-29
ABB机器人培训内容05-08
老人与海电影观后感04-01
中西方文化比较05-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 时序
- 约束
- xilinx
- 三年级奥数巧求周长
- 2015中国企业财务共享服务中心建设情况调查报告
- 小学三年级奥数试题精选
- 中国画笔墨的美感
- H3C ER系列路由器vpn建立后本端电脑通过对端网关上公网案例 - 图
- A review of recent progress in coatings, surface modi中文翻
- 10级《数据库系统》作业复习重点
- 植物生理学研究法 - 图文
- 纸面石膏板吊顶施工工艺
- 关于“人生价值大拍卖”主题教学案例
- 固定资产管理办法《铁总财(2015)45号》
- 哈工程自动化学院各实验室详细介绍
- 恶劣天气行车安全措施
- 天津2009秋学而思入学测试题(五年级数学) - 图文
- 机械制造企业安全生产风险分级管控资料
- 危机管理读后感
- 初中文言文起步
- 报关实务复习(11--12年)
- 全国计算机等级考试三级PC技术复习资料
- 装碴与运输施工安全技术交底