执行工具不会试图寻找达到最快速的布局&布线路径。——取而代之的是,执行工具会努力达到你所期望的性能要求。
性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。
没有时序约束的例子
该工程没有时序约束和管脚分配
——注意它的管脚和放置
——该设计的系统时钟频率能够跑到50M
时序约束的例子

和上面是相同的一个设计,但是加入了3个全局时序约束。
——它最高能跑到60M的系统时钟频率
——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置
更多关于时序约束时序约束应该用于界定设计的性能目标
1. 太紧的约束将会延长编译时间
2. 不现实的约束可能导致执行工具罢工
3. 查看综合报告或者映射后静态时序报告以决定你的约束是否现实
执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。
路径终点
有两种类型的路径终点:
1. I/O pads
2. 同步单元(触发器,锁存器,RAMs)
时序约束的两个步骤:
1. 路径终点生产groups(顾名思义就是进行分组)
2. 指点不同groups之间的时序要求
全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等
ISE时序约束笔记2——Global Timing Constraints
问题思考单一的全局约束可以覆盖多延时路径
如果箭头是待约束路径,那么什么是路径终点呢?
所有的寄存器是否有一些共同点呢?
问题解答什么是路径终点呢?
——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?
——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
周期约束特性周期约束使用最准确的时序信息,使其能够自动的计算:
1. 源寄存器和目的寄存器之间的时钟偏斜(Clock Skew)
2. 负沿钟控的同步单元
3. 不等同占空比的时钟
4. 时钟的输入抖动(jitter)假设:
1. CLK信号占空比为50%
2. 周期约束为10ns
3. 由于FF2将在CLK的下降沿触发,两个触发器之间的路径实际上将被约束为10ns的50%即5ns

时钟输入抖动是源时钟的不确定性(clock uncertainty)之一
时钟的不确定时间必须从以下路径扣除:
——周期约束建立时间路径
——OFFSET IN约束的建立时间路径
时钟的不确定时间必须添加到以下路径中:
——周期约束保持时间路径
——OFFSET IN约束保持时间路径
——OFFSET OUT约束路径
Pad-to-Pad约束——不包含任何同步单元的纯组合逻辑电路
——纯组合逻辑延时路径开始并结束于I/O pads,所以通常会被我们遗漏而未约束
ISE时序约束笔记3——Global Timing Constraints
问题思考哪些路径是由CLK1进行周期约束?
哪些路径是由pad-to-pad进行约束?
OFFSET约束OFFSET约束覆盖以下路径:
——从input pads到同步单元(OFFSET IN)
——从同步单元到output pads(OFFSET OUT)
OFFSET约束特性OFFSET约束自动计算时钟分布延时
1. 提供最准确的时序信息
2. 大量增加输入信号到达同步单元的时间(时钟和数据路径并行)
3. 大量减少输出信号到达输出管脚的时间(时钟和数据路径先后)
OFFSET约束也可以解释时钟输入抖动——使用抖动确定关联的周期约束
时钟延时数据路径延时和时钟分布延时都需要在OFFSET计算中使用到
——OFFSET IN = T_data_in – T_clk_in
——OFFSET OUT = T_data_out + T_clk_out
ISE时序约束笔记4——Global Timing Constraints
问题思考在这个电路中哪些路径是由OFFSET IN 和 OFFSET OUT来约束的?
问题解答:——OFFSET IN:PADA to FLOP and PADB to RAM
——OFFSET OUT:LATCH to OUT1, LATCH to OUT2, and RAM to OUT1
问题思考下面给出的系统框图里,你将给出什么样的约束值以使系统能够跑到100MHz?
——假设在下面的器件之间没有时钟偏斜
问题解答:PERIOD = 10 ns , OFFSET IN (BEFORE) = 7 ns and OFFSET OUT (AFTER) = 8 ns
小结1. 性能期望和时序约束相关联
2. 周期约束覆盖同步单元之间的延时路径
3. OFFSET约束覆盖从输入管脚到同步单元和从同步单元到输出管脚之间的延时路径
ISE时序约束笔记5——Timing Groups and OFFSET Constraints 特定路径时序约束使用全局时序约束(PERIOD,OFFSET,PAD-TO-PDA)将约束整个设计
仅仅使用全局约束通常会导致过约束
——约束过紧
——编译时间延长并且可能阻止实现时序目标
——通过综合工具或者映射后时序报告重新审视性能评估
特定路径约束能够覆盖全局时序约束在特定路径上的约束
——这就允许设计者放宽特定路径的时序要求
更多关于特定路径约束你的设计器件的内部面积将会从特定路径约束收益
1. 多周期路径Multi-cycle paths
2. 跨时钟域路径
3. 双向总线
4. I/O时序
特定路径约束应该由你的性能目标来界定,不能够不加限制的随意放置
全局约束回顾使用全局PERIOD,OFFSET IN和OFFSET OUT约束将约束所有以下的路径
这使得控制设计的总体性能更加容易
特定路径约束实例一条特定路径约束对于路径本身的优化微乎其微
这有助于你更好的控制设计性能,并带给执行工具更大的灵活性以达到你的性能和使用要求
生成特定路径约束需要两个步骤:
1. 多个有共同时序要求的特定路径终点生成一个groups
2. 关联两个groups,指定它们的特定路径的时序要求
生成终点路径的Groups特定路径时序约束在终点路径较好的分组后会更加高效——否则,约束一个大的工程将极其耗时耗力。
约束编辑有助于你更容易的进行路径终点(pads, flip-flops, latches, and RAMs)进行Groups分组。
使用约束编辑器,终点路径的分组有以下选项:
– Group by nets
– Group by instance name
– Group by hierarchy
– Group by output net name
– Timing THRU Points option
– Group by clock edge
Nets 分组与output net name分组对比由net分组的 “NET_A”将生成一个只包含FLOP2的group
——Group包含选择网络所驱动的寄存器
由output net name分组的“NET_A”将生成一个只包含FLOP1的group
——Group包含选择网络的源寄存器