静态时序分析之恢复时间recovery time和撤销时间removal time
1、概念
同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输,防止亚稳态;
类似的,对于一个异步复位寄存器来说,置位和复位信号同样需要和时钟满足recovery time和removal time才能有效进行置位和复位操作。
recovery time:恢复时间。撤销复位时,恢复到非复位状态的电平必须在时钟有效沿到来之前的一段时间到来,才能保证时钟能有效恢复到非复位状态,此段时间为recovery time。
removal time :撤销时间。撤销复位时,在时钟有效沿到来之后复位信号还需要保持的时间为撤销时间removal time。
comment:从定义可以看出,recovery time和removal time都指的是撤销复位或者置位而言的,即系统或者设备将要work起来,并不是指复位和撤销置位(系统或者设备都要停止work了,还管它亚稳态作甚!)
2、应用
一般逻辑对此时序不用关心,比如很多模块的操作流程是复位完了,才开启模块时钟,再启动模块工作。这种流程可以保证不会出现recovery和removal的问题。
需要关心recovery和removal问题的最常见模块应该是CPU和MCU,因为一般CPU和MCU都是在复位撤销后就开始工作。想象一下,CPU的工作其实是在很多个DFF一起配合完成的,如果复位撤销时刻在DFF的clock沿附近,势必导致各个DFF开始动作的步调不一致,导致无法预料的错误情形(这里是不是又想到了影子寄存器呢!)
3、解决方法
用模块的工作时钟同步后,再送进模块使用。这样综合实现工具是会自动检查这个模块的DFF的时序并修正,直到没有recovery和removal的violation。