4.4 Recovery和Removal分析

******Recovery和Removal时序满足要求可以确保逻辑同时从复位状态跳出,也即每个寄存器在前一个时钟沿出都处于复位状态,那么下一个时钟沿所有寄存器都从复位释放。
******异步复位信号设计经常会出现这些时序问题。
(1)除了数据路径驱动目的寄存器的异步端口外,Recovery分析非常类似建立时间分析
(2)除了数据路径驱动目的寄存器的异步端口外,Removal分析非常类似保持时间分析
******recovery和Removal故障意味着什么?
当异步信号被撤出的时候,Removal分析是保证信号在时钟沿到来后还能保持足够长的时间有效,确保触发器都还保持处于非正常工作状态(如果是复位信号,即复位状态)。Recovery分析是保证异步信号在要求的时钟沿到来足够长的时间之前撤除,这样允许所有寄存器能够同时恢复到正常工作状态。
系统复位一般驱动一个时钟域中的所有寄存器,这些寄存器的数量不定。如果系统复位被置有效,recovery分析是指当系统复位释放所有目的寄存器从复位状态跳出并进入活动模式。如果从系统复位到所有目的寄存器延时都在一个时钟周期之内,那么所有寄存器会从复位状态同时恢复,并且所有寄存器会同时“看见”下一个时钟沿。如果寄存器出现了Recovery故障,寄存器在下一个时钟周期仍处于复位状态,就“看不到”这个时钟沿。
recovery故障要影响设计,需要满足两个最基本的要求:(1)逻辑必须在首个时钟周期(或最初几个时钟周期)改变逻辑状态(2)新的逻辑状态必须对设计很重要。
只要设计者没有故意增加时钟到目的寄存器的延时,那么Removal分析常常都能满足时序要求。这种故意增加时钟到目的寄存器的延时可通过门控时钟或时钟相移的方法实现。如果目的寄存器的时钟被门控,于是该寄存器接收它的时钟沿就会迟于系统复位源寄存器。当系统复位撤出的时候,它可能会在触发系统复位同一个时钟沿之前释放一些寄存器,类似保持时间违规。
******既然异步复位这么麻烦,为什么不用同步复位?
(1)为了更有效的理由器件资源。在FPGA内部的寄存器上已经现存复位和置位端口。如果设计成同步模式,就得使用fpga内部寄存器的数据输入端口,就不可避免地要伤害设计时序并增加设计面积。
(2)复位被异步地设计,可以使其更加的健壮。当被异步设计时,复位信号在复位时无须依靠时钟信号。
*****分析解决Recovery故障
一个普通的系统包含一个复位寄存器,这个寄存器驱动很多寄存器的清零或预置端口,这个寄存器通常都需要使用全局资源,这样它才可能扇出到整个芯片。故障通常发生在以下情形:(1)源寄存器并未布置在靠近全局驱动器附近。
(2)该网络本身并未使用全局布线资源,而是经过很长布线走遍整个芯片内部。
(3)该网络使用了全局布线资源,但是全局延时实际上相比时钟还是太慢。
(4)这个寄存器跨时钟域,因此Recovery时序要求无法实现
解决情况:(1)如果寄存器驱动全局布线资源,而且并未放置在全局布线资源附近,用户可以对这个寄存器添加一个位置约束,强制将其布局到全局资源附近。
(2)如果异步复位违反了时序要求,并且未使用全局布线资源,就使用全局布线资源。在assignment editor中对这个驱动异步信号的寄存器添加一个global= on的约束
(3)如果异步复位信号使用全局布线资源还是无法满足时序要求,尝试使用本地布线资源。同(2)global= off
(4)如果跨越了时钟域,那么在进入新的时钟域之后对其进行重新同步

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值