前段时间刚刚结束了芯片的RDC工作,打算做个即时总结,文中的复位信号都是低电平有效,文中假设所有的复位信号都是从异步复位同步释放电路处理过的,所以传统的复位信号释放导致的亚稳态并不存在,这里讨论的都是reset assertion时刻带来的亚稳态风险及解决方案。
1.什么是RDC?
在芯片设计中,RDC是reset domain crossing 的缩写,类似于CDC(clock domain crossing), 由于现在SOC芯片是有很多ECUs组成,为了使整个系统能够快速从复位中恢复, 用户希望SOC里面每个ECU模块都可以有自己独立的异步复位信号,这样可以出问题的时候只复位有错误逻辑的模块,而其它模块保持正常工作。
由于各个ECU的异步复位信号不一样,信号在他们之间传输就会出现RDC的问题,即信号从一个复位域被打拍或传输到另一个复位域,可能会带来亚稳态风险。
图1:RDC 图示
2.RDC中存在的亚稳态风险
如图1,当信号从rst1复位域跨到rst2复位域时,如果rst1置低位复位的时刻恰好在时钟上升沿附近,那q2输出信号可能会出现亚稳态风险,因为异步复位信号rst1置低位的那个时刻,q1被立刻拉低,因为rst1在时钟上升沿附近被拉低,也就是说q1在时钟上升沿附近发生信号变化,对于dff2来说,可能会出现建立时间或者保持时间不满足导致q1信号不能被准确sample, 从而导致q2信号出现亚稳态。
图2:具有风险的波形示意图
3.RDC中亚稳态解决方案
1) reset assertion order (过滤法)
在图1中如果能保证,在rst1复位之前,rst2已经复位,或者说rst1复位的时候,rst2也一定在复位状态,这样可以保证q2信号不会出现亚稳态现象,这就是RDC中的reset assertion order, 这样可以过滤掉一些报告出来的RDC 路径,这些路径不存在亚稳态风险,这是从RDC分析分析的层面解决问题。
图3:没有风险的波形图
下面的图4电路就是一个典型的例子,rst1复位的时候,rst2一定在复位状态,这个电路就是安全的,q2不会出现亚稳态。
图4:安全的RDC示例
2) 隔离法
a. 数据隔离
如下图5,用一个isolation siganl 来隔离信号q1, 这个隔离信号可以是我们自己生成的一个控制信号,必须要保证隔离信号在rst1复位前就置位成低电平, 这样保证q1信号不会在时钟边沿附近发生电平变化, 就可以避免q2出现亚稳态。
图5:数据隔离法
b. 时钟clk隔离
如下图6,用一个isolation siganl 来隔离信号clk, 这个隔离信号也可以是我们自己生成的一个控制信号,必须要保证隔离信号在rst1复位前就置位成低电平,这样保证q1信号在时钟边沿附近的变化不会被sample, 因为clk已经被gate off了,就可以避免q2出现亚稳态。
图6:时钟隔离法
————————————————
版权声明:本文为CSDN博主「blingbling青」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27077339/article/details/123612199