首页 > 其他分享 >VC Spyglass 的RDC问题分析

VC Spyglass 的RDC问题分析

时间:2023-05-15 09:03:52浏览次数:38  
标签:异步 触发器 VC rst1 模块 复位 亚稳态 RDC Spyglass

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出现亚稳态。
在这里插入图片描述
图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采集到亚稳态的数据,使得电路进入错误的工作状态。
总得来说,后面的电路应该首先进行复位状态,或者最后进入解复位状态。

标签:异步,触发器,VC,rst1,模块,复位,亚稳态,RDC,Spyglass
From: https://www.cnblogs.com/lanlancky/p/17400758.html

相关文章

  • c#高性能服务器源代码,其中包括mvc api服务,http服务,ftp服务,sokect服务,websocket服务,大
    c#高性能服务器源代码,其中包括mvcapi服务,http服务,ftp服务,sokect服务,websocket服务,大文件传输服务。这些服务均抛开iis及第三支持,可写成服务或随软件启动而启动。ID:85320654113922032......
  • SpringMVC中多个拦截器的执行顺序
    在SpringMVC中,多个拦截器的执行顺序是由配置文件中拦截器的顺序来决定的。假设我们有3个拦截器:Interceptor1、Interceptor2、Interceptor3,通过配置文件的方式定义拦截器的顺序,例如:<mvc:interceptors><mvc:interceptor><mvc:mappingpath="/**"/><bean......
  • vcu控制器,Carsim和simulink联合仿真车辆状态估计 估计的状
    vcu控制器,Carsim和simulink联合仿真车辆状态估计估计的状态为:横摆角速度,质心侧偏角,纵向车速,侧向车速,4个轮子的转动角速度先基于dugoff轮胎模型进行了轮胎纵向力和侧向力计算,再基于容积卡尔曼滤波CKF和无迹卡尔曼滤波UKF进行了车辆状态估计,精度很高,图中的工况为双移线工况和正弦......
  • VCU整车管理控制器策略文档,量产车型使用。 快速原型开发 整车管理系
    VCU整车管理控制器?策略文档,量产车型使用。快速原型开发整车管理系统策略开发,应用层软件,在售车型最新版本软件。按照ASPIC开发流程开发,基于AUTOSAR架构开发,满足功能安全ASILC。模型和策略文档可以分开出。VCU整车管理系统应用层软件,策略文档。都是量产车型在用,不是仿真不是仿真......
  • vcu控制器,电动汽车 simulink仿真模型, 可进行整车动力性仿真
    vcu控制器,电动汽车simulink仿真模型,可进行整车动力性仿真测试(最高车速,最大爬坡,加入时间)和NEDC工况能耗测试(电耗)。由驾驶员模型、VCU控制制模型、电机电池系统模型(电机系统和电池系统已根据供应商提供的方案数据进行参数化),不提供文档,需要一定技术功底。ID:1690684299257361......
  • VCU整车控制器 ,量产模型搭配底层软件 ,某知名电动汽车 量产VCU模型搭配英飞凌tc234底
    VCU整车控制器,量产模型搭配底层软件,某知名电动汽车量产VCU模型搭配英飞凌tc234底层驱动软件,可完成编译烧写,运行。服务一:应用层模型,服务二:信号矩阵协议,信号接口定义表服务三:底层驱动源代码,接口层源码;可以供,全套,有兴趣的汽车工程师们可以看看,2022最好的投资是啥,投资自己,多多学......
  • simulink/sf 纯电动+4档变速箱动力性经济性仿真模型 包含vcu控制及
    simulink/sf纯电动+4档变速箱动力性经济性仿真模型包含vcu控制及换档控制模型,可实现最高车速最大爬坡度加速时间,能耗续航仿真。有建模及使用说明文档,ID:96130683559789699......
  • VCL 中的 Windows API 函数: BeginDeferWindowPos
    BeginDeferWindowPos和DeferWindowPos、EndDeferWindowPos是一组一起使用的函数,可对一组窗口的位置、大小、Z序等进行调整,在ExtCtrls单元有用到.下面先用常规方法实现对Panel1中的一组Button进行调整,然后再用上面三个函数重新实现.用BeginDeferWindowPos、Defer......
  • VCL 中的 Windows API 函数: AlphaBlend
    AlphaBlend是指定图像混合透明的函数,在Graphics、GraphUtil、RibbonStyleActnCtrls单元用到.下面的测试是把一张图片显示在窗体,并可以调整透明度.、 unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, ......
  • AI孙燕姿唱《安河桥》(这些翻唱作品基于一个叫做so-vits-svc的开源项目)
    在B站上,AI孙燕姿翻唱的林俊杰《她说》、周董《爱在西元前》、赵雷《成都》等等,让一众网友深陷无法自拔。网友表示,听了一晚上AI孙燕姿,出不去了......这些翻唱作品基于一个叫做so-vits-svc的开源项目。仅凭数段音频,就可用一个生成式模型来合成目标音色的音频,训练出用户想要的声学......