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

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

约束输入路径

在这里插入图片描述
如图所示,触发器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+TclkTsetup
则建立时间裕量为
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=DataRequireTimeDataArrivalTime=TclkTsetupTclk2qTc1Tc2
我们将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=TclkTc2Tsetup(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=DataHoldTimeDataRequireTime=
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+Tc2Th=(Tclk2q+Tc1)(ThTc2)
因此,我们从建立时间裕量和保持时间裕量的公式中发现,在进行时序分析时,工具只要知道片外延迟信息的组合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) =(TclkTsetup)(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) =(TclkTc1Tclk2q)(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+Tc2Th
= ( T c l k 2 q + T c 1 ) + ( T c 2 − T h ) =(Tclk2q+Tc1)+(Tc2-Th) =(Tclk2q+Tc1)+(Tc2Th)
上式中,左边为已知信息,而右边为FPGA外部未知的延迟等信息,需要通过set output delay告知工具。
通过上面两个式子的分析,我们发现,若要对建立时间进行时序分析,则工具需要知道Tc2+Tsetup组合若要对保持时间进行分析,则工具需要知道Tc2-Th组合,因此我们定义:

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

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

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA硅农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值