• ALTERA系列FPGA时序分析(一)


    一. 约束的基本介绍

    1.约束的分类

    <1>.时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条指导综合和布局布线阶段的优化算法等。

    区域与位置约束:主要用于指定芯片I/O引脚位置以及指导实现工具在芯特定的物理区域进行布局布线。

    其他约束:泛指目标芯片型号、接口位置,电气特性等约束属性。

    2.时序约束的主要作用

    <1>.提高设计的工作频率

    通过附加时序约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。

    <2>.获得正确的时序分析报告

    QuartusII的静态时序分析(Static Timing Analysis---STA)工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入时序约束,以便STA工具能输出正确的时序分析结果。

    3.静态时序分析与动态时序仿真的区别

    <1>.静态时序分析:静态时序分析的前提是同步逻辑设计,是通过分析每个时序路径的延时,并且计算路径延迟的总和,比较相对于预定义时钟的延迟,计算出设计的各项时序性能指标,如最高时钟频率、建立保持时间等,发现时序违规。静态时序分析仅关注时序间的相对关系,因此它仅仅聚焦于时序性能的分析,并不涉及设计的逻辑功能,逻辑功能验证仍需通过仿真或其他手段(如形式验证等)进行。静态时序分析是最常用的分析、调试时序性能的方法和工具。

    <2>.动态时序仿真:动态时序仿真是针对给定的仿真输入信号波形,模拟设计在器件实际工作时的功能和延时情况,给出相应的仿真输出信号波形。它主要用于验证设计在器件实际延时情况下的逻辑功能。由动态时序仿真报告无法得到设计的各项时序性能指标,如最高时钟频率等。

    二. 常用的时序约束概念

    1. 时钟抖动与偏斜

    <1>.时钟抖动(CLOCK JITTER)

    即是时钟信号边沿变化的不确定时间称之为时钟抖动,左右两边均有不同时间的抖动T1和T2,如图1所示

    图1 时钟抖动

    由于时钟抖动导致其数据的建立时间和保持时间产生一定的变化,即建立时间变为Tsu+T1,保持时间变为Th+T2。

    <2>.时钟偏斜(CLOCK SHEW)

    时序分析的起点是源寄存器(reg1),终点是目标寄存器(reg2)。时钟和其它信号的传输一样会有延时的。如下图2中所示,时钟信号从时钟源传输到源寄存器的延时定义为Tc2s,传输到目标寄存器的延时定义为Tc2d。

    图2 时钟偏斜

    时钟网络延时就定义为Tc2s与Tc2d之差,即Tshew=Tc2s - Tc2d。

    2. 时钟建立时间和保持时间

    <1>.Setup Time: 即建立时间, 在时钟上升沿之前数据必须稳定的最短时间。若不满足setup time, 数据无法进入寄存器:Tsu < Tclk + Tskew – Tco。

    图3 建立时间和保持时间

    <2>.Hold Time: 即保持时间, 在时钟上升沿之后数据必须稳定的最短时间。 若不满足hold time, 数据无法进入寄存器: Th < Tco。其中Th 限制了数据传输的速度,如果Tco延时太短导致上一级寄存器锁存的数 据侵占了下一级寄存器正在锁存数据的保持时间,那么下一级寄存器就无法有效的锁存数据,系统时序也就无法达到要求(下面将有更详细的分析,必让读者大饱眼福)!

    3. Launch edge和Latch edge

    <1>.Launch Edge:前级寄存器发送数据对应的时钟沿,是时序分析的起点。

    <2>.Latch Edge:后级寄存器捕获数据对应的时钟沿,是时序分析的终点。相 对于launch edge通常为一个时钟周期,但不绝对,如多周期约束。

    不瞎BB那么多了,先上图:

    图4 Launch Edge & Latch Edge

    “信号跳变抵达窗口”:对latch寄存器来说,从previous时钟对应的Hold Time 开始,到current时钟对应的Setup Time结束。

    “信号电平采样窗口”:对latch寄存器来说,从current时钟对应的 Setup Time 开始,到current时钟对应的Hold Time结束。

    launch寄存器必须保证驱动的信号跳变到达latch寄存器的时刻处于“ 信号跳 变抵达窗口” 内,才能保证不破坏latch寄存器的“信号电平采样窗口”。(读者可自行画图理解)

    三. 余量(Slack)简析

    1. 关于Setup Slack分析

    在介绍Setup Slack之前,先给大家普及一下相关知识:

    <1>.浅谈Data Arrival Time(PS:The time for data to arrival at destination register’s D input),如下图5所示

    图5 Data Arrival Time

    如图可得:Data Arrival Time = Launch Edge +Tclk1 +Tco + Tdata;

    <2>.Clock Arrival Time(The time for clock to arrival at destination register’s clock input)如下图所示

    图6 Clock Arrival Time

    依图可得:Clock Arrival Time = Latch Edge + Tclk2

    <3>.Data Required Time (Setup):(The minimum time required for the data to latched into the destination register ),如下图7所示

    图7 Data Required Time

    依图可知:Data Required Time =Clock Arrival Time + Tsu

    若考虑最坏的情况,则可得Data Required Time =Clock Arrival Time + Tsu – Setup Uncentainty;

    <4>.普及了以上知识点,现在就来讲讲有关于Setup Slack的分析

    在Altera的手册上的有关Setup Slack的解释如下:The margin by which the setup timing requirement is met,It ensures launched data arrives in time to meet the latching requirement;见图8

    图8 Setup Slack

    由图8可知, Setup Slack = Data Required Time – Data Arrival Time,若Setup Slack为正,则说明建立时序余量充足,即满足Setup Time;反之,则不满足;

    2. 关于Hold Slack分析:

    有了上面关于Setup Slack的分析,以下的hold Slack就so easy啦!

    <1>. Data Required Time (Hold): The minimum time required for the data to latched into the destination register.见图9

    图9 Data Required Time

    依图可知:Data Required Time =Clock Arrival Time + Th;

    若考虑最坏的情况,则可得Data Required Time =Clock Arrival Time + Th – Hold Uncentainty;即最坏的情况仍然满足时序要求。

    <2>.Hold Slack简析:在Altera的手册上的有关Hold Slack的解释如下:The margin by which the Hold timing requirement is met,It ensures latched data is not corrupted by the data from another launch edge.见图10

     

    图10   Hold Slack

    由图10可知, Hold Slack = Data Arrival Time – Data Required Time,若Hold Slack为正,则说明建立时序余量充足,即满足Hold Time;反之,则不满足;

    至此,有关于时序分析的基础知识及时序分析计算公式就先到此为止,而关于时序分析器Timequest的使用,小编打算在ALTERA系列FPGA时序分析(二)中继续与广大读者一起分享,一起学习,共同进步。欲知后事如何,请听下回分解;今天广东还下雪了,冻得小编不要不要的。时至深夜,就此搁笔。

    做你害怕的事情,然后你会发现,不过如此。 最穷不过要饭,不死总会出头! 以前你做了什么,决定现在你可以做什么。你今天所遭遇的苦难,要么是之前的报应,要么以后都会回报给你!
  • 相关阅读:
    20、【Linux系统编程】 exec系列函数
    3、【Linux网络编程】socket实例
    c++ 二分答案(基础应用)
    c++ 迷宫搜索(宽搜)
    c++ 广度优先搜索(宽搜)
    栈的概念
    c++ 栈的基本应用
    队列的概念
    c++ 队列的基本应用
    Knight Moves
  • 原文地址:https://www.cnblogs.com/hong-jing/p/5156418.html
Copyright © 2020-2023  润新知