前段时间刚刚结束了芯片的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. q1 数据隔离
如下图5,用一个isolation siganl 来隔离信号q1, 这个隔离信号可以是我们自己生成的一个控制信号,必须要保证隔离信号在rst1复位前就置位成低电平, 这样保证q1信号不会在时钟边沿附近发生电平变化, 就可以避免q2出现亚稳态。

图5:数据隔离法

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

图6:时钟隔离法

IC中的RDC中存在的亚稳态风险以及解决方案相关推荐

  1. 异步复位设计中的亚稳态问题及其解决方案

    异步复位设计中的亚稳态问题及其解决方案田志明,杨军,罗岚(东南大学国家专用集成电路系统工程技术研究中心,南京 210096) 摘 要:尽管异步复位是一种安全可靠复位电路的方法,但如果处理不当的话,异步 ...

  2. 《炬丰科技-半导体工艺》IC制造化学清洗过程中硅上重金属污染的表面光电压监测

    书籍:<炬丰科技-半导体工艺> 文章:IC制造化学清洗过程中硅上重金属污染的表面光电压监测 编号:JFKJ-21-883 作者:炬丰科技 引言 集成电路复杂性的持续增加,以及需要减小栅极氧 ...

  3. 【Vivado那些事儿】VIVADO中时序报告中WNS,WHS,TNS,THS含义

    VIVADO中时序报告中WNS,WHS,TNS,THS含义 运行"report_timing"或"report_timing_summary"命令后,会注意到 ...

  4. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

  5. 关于python缩进的描述中_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()...

    关于Python程序中与"缩进"有关的说法中,以下选项中正确的是() 答:缩进在程序中长度统一且强制使用 同文学或同音乐主题的民歌,<_______>是其中之一.此曲经 ...

  6. python中json dumps_python中json.loads,dumps,jsonify使用

    search_info = {'id':132,'user_role':3} print type(search_info) #输出 #转为string用dumps print type(json.d ...

  7. VS2010中“工具选项中的VC++目录编辑功能已被否决”解决方法

    http://blog.csdn.net/chaijunkun/article/details/6658923 这是VS2010的改变,不能够在"工具-选项"中看到"VC ...

  8. Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案

    关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案 转载于:https://www.cnblogs.com/daemonFlY/p/10916812. ...

  9. django-celery中配置celery中的日志

    django-celery中配置celery中的日志 django配置文件中的logging只是针对django中的views.API起作用,对celery不起作用,也就是说celery不能使用dja ...

  10. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

最新文章

  1. 盖茨基金会:如何使用Python拯救生命
  2. C++链式队列基本操作
  3. 编写一个方法,找出两个数字中最大的那一个。不得使用if-else或其他比较运算符。...
  4. quartz java web_java web定时任务---quartz
  5. 程序员过关斩将--解决分布式session问题
  6. names文件和data文件_data.table让你的读取速度提升百倍
  7. idea解决编译时出现的未结束的字符文字等错误
  8. win7计算机找不到脚本文件夹,win7系统开机出现无法找到脚本文件怎么办
  9. 在远程系统上开发 SharePoint 应用程序
  10. cruise软件模型,混动仿真模型,IMMD架构混联混动仿真模型,Cruise混动仿真模型,混联混动汽车动力性经济性仿真
  11. 怎么调html分辨率,屏幕分辨率怎么调
  12. 小游戏市场被微信点燃,社交平台蜂拥而至谁能分到蛋糕?
  13. oracle客户端下载和plsql下载以及配置远程连接oracle服务端(超详细)
  14. window10运行不了1stopt_1stopt点击运行没有反应求大佬指点
  15. linux51单片机烧录程序,单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境...
  16. 店铺没有自然流量,系统平台如何引流。
  17. 使用python画k均值分类图
  18. Android 中英文切换的实现。
  19. 数据挖掘与分析——回归模型
  20. 做外贸找国外采购商的七个新方法

热门文章

  1. 《Python程序设计基础(第2版)》习题答案
  2. 两个音轨合并_技能!如何合并两个音频文件?
  3. itextpdf生成pdf,html转pdf,pdf转图片
  4. 企业微信打标签功能在企鲸客SCRM管理系统里面的作用
  5. cad老是弹出命令中发生异常_CAD为什么会异常退出?遇到CAD异常退出怎么办-百度经验...
  6. MySQL 5.7.32-winx64安装教程(支持一台主机安装多个MySQL服务)
  7. 防止号码丢失之电话簿云端备份
  8. C语言枚举进程,实现一个简单的内存补丁
  9. 视觉培训1 学习opencv
  10. python-一些文件相关的操作