打印

简洁易懂FPGA设计时序约束方案

[复制链接]
1659|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jsgongxing|  楼主 | 2011-8-17 13:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为帮助FPGA设计新手实现时序收敛,让我们来深入了解时序约束以及如何利用时序约束实现FPGA设计的最优结果。
何为时序约束?
为保证设计的成功,设计人员必须确保设计能在特定时限内完成指定任务。要实现这个目的,我们可将时序约束应用于连线中——从某FPGA元件到FPGA内部或FPGA所在PCB上后续元件输入的一条或多条路径。
FPGA设计中主要有四种类型的时序约束:PERIODOFFSET INOFFSET OUT以及FROM: TO(多周期)约束。
PERIOD 约束与建组
每个同步设计要有至少一个PERIOD约束(时钟周期规格),这是最基本的约束类型,指定了时钟周期及其占空比。若设计中有不止一个时钟,则每个时钟都有自己的PERIOD约束。PERIOD约束决定了我们如何进行布线,来满足设计正常工作的时序要求。
为简化时序约束应用过程,常常可将具有类似属性的连线分组,例如分为一组总线或一组控制线。这样做有助于完成为设计约束正确定义优先级这一关键步骤。
设计约束优先次序排列
若设计有多重约束,则需进行优先次序排列。一般来说,约束的一般性越强,其优先级越低。相反,约束的针对性越强,其优先级越高。举例来说,时钟网络上的某个一般性PERIOD约束将被特定网络的具有更高优先级的FROM: TO约束所覆盖。
针对FROM: TO(FROM: THRU: TO)的特定约束,在时钟域内任意网络中的重要性均高于一般性约束。
为便于进行约束的优先级排列,可运行赛灵思时序分析器(ISE Design Suite中的静态时序分析工具),并生成时序规格迭代报告,即常说的.tsi 报告。该报告说明了各约束间是如何迭代的,以及该工具如何为各约束设置默认优先级。
通过采用PRIORITY约束关键词,可手动设置任一时序约束的优先级并使其优先于默认的或预先设定的优先级。这在同一路径上的两个或多个时序约束发生冲突时尤为有用。这里的优先级指的是同一路径上有两个或多个时序约束时,该应用哪一个。其余的低优先级约束则被忽略。优先级可在-10 ~ +10的范围内设置。PRIORITY值越低,优先级越高。注意,该值不会影响到哪些路径应率先布局和走线,只有当优先级相同的两个约束出现在同一路径上时,它才会影响由哪个约束控制该路径。
下面将以PERIOD只控制从同步元件到同步元件之间的网络,如FFSFFS为例来进一步介绍(约束以蓝色显示如下)
创建名为tnm_clk20TIMEGRP(时序分组),包含网络clk20 驱动的所有下游同步组件。这些同步元件间的所有路径均受时序规格“TS_clk20: 20ns”(同步元件到同步元件 20 纳秒的时间要求)的约束。“HIGH 50%”clk20的占空比为50/50
在第二个例子中,我们使用FROM: TO约束来定义对两个分组间路径的要求,即:
该命令的作用是告知工具,确保数据从时序分组“my_from_grp”包含的元件到“my_to_grp”的元件所用时间为40纳秒。时序分析器仍将计算从源分组到目标分组的时钟偏移,不过若时钟关联,则优先级较低。也可使用如下预定义分组:
若不选定时间单位(纳秒、皮秒等),则工具将自动默认为纳秒。例如,可这样写约束:
也可只写From或只写To ,以使其更具一般性:
如前所述,工具将自动默认上文所述所有FROM: TO 约束的优先级高于PERIOD约束,除非另有规定。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

1

粉丝