reset什么意思
1 引言
Reset作为一个芯片的“发令枪”,是每个芯片必不可少的信号,接下来就跟大家聊聊关于reset的那些事…
通常情况下,reset可以分为两大类,一类是同步reset,另外一类是异步reset。它们各自存在不同的优缺点,比如:
同步reset需要在clock的有效边沿才会起作用,所以对glitch不是太敏感。
但是也同时是这个问题,让同步reset要想起作用,必须要有稳定的时钟才可以,但是芯片刚上电的时候,往往没有稳定的时钟可以提供,所以这也是同步reset的一个难题。
异步reset不需要时钟信号触发,在任何情况下,只要reset信号有效,芯片便能被reset掉,但是这样就导致异步reset对glitch比较敏感。
另外异步reset在释放的时候会存在recovery/removal问题,这也是异步reset最需要解决的问题。
由于以上不同类型的reset问题的存在,通常情况下,大部分人在芯片设计时会选择使用异步reset逻辑,因为解决异步reset存在的问题,远比解决同步reset上电时需要稳定时钟的问题容易的多,所以接下来就主要跟大家学习下异步reset存在的一些问题及相关解决方法。
2 何为同步/异步reset?
通常情况下,我们在做coding register的相关逻辑时,会有如下两种style。而这两种coding在实现之后,体现电路上关于reset的相关形式,分别就是同步reset(左图)和异步reset(右图)。
图1 同步/异步reset coding style
而真正实现的电路,大体上会是如图2所示的电路结构。当然,通常情况下,同步reset在library中可能没有直接的DFF cell对应,工具会通过一些comb logic和DFF组合而成(图2左类似)。而异步reset的DFF,通常情况下在library中会直接存在对应的cell(类似于图2右所示)。
图2 同步/异步 DFF电路
而异步reset-DFF的展开电路,可以表示为如图3所示的两级级联latch,外加一些comb logic的电路结构(DFF是由主从latch构成的,详细解释会在DFF相关文章中解释)。
图3 带异步reset pin的DFF展开电路简图
3 何为recovery/removal问题?
如图3所示的电路结构,如果RSTN从1→0,那么Q输出会立即变为0,完全是异步reset的行为;而当RSTN从0→1时,即reset release的时候,如果RSTN恰好在时钟有效边沿附近release,那么可能就会存在问题。因为这时,图3中前级latch中的NAND-G,电路中就会存在竞争,一种可能是RSTN被识别为低状态,所以DFF的D端数据写不进来,那么当前cycle相当于reset继续有效;另一种可能是RSTN识别为高状态,那么此时D端数据可以被写进前级latch,那么当前cycle相当于reset已经无效。
所以这种在DFF clock有效边沿释放时产生的不确定行为,便是recovery/removal问题。如图4所示,具体的定义为:
Recovery:异步reset信号在DFF有效时钟边沿之前一定的时间内,要保持稳定,这项规则检查,便被称作recovery规则检查。
Removal:异步reset信号在DFF有效时钟边沿之后一定的时间内,要保持稳定,这项规则检查,便被称作removal规则检查。
当然上面说的这个定义其实是不严谨的,因为recovery/removal的真正定义是clock相对于reset的一项规则检查,不过大家通常情况下,会理解成reset相对于clock的一项检查,因为clock通常会被大家看做基准信号,这样对记忆和理解也有帮助,所以很多时候,大家会将recovery/removal等价成setup/hold,其实这不是很合理的。
图4 recovery/removal问题图示
当然,对单一一个DFF而言,如果碰上recovery/removal问题,可能并不会有什么问题,顶多是多reset或者少reset一个cycle的事情,但是reset信号,会对芯片内部所有的DFF起作用,而如果这时,产生了recovery/removal问题,就会让芯片内不确定的一部分DFF当前cycle继续处于reset状态,另一部分DFF已经出了reset状态,换句话说,就是芯片内的DFF不同时开动,这其实就违背了reset的本意,如果处于控制路径上,可能就会产生严重的问题。所以异步reset的recovery/removal问题是必须要解决的。
5 如何解决recovery/removal问题?
之所以会产生recovery/removal问题,其根源在于reset是异步的,工具无法对异步reset做任何时序上的检查,所以要解决这个问题,就是将异步reset做同步处理,但是还必须保证异步reset的特性 – reset起作用不能受控于clock。
图5 异步reset同步释放电路解析
如图5所示的电路结构(红色虚线内电路),在rstn有效时,即从1→0的时候,q2可以不受控于clock,立即拉低,这样就会让接q2输出的DFF reset端立即有效;而当rstn从0→1时,此电路结构会经过两级sync之后,才会变为高电平,并且由于q2是DFF输出,所以一定会满足正常的timing check的需求(即变化不会出现在clock有效边沿附近),从而可以避免后面驱动的register产生recovery/removal问题。当然,这个电路只是简单的reset sync示意,真正芯片中使用时,可能会存在一些变形结构,并且同步级数也可能是需要变化的(MTBF的原因,之后文章中再解释)。
本文主要就是为了介绍下异步reset结构,以及异步reset的recovery/removal问题以及相关的解决方法。当然,异步reset还存在其它的一些问题,比如同时有CDN/SDN pin的DFF使用时的可能问题等等的,后面文章会继续介绍…
走过路过不要错过
分享转发或点击在看是对笔者更大的鼓励