问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 8 人浏览分享

开启左侧

第4章 时序的基本路径分析

[复制链接]
8 0
4.1 时序的基本路径概述
       FPGA通常包含4大类基本时序路径:内部寄存器之间的时序路径(reg2reg)、输入引脚到内部寄存器的时序路径(pin2reg)、内部寄存器到输出引脚的时序路径(reg2pin)、输入引脚到输出引脚(不通过寄存器)的时序路径(pin2pin)。
从时钟的同步方式来说,又分为系统同步和源同步。
源时钟同步方式:
image.jpg
系统时钟同步方式:
image.jpg
FPGA内部的PIN2PIN路径延迟:
      仅有输入输出的路径,数据从din输入,然后从FPGA的dout输出,中间的延迟主要由逻辑延迟和布线延迟导致。
image.jpg
4.2 输入延迟时序路径分析
4.2.1 系统同步分析
      系统同步是指FPGA和外部器件的时钟信号同源,由于数据和时钟信号来自不同的源,通过不同路径传输至FPGA中,导致数据和时钟信号存在较大的偏差,这种接口无法达到更高速度的设计要求,已经在淘汰的边缘。
image.jpg
      上图所示的系统同步接口的时序路径中,Tco为从时钟发射沿到达外部器件时钟引脚,到数据从外部器件输出引脚输出的时间,Td_pcb为数据从外部器件输出引脚到FPGA输入引脚经过的PCB走线延时,Tclk1为时钟信号从时钟源到外部器件时钟引脚的PCB走线延时,Tclk2为时钟信号从时钟源到FPGA时钟引脚的PCB走线延时,Td_fpga为数据从FPGA输入引脚到寄存器数据端的延时,Tc_fpga为时钟信号从FPGA时钟引脚到寄存器时钟端的延时。
      各路径延时时间之间的关系用下方的时序图表示。由于该路径模型本质还是两个寄存器之间的路径,分析的过程参考寄存器和寄存器之间的路径分析即可。
image.jpg
建立时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tclk1 + Tco + Td_pcb + Td_fpga
·Data Require Time = Latch Edge + Tclk2 + Tc_fpga - Tsu
·setup slack = Data Require Time - Data Arrival Time
·setup slack = cycle + Tclk2(min) + Tc_fpga(min) - Tclk1(max) - Tco(max) - Td_pcb(max) - Td_fpga(max) - Tsu
我们对上式做一下处理,将FPGA内部延时和外部延时分开,得到如下公式:
·setup slack = cycle + (Tc_fpga(min) - Td_fpga(max) - Tsu) - (Tclk1(max) + Tco(max) + Td_pcb(max) - Tclk2(min))
在计算input delay的值时,因为参考点是FPGA的数据和时钟引脚,所以可以将FPGA外部延时从公式中提取出来,可以得到用于建立时间分析的input delay(max)的计算公式为:
·input delay(max) = Tclk1(max) + Tco(max) + Td_pcb(max) - Tclk2(min)
保持时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tclk1 + Tco + Td_pcb + Td_fpga
·Data Require Time = Latch Edge + Tclk2 + Tc_fpga + Th
·hold slack = Data Arrival Time - Data Require Time
·hold slack = Tclk1(min) + Tco(min) + Td_pcb(min) + Td_fpga(min) - Tc_fpga(max) - Tclk2(max) - Th
同样将该式中FPGA内部和外部的延时分开,得到如下公式:
·hold slack = (Tclk1(min) + Tco(min) + Td_pcb(min) - Tclk2(max))+ (Td_fpga(min) - Tc_fpga(max) - Th)
将FPGA外部延时从公式中提取出来,得到用于保持时间分析的input delay(min)的计算公式为:
·input delay(min) = Tclk1(min) + Tco(min) + Td_pcb(min) - Tclk2(max)


4.2.2 源同步分析
      源同步是指芯片在发送数据时,同时发送一个与数据同步的时钟,对端芯片用该时钟对数据进行采样,数据和时钟信号保持确定的相位关系,所以源同步接口在PCB布线的设计上更加方便,只需考虑对线长进行匹配,这种接口提升了总线的速度。
      如下图所示的源同步接口的时序路径中,Tc_d为外部器件内部时钟走线延时,Tc_pcb为时钟从外部期间时钟输出端到FPGA时钟输入端在PCB上的走线延时。
image.jpg
各路径延时时间之间的关系用下方的时序图表示。
image.jpg
建立时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tco + Td_pcb + Td_fpga
·Data Require Time = Latch Edge + Tc_d + Tc_fpga + Tc_pcb - Tsu
·setup slack = cycle + Tc_d(min) + Tc_fpga(min) + Tc_pcb(min) - Tco(max) - Td_pcb(max) - Td_fpga(max) - Tsu
保持时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tclk1 + Tco + Td_pcb + Td_fpga
·Data Require Time = Latch Edge + Tclk2 + Tc_fpga + Th
·hold slack = Tco(min) + Td_pcb(min) + Td_fpga(min) - Tc_fpga(max) - Tc_d(max) - Tc_pcb(max) - Th
计算出input delay的最大值和最小值结果如下:
·input delay(max) = Tco(max) + Td_pcb(max) - Tc_d(min) - Tc_pcb(min)
·input delay(min) = Tco(min) + Td_pcb(min) - Tc_d(max) - Tc_pcb(max)


4.3 输出延迟时序路径分析
4.3.1 系统同步分析
      下图所示的系统同步接口的时序路径中,Tco为FPGA内部寄存器从触发到输出数据稳定的时间,Td_pcb为数据从FPGA输出引脚输出到外部器件输入引脚经过的PCB走线延时,Tclk1为时钟信号从时钟源到FPGA时钟引脚的PCB走线延时,Tclk2为时钟信号从时钟源到外部器件时钟引脚的PCB走线延时,Tr2p为数据从FPGA寄存器Q端到FPGA输出端口的延时,Tp2r为时钟信号从FPGA时钟引脚到寄存器时钟端的延时。
image.jpg
各路径延时时间之间的关系用下方的时序图表示。
image.jpg
建立时间裕量的计算公式如下,注意这里的建立时间和保持时间是对外部器件的寄存器而言的。
·Data Arrival Time = Launch Edge + Tclk1 + Tco + Td_pcb + Tr2p + Tp2r
·Data Require Time = Latch Edge + Tclk2 - Tsu
·setup slack = Data Require Time - Data Arrival Time
·setup slack = cycle + Tclk2(min) - Tclk1(max) - Tco(max) - Td_pcb(max) - Tr2p(max) - Tp2r(max) - Tsu
将FPGA内部的延时信息和外部延时信息分开,对上式进行变换,得到下面的公式。
·setup slack = cycle - Tr2p(max) - Tp2r(max) - Tco(max) - (Tclk1(max) + Td_pcb(max) - Tclk2(min) + Tsu)
将FPGA外部延时信息提取出来,可以得到用于建立时间分析的output delay(max)的计算公式为:
·output delay(max) = Tclk1(max) + Td_pcb(max) - Tclk2(min) + Tsu
保持时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tclk1 + Tco + Td_pcb + Tr2p + Tp2r
·Data Require Time = Latch Edge + Tclk2 + Th
·hold slack = Data Arrival Time - Data Require Time
·hold slack = Tclk1(min) + Tco(min) + Td_pcb(min) + Tr2p(min) + Tp2r(min) - Tclk2(max) - Th
同样将该式中FPGA内部和外部的延时分开,得到如下公式:
·hold slack = Tco(min) + Tr2p(min) + Tp2r(min) + (Tclk1(min) + Td_pcb(min) - Tclk2(max) - Th)
将FPGA外部延时从公式中提取出来,得到用于保持时间分析的input delay(min)的计算公式为:
·output delay(min) = Tclk1(min) + Td_pcb(min) - Tclk2(max) - Th

4.3.2 源同步分析
      下图所示的源同步接口的时序路径中,Tco为FPGA内部寄存器从触发到输出数据稳定的时间,Tc_d为时钟从FPGA输入引脚到输出引脚的延时,Td_pcb为数据从FPGA输出引脚输出到外部器件输入引脚经过的PCB走线延时,Tc_pcb为时钟从FPGA输出引脚输出到外部器件时钟引脚经过的PCB走线延时,Tr2p为数据从FPGA寄存器Q端到FPGA输出端口的延时,Tp2r为时钟信号从FPGA时钟引脚到寄存器时钟端的延时。
image.jpg
各路径延时时间之间的关系用下方的时序图表示。
image.jpg
建立时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tp2r + Tco + Tr2p + Td_pcb
·Data Require Time = Latch Edge + Tc_d + Tc_pcb - Tsu
·setup slack = Data Require Time - Data Arrival Time
·setup slack = cycle + Tc_d(min) + Tc_pcb(min) - Tp2r(max) - Tco(max) - Tr2p(max) - Td_pcb(max) - Tsu
将FPGA内部的延时信息和外部延时信息分开,对上式进行变换,得到下面的公式。
·setup slack = cycle + Tc_d(min) - Tp2r(max) - Tco(max) - Tr2p(max) - (Td_pcb(max) - Tc_pcb(min) + Tsu)
将FPGA外部延时信息提取出来,可以得到用于建立时间分析的output delay(max)的计算公式为:
·output delay(max) = Td_pcb(max) - Tc_pcb(min) + Tsu
保持时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tp2r + Tco + Tr2p + Td_pcb
·Data Require Time = Latch Edge + Tc_d + Tc_pcb + Th
·hold slack = Data Arrival Time - Data Require Time
·hold slack = Tp2r(min) + Tco(min) + Tr2p(min) + Td_pcb(min) - Tc_d(max) - Tc_pcb(max) - Th
同样将该式中FPGA内部和外部的延时分开,得到如下公式:
·hold slack = Tp2r(min) + Tco(min) + Tr2p(min) - Tc_d(max) + (Td_pcb(min) - Tc_pcb(max) - Th)
将FPGA外部延时从公式中提取出来,得到用于保持时间分析的input delay(min)的计算公式为:
·output delay(min) = Td_pcb(min) - Tc_pcb(max) - Th

4.4 寄存器到寄存器的时序路径分析
      对时钟添加约束后,工具会遍历该时钟驱动的每一条时序路径,即在该时钟域下所有寄存器到寄存器的路径延时都可以被预测。在如图所示的寄存器到寄存器的时序路径中,Tclk1为时钟从时钟源到达寄存器reg0的时间,Tclk2为时钟从时钟源到达reg1的时间,Tco为寄存器reg0内部数据输出延时,Tdata为组合逻辑和走线延时。
image.jpg
对于建立时间检查,需要分析数据开始的位置和时钟目的时钟上升沿的关系,我们通过画时序图来表示路径中各个参数之间的关系。
image.jpg
在如图所示的路径中,建立时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tclk1 + Tco + Tdata
·Data Require Time = Latch Edge + Tclk2 - Tsu
·Latch Edge - launch Edge = cycle
·setup slack = Data Require Time - Data Arrival Time
      在建立时间检查中,锁存沿比发射沿晚一个周期,故它们之间的差值为cycle。数据需求时间计算时,需要预留出reg1的建立时间门限,所以要减去Tsu。
      电路在工作时,由于温度或其它因素的影响,实际的延时和计算出的结果有一定偏差,要算出最差的情况得到建立时间裕量才是有效的。那如何得到最差情况的裕量呢?观察上面的时序图,如果数据的延迟太大,或时钟的延迟太小,是不是setup slack的值就会减小,甚至可能不满足建立时间的要求。那工具就会将数据到达路径的延时取最大值,数据需求路径的延时取最小值来计算建立时间裕量,最终得到的结果如下:
·setup slack = cycle + Tclk2(min) - Tclk1(max) - Tco(max) - Tdata(max) - Tsu
时序得到收敛的要求是建立时间裕量大于或等于0,即:
·cycle >  TCLK1(max) + TCO(max) + Tdata(max) - TCLK2(min) + Tsu
根据这个公式可以算出系统运行的最大时钟频率。
      对于保持时间检查,需要分析数据结束的位置和时钟目的时钟上升沿的关系,如下图所示,保持时间裕量的计算公式如下:
·Data Arrival Time = Launch Edge + Tclk1 + Tco + Tdata
·Data Require Time = Latch Edge + Tclk2 + Th
·Latch Edge = launch Edge
·hold slack = Data Arrival Time - Data Require Time
      在保持时间检查中,发射沿和锁存沿是同一个时钟沿。数据需求时间计算时,数据结束之前需要留出保持reg1的保持时间门限,所以要加上Th。工具会计算数据到达路径的最小延时和数据需求时间的最大值来得到最差情况下的保持时间裕量,计算结果如下:
·hold slack = Tclk1(min) + Tco(min) + Tdata(min) - Tclk2(max) - Th
由上式可以看出,系统运行的最大时钟频率和保持时间的计算没有关系。
image.jpg
       通过建立时间裕量和保持时间裕量的计算公式,可以知道当优化建立时间裕量时,工具让数据走线变短或时钟走线边长,都会让保持时间的裕量更差;当优化保持时间裕量时,工具让数据走线变长或时钟走线边短,都会让建立时间的裕量更差。工具在布局布线时无法同时优化建立时间裕量和保持时间裕量。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

10

粉丝

71

主题
精彩推荐
热门资讯
    网友晒图
      图文推荐
        
        • 微信公众平台

        • 扫描访问手机版