打印

请教时序约束的方法

[复制链接]
1773|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wrigleymint|  楼主 | 2012-9-14 18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wjzx111056| | 2012-9-14 22:17 | 只看该作者
在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序的约束。通常,在FPGA设计工具中都FPGA中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。通常,需要对这几种路径分别进行约束,以便使设计工具能够得到最优化的结果。下面对这几种路径分别进行讨论。
1.从输入端口到寄存器:
    这种路径的约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。约束名称:input delay.   约束条件的影响主要有4个因素:外部芯片的Tco,电路板上信号延迟Tpd,FPGA的Tsu, 时钟延迟Tclk.  Tco的参数通常需要查外部芯片的数据手册。计算公式:input delay = Tco+Tpd+Tsu-Tclk.    FPGA的Tsu也需要查FPGA芯片的手册。 FPGA速度等级不同,这个参数也不同。 Tpd和Tclk需要根据电路板实际的参数来计算。通常,每10cm的线长可以按照1ns来计算.   例如:系统时钟100MHz,  电路板上最大延迟2ns, 时钟最大延迟 1.7ns, Tco 3ns, FPGA的Tsu(触发器固有的建立时间)为0.2ns. 那么输入延迟的值: max Input delay = 2+3+0.2-1.7=3.5ns.  这个参数的含义是指让FPGA的设计工具把FPGA的输入端口到第一级寄存器之间的路径延迟(包括门延迟和线延迟)控制在 10ns-3.5ns=6.5ns 以内。这个3.5ns在quartus timequest中的约束就是input delay。这个6.5ns在xilinx的约束中就是OFFSET IN。具体写法依约束参考对象不同有两种,NET DATA_IN OFFSET = IN 3.5ns AFTER CLK(这个clk是launch clk);NET DATA_IN OFFSET = IN 6.5ns BEFORE CLK(这个clk明显是latch clk了)。
2.寄存器到寄存器:
   这种路径的约束是为了让FPGA设计工具能够优化FPGA内寄存器到寄存器之间的路径,使其延迟时间必须小于时钟周期,这样才能确保信号被可靠的传递。由于这种路径只存在于FPGA内部,通常通过设定时钟频率的方式就可以对其进行约束。对于更深入的优化方法,还可以采用对寄存器的输入和寄存器的输出加入适当的约束,来使逻辑综合器和布线器能够对某条路径进行特别的优化。还可以通过设定最大扇出数来迫使工具对其进行逻辑复制,减少扇出数量,提高性能。
3.寄存器到输出:
   这种路径的约束是为了让FPGA设计工具能够优化FPGA内部从最后一级寄存器到输出端口的路径,确保其输出的信号能够被下一级芯片正确的采到。约束的名称: output delay,            约束条件的影响主要有3个因素:外部芯片的Tsu,电路板上信号延迟Tpd,时钟延迟Tclk.  Tsu的参数通常需要查外部芯片的数据手册。计算公式:output delay = Tsu+Tpd-Tclk.         例如:系统时钟100MHz,  电路板上最大延迟2ns, 时钟最大延迟 1.7ns, Tsu 1ns, 输出延迟的值: max output delay = 1+2-1.7=1.3ns .  这个参数的含义是指让FPGA的设计工具把最后一级寄存器到输出端口之间的路径延迟(包括门延迟和线延迟)控制在 10ns-1.3ns=8.7ns 以内。
这个6.5ns在xilinx的约束中就是OFFSET OUT。同样有两种写法,NET DATA_OUT OFFSET = OUT 8.7ns AFTER CLK;NET DATA_OUT OFFSET = OUT 1.3ns BEFORE CLK。
4.从输入端口到输出端口:
   这种路径是指组合逻辑的延迟,指信号从输入到输出没有经过任何寄存器。给这种路径加约束条件,需要虚拟一个时钟,然后通过约束来指定哪些路径是要受该虚拟时钟的约束。在Synplifypro和Precision中都有相应的约束来处理这种路径。

使用特权

评论回复
评分
参与人数 2威望 +4 收起 理由
Backkom80 + 2
GoldSunMonkey + 2 谢谢分享
板凳
GoldSunMonkey| | 2012-9-14 23:12 | 只看该作者
谢谢分享

使用特权

评论回复
地板
lzmm| | 2012-9-15 11:33 | 只看该作者
时序约束的目的是:规范设计的时序行为,表达设计者所期望满足的时序条件,指导综合和布局布线阶段的优化算法等,作用:提高系统设计的fmax、得到正确的时序分析报告

时序分析中的基本概念

1. 系统的最高频率Fmax

Fmax: 所设计系统的稳定情况下的最高时钟频率所设计系统的稳定情况下的最高时钟频率,他是时序分析中最重要的指标,综合表现所设计时序的性能

首先介绍最小时钟周期Tclk

Tclk = 寄存器的时钟输出延时Tco + 组合逻辑延时Tlogic + FPGA内部的网络延时Tnet + 寄存器时钟建立时间Tsu –时钟偏斜Tclkskew

Fmax = 1 / Tclk

在QuartusII时序分析后很容易看到Fmax



2. 时钟的建立时间Tsu和保持时间th





建立时间Tsu:时钟到达之前数据或者使能信号已经准备好(稳定)的最小时间间隔

    Tsu = 数据延时Data_delay – 时钟延时Clock_delay + 寄存器固有的建立时间Tsu   

保持时间Th:能保证有效时钟沿正确采样的数据或者使能信号在时钟沿之后的最小稳定时间

Th = 时钟延时Clock_delay – 数据延时Data_delay = 寄存器固有的保持时间Th



3. 时序裕量slack

Slack :约束文件要求时钟周期与实际布局布线后时钟周期的差值,表示时序裕量的一个称谓,大于零表示满足时序,小于零表示不满足时序

1)    Setup Slack

Setup Slack = Data Required Time - Data Arrival Time

2)    Hold Slack

Hold Slack = Data Arrival Time - Data Required Time

Slack = Required_clock_period – Actual_clock_period



4. 时钟偏斜Skew

时钟偏斜skew:一个同源时钟到达两个不同寄存器的时钟端的时间差别(时钟分布系统中到达各个时钟末端(即器件内部触发器的时钟输入端)的时钟相位不一致的现象)。

如果时钟偏斜超过所允许的最大值,电路的同步可能会发生失效。偏斜主要由两个因素造成:一是时钟源驱动器件的偏差,例如同一个PLL输出的不同时钟信号之间的偏斜;另一个是时钟分配网络的偏斜 。由于时钟信号驱动系统中的大量元件为了达到同步必须同时接收到时钟信号,因此它们之间的任何时间差异都将直接影响系统性能。

避免时钟偏斜Skew可以采取下列方法:1.CLOCK采用全局时钟网络驱动,全局时钟的CLOCK SKEW很小。因此主要时钟信号应该走全局时钟网络以避免始终偏斜。2.采用全局时钟缓冲器 3.采用锁相环(pll)。



5. 时钟抖动Jetter

时钟抖动(Jetter)是时钟沿距离其理想位置的偏离。在时序分析中理解时钟抖动非常重要,因为它在系统时序预算方面肩负关键角色。它还能帮助系统设计人员理解系统时序余量。随着系统数据率越来越高,时序抖动在系统设计中已经变得更加关键,如在某些案例中系统性能限制由系统时序余量来确定,因此充份了解时序抖动在系统设计中变得更加重要。总抖动可分为随机抖动和确定性抖动等分量。时钟时序抖动可以在时域以及频域测量。相邻周期抖动、周期抖动及时间间隔误差(TIE)抖动在时域测量,而相位噪声和相位抖动在频域测量。部分抖动源包括热噪声、电源噪声、地弹噪声(ground bounce)、锁相环(PLL)电路、串扰及反射。

使用特权

评论回复
5
Backkom80| | 2012-9-15 16:27 | 只看该作者
嘻嘻,还有一点要明白,
时序是设计出来的,不是约束出来的,
约束只起到一定的指导布局布线和用来检查布局布线后结果在时序上是不是满足设计人员的要求。

使用特权

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

本版积分规则

10

主题

166

帖子

0

粉丝