1. RDC 解释

当前复杂设计除了包含多个时钟域外还包含了多个异步复位域。实际上,如果设计种存在跨异步复位域时同样会经常会遇到亚稳态的问题。 具体而言,对于有多个异步复位域的设计,如果某个异步复位在复位时,其复位的信号可能正好落在接受域时钟的建立和保持时间窗口内,这会造成接受端采样到发送端信号复位前后或复位后的值,从而造成仿真行为和真实行为的不一致。因此,需要不同异步复位域之间需要进行有效隔离或同步,或者提前指定异步复位的先后顺序,以确保设计可以可靠复位,避免由于跨异步复位域而引起的亚稳态问题。

1.1 跨异步复位分析

1.1.1 单时钟域中的跨异步复位

在芯片上,即使在单个时钟域内,源端触发器的异步复位端复位导致其输出跳变,该跳变传播到目的端触发器的数据输入端,就有可能会产生RDC,而RDC很容易导致亚稳态问题,当启动和捕获触发器的复位信号不同时,就会发生这种情况,称为复位域交叉(RDC)(如下图)。

如上图所示,当信号从rst1复位域跨到rst2复位域时,如果rst1置低位复位的时刻恰好在时钟上升沿附近,那q2输出信号可能会出现亚稳态风险.因为异步复位信号rst1置低位的那个时刻,q1被立刻拉低,因为rst1在时钟上升沿附近被拉低,也就是说q1在时钟上升沿附近发生信号变化,对于dff2来说,可能会出现建立时间或者保持时间不满足导致q1信号不能被准确sample, 从而导致q2信号出现亚稳态。

FF2(dest)的rst2没有复位的时候,src的rst1不合适的复位触发时间,导致FF2(dest)的输入d2=q1不满足setup 和hold time,导致目的端触发器的数据输出端进入亚稳态。
在上图中,当src的RST1解除复位时,q1上的解除复位值为相对于CLK时钟。因此,D2触发器上的输入值可以非常接近CLK时钟边缘。如果rst2上的值为“1”,DFF2处于活动状态,则可能导致输出D的亚稳态。

上面的电路中, 两个触发器都有不同的复位源,即rst1和rst2。rst1置为低电平(复位)而rst2保持高电平(不复位)可引起目的触发器的亚稳态,并且如果目的地触发器的输出向下行被进一步使用,那么可能会有一些功能故障。

1.1.2 无复位时序路径的跨异步复位域


目标触发器没有复位的情况和两个触发器的复位不同源的情况一样:当源触发器在不恰当的时间复位时,目标触发器的输入捕获到源触发器复位导致的源触发器的输处的数据变化,且该变化发生在目标触发器的时钟上升沿附近。目标触发器的输入可能会不满足建立时间或者保持时间要求,从而导致目标触发器的输出信号出现亚稳态。

1.1.3 跨异步复位与门导致


上图中我们有两个复位源rst1 和rst2。两者都“AND”连接到第一触发器D1的复位引脚,而第二触发器的复位仅连接到rst2。可以说源触发器的复位源实际上是目标触发器的复位源的超集。
因此,第二触发器的复位信号rst2_b由1变为0的低电平复位时,第一触发器一定复位,而第一触发器的复位信号rst1_b由1变为0的低电平复位时,第二触发器可能仍处于工作状态,因此可能会导致第二触发器进入亚稳态。

1.1.4 模块配置时的亚稳态

芯片中有些功能只能在POR期间复位,而在全局/热复位期间仍保持功能。因此,在全局复位期间,该功能的配置寄存器需要保持完整。但是,如果发生热复位,则在写入该特定寄存器时会破坏寄存器的内容,从而导致任何功能故障。下面的电路和波形图描述了这种情况。


在这种情况下,目标寄存器(B [7:0])是配置寄存器,只能通过POR复位。如果程序员正在写该寄存器,而源触发器突然复位,则目标触发器可能变得亚稳态,并可能稳定为未定义或不需要的值。

1.1.5 由于异步复位导致时钟故障

1.1.6 异步复位期间导致同步memory损坏

系统同步memory应在热复位期间保留其内容。但是由于复位域交叉问题,内存数据损坏的可能性很高。尽管在热复位过程中不会使存储器复位,但是控制存储器的存储器控​​制器逻辑可以异步进入复位状态。如下图所示,在此期间,如果使能了memory(使能了memory芯片选择并且正在进行某些memory写操作),则其同步接口将违反时序,并会损坏。
在时序图中,热复位(RST_B)在有效时钟沿附近断言,这将 异步更改存储器控制器输出chip_select,address,write_data,write_enable,从而导致存储器接口处的时序违规并导致数据损坏。


在memory写期间,由于时钟有效边沿附近的异步和异步复位断言,memory接口的控制和数据信号的立即变化所导致的亚稳态可能破坏memory的内容。

1.4 解决方案

1.4.1 解决方案1:reset assertion order

在图1和图2中,如果能保证,在rst1复位之前,rst2已经复位,或者说rst1复位的时候,rst2也一定在复位状态,这样可以保证q2信号不会出现亚稳态现象,这就是RDC中的reset assertion order, 这样可以过滤掉一些报告出来的RDC 路径,这些路径不存在亚稳态风险,这是从RDC分析的层面解决问题。
图4:没有问题的波形图

下面的图5电路就是一个典型的例子,rst1复位的时候,rst2一定在复位状态,这个电路就是安全的,q2不会出现亚稳态。
图5:安全的RDC

1.2.2 解决方案2:隔离法

(a)q1 数据隔离:如下图6,用一个isolation siganl 来隔离信号q1, 这个隔离信号可以是我们自己生成的一个控制信号,必须要保证隔离信号在rst1复位前就置位成低电平, 这样保证q1信号不会在时钟边沿附近发生电平变化, 就可以避免q2出现亚稳态。


图6 数据隔离方案
(b) 时钟clk隔离:如下图7,用一个isolation siganl 来隔离信号clk, 这个隔离信号也可以是我们自己生成的一个控制信号,必须要保证隔离信号在rst1复位前就置位成低电平,这样保证q1信号在时钟边沿附近的变化不会被sample, 因为clk已经被gate off了,就可以避免q2出现亚稳态。
图6:时钟隔离法

图7 时钟隔离方案

2. 模块间复位、解复位顺序

如图所示:模块A、B、C为芯片逻辑模块,数据流从模块A流向模块B、模块C。

1、复位顺序是怎样的?
如果需要对模块A、B、C进复位操作,复位操作顺序是什么样的呢?先复位哪个模块,后复位哪个模块?
复位顺序:C—>B—>A 按数据流的反方向复位
先复位C模块,最后复位A模块。复位的原则是保证复位完成后,数据通路中没有不稳定状态。
如果先复位模块A,最后复位模块C,则在模块A完成复位后的短暂时间内,模块A中之前的不稳定状态会依次传递到模块B和模块C,而B和C还处于非复位的工作状态,导致B和C接受到亚稳态的数据。
2、如果芯片上电完成后,模块A、B、C都处于复位状态,解复位的顺序是怎样的呢?
解复位:就是将复位信号置为无效状态,若上电后rst_n=0,解复位就是将rst_n=1。
解复位顺序:A—>B—>C 按数据流逆向解复位
先解复位模块A,最后解复位模块C,解复位后需要保证数据能够正常通路。
如果解复位顺序为C—>B—>A,在模块C解复位后,此时A和B仍处于复位状态,C暂时接收的数据是稳定的,但如果A和B在不恰当的时间解除复位,就会导致已经解复位的模块C采集到亚稳态的数据,使得电路进入错误的工作状态。
总得来说,后面的电路应该首先进行复位状态,或者最后进入解复位状态。

vcsynopsys 的RDC问题分析相关推荐

  1. 旋变解码(RDC)芯片分析

    1.旋转变压器介绍 旋转变压器(Resolver)是一种电磁式传感器,它主要用于角度位置和角速度的测量.旋转变压器由安装时固定不动的定子和安装在轴上的转子组成.旋转变压器的工作原理相似于普通变压器,它 ...

  2. Linux性能分析命令工具汇总

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  3. linux性能分析资源推荐(重要)

    分享几个linux性能分析网站: http://linuxperformance.top/ https://blog.csdn.net/jus3ve/article/details/78315165 ...

  4. RDC如何打造支撑百万用户的分布式代码托管平台

    一.背景介绍 毋庸置疑,代码是DevOps流程的起点,是所有研发流程的基础:代码托管为代码"保驾护航",确保代码的安全性.可用性,同时提供围绕代码的一些基础服务,如MR.Issue ...

  5. RenderDoc塞尔达荒野之息抓帧分析

    RenderDoc是一种抓帧工具,主要用来分析游戏开发中渲染流程,官网: https://renderdoc.org/ 我是用的版本是RenderDoc_1.14_64.zip 塞尔达荒野之息使用Ce ...

  6. 穆迪收购风险与合规情报、数据和软件领域的领导者RDC

    纽约--(美国商业资讯)--穆迪公司(Moody's Corporation, NYSE:MCO)今天宣布,其已同意以7亿美元收购反洗钱(AML)和了解你的客户(KYC)数据及尽职调查服务领域领先企业 ...

  7. (转)超全整理!Linux性能分析工具汇总合集

    原文地址:https://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇 ...

  8. 电子商务行业物流现状分析

    这段时间一直在研究电子商务的相关内容, 将近段时间的整理内容进行汇总,与朋友们进行交流. 经过对市场的详细调研,结合网络购物.电视购物.目录直投.移动商务等各种销售平台的实际运作情况,同时参考各大网络 ...

  9. 信号完整性分析6——电感的物理基础

    信号完整性分析6--电感的物理基础 在两条信号线间的耦合,电源分布系统以及EMI 中,电感在信号沿均匀传输线传播的过程中产生突变,从而造成信号完整性问题.很多场合都要设法减小电感,例如减小信号路径间的 ...

最新文章

  1. 为什么要选择html5,5分钟告诉你,为什么要学HTML5大前端
  2. FeResPost 4.1.8 发布
  3. 可怕的乖孩子_小说《可怕的乖孩子》讲了一个什么故事?
  4. python将元祖写入txt文档_python元祖和文件用法举例
  5. 『设计模式』简单工厂模式
  6. 汇编@data_汇编语言(4)--内存段
  7. python将矩阵顺时针旋转90度_python 二维数组90度旋转的方法
  8. Python 进阶——标准散列机制
  9. SQL Server高级查询之子查询(单行子查询)
  10. 输入输出系统的发展概况
  11. Js返回顶部实例代码
  12. 商务统计_13 使用excel拟合曲趋势线
  13. 吴恩达:还没有人能完全理解人工智能,包括谷歌和百度
  14. 原来《羊了个羊》也求助了云,拦截bot自动化攻击达5000万次 | CCF C³
  15. 操作性条件作用和经典性条件作用中,刺激分化和泛化的区别是?|小白心理-312/347考研答疑
  16. 光敏电阻5506主要参数_常用光敏电阻的规格参数
  17. php的lumen框架,Lumen框架“服务容器”源码解析
  18. 华罗庚统筹法与计算机专业,华罗庚的优选法与统筹法
  19. 软考复习-软件工程05-软件项目估算进度管理
  20. 权威服务器怎么修改ttl值,Windows服务器修改默认TTL值的方法

热门文章

  1. vue如何通过Nginx代理做到跨域访问API接口 解决404报错
  2. 微信小游戏的技术5要点
  3. BonesPro中文版
  4. 2021考研数学余丙森森哥线代冲刺串讲(结合森哥五套卷)笔记
  5. Fluke ADPT连接器给福禄克万用表插上翅膀----电阻测量
  6. 数据库设计之EAV(实体、属性、值)
  7. ArcGIS Server连接错误:代理服务器从远程服务器收到了错误地址
  8. 「三代组装」使用新版Falcon进行三代测序基因组组装
  9. Android实现换发型功能,换发型相机app下载 换发型相机 for Android V12.0.5 安卓手机版 下载-脚本之家...
  10. 网红程序员,粉丝打赏年入 10 万美元!