您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 0浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【数字IC/FPGA】时序约束--IO约束

FPGA硅农 发布时间:2022-04-07 14:10:18 ,浏览量:0

本文介绍输入输出路径的时序约束。

约束输入路径

在这里插入图片描述 如图所示,触发器UFF0在设计的外部,并向设计内部的触发器UFF1提供数据。数据通过输入端口INP1连接两个触发器。为了对触发器DFF1的建立时间和保持时间进行约束,则工具必须要知道位于FPGA外部的延迟信息。set input delay指令的作用就是告诉工具FPGA外部的延迟信号。 我们首先列出数据的到达时间: D a t a    A r r i v a l    T i m e = l a u n c h    e d g e + T c l k 2 q + T c 1 + T c 2 Data \;Arrival \;Time=launch\; edge+Tclk2q+T_{c1}+T_{c2} DataArrivalTime=launchedge+Tclk2q+Tc1​+Tc2​ 而数据的需求时间为: D a t a    R e q u i r e d    T i m e = l a u n c h    e d g e + T c l k − T s e t u p Data \;Required \;Time=launch\; edge+Tclk-Tsetup DataRequiredTime=launchedge+Tclk−Tsetup 则建立时间裕量为 T s e t u p    s l a c k = D a t a    R e q u i r e    T i m e − D a t a    A r r i v a l    T i m e = T c l k − T s e t u p − T c l k 2 q − T c 1 − T c 2 T_{setup\; slack}=Data \;Require \;Time-Data \;Arrival \;Time =Tclk-Tsetup-Tclk2q-T_{c1}-T_{c2} Tsetupslack​=DataRequireTime−DataArrivalTime=Tclk−Tsetup−Tclk2q−Tc1​−Tc2​ 我们将FPGA内部的信息和FPGA外部的信息分离开来,则有 T s e t u p    s l a c k = T c l k − T c 2 − T s e t u p − ( T c l k 2 q + T c 1 ) T_{setup\;slack}=Tclk-T_{c2}-Tsetup-(Tclk2q+Tc1) Tsetupslack​=Tclk−Tc2​−Tsetup−(Tclk2q+Tc1) 再来分析保持时间裕量 数据保持时间为 D a t a    H o l d    T i m e = l a u n c h    e d g e + T c l k 2 q + T c 1 + T c 2 Data \;Hold \;Time=launch\;edge+Tclk2q+T_{c1}+T_{c2} DataHoldTime=launchedge+Tclk2q+Tc1​+Tc2​ 数据锁存时间为 D a t a    R e q u i r e    T i m e = l a u n c h    e d g e + T h Data \;Require \;Time =launch \;edge+Th DataRequireTime=launchedge+Th 则保持时间裕量为 T h o l d u p    s l a c k = D a t a    H o l d    T i m e − D a t a    R e q u i r e    T i m e = T_{holdup\;slack}=Data \;Hold \;Time - Data \;Require \;Time= Tholdupslack​=DataHoldTime−DataRequireTime= T c l k 2 q + T c 1 + T c 2 − T h = ( T c l k 2 q + T c 1 ) − ( T h − T c 2 ) Tclk2q+T_{c1}+T_{c2}-Th=(Tclk2q+Tc1)-(Th-T_{c2}) Tclk2q+Tc1​+Tc2​−Th=(Tclk2q+Tc1)−(Th−Tc2​) 因此,我们从建立时间裕量和保持时间裕量的公式中发现,在进行时序分析时,工具只要知道片外延迟信息的组合Tclk2q+Tc1即可进行时序约束,所以,我们将Tclk2q+Tc1定义为input delay,它的含义是输入引脚INP1相对于时钟上升沿的延迟时间,即数据达到(FPGA)引脚的时间-时钟到达(FPGA)引脚的时间 进一步的,有 i n p u t    d e l a y    m a x = T c l k 2 q m a x + T c 1 m a x input \;delay \;max=Tclk2q_{max}+Tc1_{max} inputdelaymax=Tclk2qmax​+Tc1max​ i n p u t    d e l a y    m i n = T c l k 2 q m i n + T c 1 m i n input \;delay \;min=Tclk2q_{min}+Tc1_{min} inputdelaymin=Tclk2qmin​+Tc1min​ 下图是input delay的一个具体例子 在这里插入图片描述

约束输出路径

在这里插入图片描述 同样,工具需要对UFF0进行时序约束,就必须知道外部的延迟情况,set output delay指令的作用就是告诉工具FPGA外部的延时以及器件信息(Tsu,Thd)。 和之前一样,我们先计算建立时间裕量(此处略去推导过程): T s e t u p s l a c k Tsetup slack Tsetupslack = ( T c l k − T s e t u p ) − ( T c l k 2 q + T c 1 + T c 2 ) =(Tclk-Tsetup)-(Tclk2q+Tc1+Tc2) =(Tclk−Tsetup)−(Tclk2q+Tc1+Tc2) = ( T c l k − T c 1 − T c l k 2 q ) − ( T c 2 + T s e t u p ) =(Tclk-Tc1-Tclk2q)-(Tc2+Tsetup) =(Tclk−Tc1−Tclk2q)−(Tc2+Tsetup) 上式中,左边为FPGA内部的信息,属于已知的,而右边的则是FPGA外部的延迟和器件参数等信息,需要通过set output delay告知工具。 再来看保持时间裕量: T h o l d u p    s l a c k Tholdup \;slack Tholdupslack = T c l k 2 q + T c 1 + T c 2 − T h =Tclk2q+Tc1+Tc2-Th =Tclk2q+Tc1+Tc2−Th = ( T c l k 2 q + T c 1 ) + ( T c 2 − T h ) =(Tclk2q+Tc1)+(Tc2-Th) =(Tclk2q+Tc1)+(Tc2−Th) 上式中,左边为已知信息,而右边为FPGA外部未知的延迟等信息,需要通过set output delay告知工具。 通过上面两个式子的分析,我们发现,若要对建立时间进行时序分析,则工具需要知道Tc2+Tsetup组合,若要对保持时间进行分析,则工具需要知道Tc2-Th组合,因此我们定义:

output delay max=Tc2+Tsetup
output delay min=Tc2-Th

下图是进行output delay约束的一个例子 在这里插入图片描述

关注
打赏
1658642721
查看更多评论
立即登录/注册

微信扫码登录

0.0388s