亚稳态和毛刺—— Meta-stability and Hazard

亚稳态和毛刺—— Meta-stability and Hazard



reference: http://www.360doc.com/content/11/0913/23/6714119_148048038.shtml


我们在芯片设计与调试中,一定曾经遇到过一些诡异的问题。比如芯片的某一部分莫名其妙的复位却并没有故障记录、比如有的问题上下电和复位表现不一。甚至在有的FPGA项目后期,每一次重布局布线都是对人品的考验,祈祷在下一个版本中,Voldemort(伏地魔,这是什么鬼?)不会出现。根本原因是多方面的,但是不难发现亚稳态和毛刺的影子。

幸运的是,这些问题难以定位但容易在设计中避免,只需我们在设计中稍加关注即可避免。任何一个成熟的团队都应该有自己的checklist。最近的一次检视中,发现一个设计可能同时受亚稳态和毛刺影响。那个有4年经验的工程师漫不经心的说“如果完全照教科书做,的确应该像你说的那样”。与遵守规则同样重要的是对规则的理解。

1亚稳态

1.1亚稳态的定义
亚稳态是指触发器无法在某个规定时间段内达到一个确定的状态。当一个触发器进入亚稳态时,该触发器的输出何时能稳定以及会稳定在哪个状态都不能确定。在达到稳定之前的时间,触发器输出一些中间电平或者处于震荡状态,并且这种无用的输出电平可以沿着信号通路上级联的触发器传播下去。


1.2
亚稳态的产生机制

如果触发器的setup timehold time不满足,就可能产生亚稳态,此时触发器的输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,这段时间称为决断时间(resolution time。经过resolution time之后Q端将稳定到0或者1,但究竟是0还是1和输入没有关系。

1是一个处于亚稳态的寄存器的输出的例子。



1.3
亚稳态的危害与避免

亚稳态会导致逻辑误判,如果发生亚稳态的部位对系统的稳定至关重要同时缺少防错机制,则可能导致系统崩溃(逻辑挂死)。

逻辑误判可以通过特殊设计减轻危害,例如异步fifogray设计。比发生部位本身的逻辑误判更严重的是亚稳态传递。亚稳态传递会扩大故障面,让问题变得复杂。

在完全同步的设计中,CAD工具可以方便的分析每一个触发器的建立保持时间。理论上一个时序完全收敛的纯同步设计不会有亚稳态问题。和有赖于时序分析的完备性,例如所使用的timing mode与实际芯片及其工作条件的吻合度,实际时钟抖动、偏斜与预期是否一致等。扩大时序裕量可以降低亚稳态发生的概率。

当前一个数字芯片上往往有多个时钟域,时钟域之间的异步设计是必不可少的。只要系统中存在异步设计,则亚稳态无法避免,但我们可以尽量限制亚稳态的影响范围并通过特殊的逻辑设计容忍可能的逻辑误判。


1.3.1
缩小亚稳态的影响范围

a.“将异步输出寄存器的扇出限制为1

         


如图
2所示,让异步输出寄存器的扇出为1相当于减少了异步路径的条数

若异步信号有多个输出,则可能因为路径延迟和时钟偏斜导致有的寄存器采到有效值,有的寄存器进入不确定的状态,如图2和图3所示。

                

b.“异步信号参与逻辑运算前先同步两拍”

如图2所示,异步信号直接参与逻辑运算可能会导致亚稳态传递,而先将其用2级寄存器同步则基本可以把亚稳态限制在这2级寄存器内。经过两级触发器同步,在右边的输出将是同步的,而且该输出基本不存在亚稳态。原理是即使第一个触发器的输出端存在亚稳态,经过一个CLK周期后,第二个触发器D端的电平仍未稳定的概率非常小,因此第二个触发器Q端基本不会产生亚稳态。值得注意的是,这会大大降低亚稳态的发生概率但是并不是说一定不会出现,如果是关键信号,在接下来的设计中采用防错设计依然是必要的。


1.3.2 
通过设计容忍逻辑误判

通过设计容忍逻辑误判的典型例子是异步fifogray设计Fiforam的读写地址是012…连续的,而相邻二进制数的格雷码只相差1bit。也就是,对读写地址来说,任何一个时钟沿只有一个bit跳变,而且这1bit出现暂时的逻辑误判无关紧要。

4是常用的将总线数据传递到异步时钟域的例子。

                      


组合逻辑的毛刺(竞争与冒险)


2.1
概念

毛刺是一种形象的说法,它的产生归因于组合逻辑的竞争与冒险

竞争:在组合逻辑中,信号经由不同的路径达到某一会合点的时间有先有后,这种现象称为竞争

冒险:由于竞争而引起电路输出发生瞬间错误现象称为冒险。表现为输出端出现了设计预期之外的窄脉冲,常称其为毛刺。(可见,冒险是竞争产生的结果


2.2
毛刺的产生机制

组合逻辑的多个输入端到达某一汇合点的时间有先后,导致组合逻辑电路的输出出现瞬间错误。图5是一个动态冒险的例子,即使假设线延迟为0,毛刺依然存在。关于动态冒险静态冒险:。

                         



       组合逻辑电路即使在输入逻辑值没有发生变化的情况下也可能发生跃变,产生这些非预期的干扰脉冲“假信号”。我们称可能发生假信号脉冲的电路存在冒险。如果输入有变化而输出不应发生变化的情况下,出现了单个窄脉冲,称为电路产生了静态冒险
只有存在静态冒险才可能导致动态冒险
    产生向下脉冲的冒险,称为冒险1;产生向上脉冲的冒险,称为冒险0。分别分为:静态冒险1,静态冒险0;动态冒险1,动态冒险0。静态1冒险只可能发生在与-或逻辑,与非-与非逻辑中;静态0冒险只发生在或-与逻辑,或非-或非逻辑中。动态冒险竞争不会发生在两层逻辑电路中。因为动态冒险竞争需要三条或者三条以上不同的信号路径。产生原因,通常是由于多成逻辑最小化的时候,不良的因子分解造成的。

解决方法有:1,加入冗余逻辑;2,加入DFF,用时钟信号对数据信号进行信号同步。但是,前者所引起的问题有:1,使电路逻辑变得比较复杂;2,冗余电路使DUT变得不是完全的可测试。故而,常用后者的方法。

异步系统对组合逻辑的冒险竞争十分敏感,这也就是为何设计者愿意选用同步系统的理由之一。(原有什么其他理由?)




1.3针对毛刺的设计


与亚稳态不同,在我们的设计中,毛刺几乎是无法避免的。不过有一点相同的是,在一个纯同步的设计中,毛刺不会带来问题。因为针对寄存器的建立保持时间的时序分析是“全路径”的。也就是说,时序分析
EDA工具会认为组合逻辑的输出f在它稳定的时刻才是有效的,保证不会在组合逻辑输出f为毛刺时采样

当然,这并不是说我们可以高枕无忧了。在包含异步的设计中,毛刺依然可能带来严重的问题。让我们回到文章前面那个工程师遇到的问题吧。

他需要用3个信号组合运算产生一个复位信号,对一个小模块复位。他的HDL代码可以表示为图6中的电路,正确的做法读者应该早已经  知道了,这里就不给出答案了。

                           

两个基本概念竟然啰嗦了这么长,而且它还引出了另一个同样有意思的问题,复位。又是一个基础但却非常关键的问题

PDF(Portable Document Format)是一种跨操作系统平台的电子文档格式,它可以在不同平台上的不同设备上以相同的样式和格式显示。ISO 26262是一项国际标准,主要用于确保在汽车电子系统的设计和开发过程中安全性能的要求。 Hazard Analysis and Risk Assessment(HA&RA)是ISO 26262标准的一个重要部分,用于识别和评估汽车电子系统的潜在危险和风险。HA&RA的目标是通过系统性的方法来识别和分析各种可能导致事故的危险因素,并评估这些危险因素对人员、环境和财产的风险。 在HA&RA过程中,首先要对系统进行全面的功能和设计分析,以确定潜在的危险源,例如软件故障、硬件故障、通信故障等。然后,需要对每个潜在的危险源进行详细的风险分析,考虑可能的事故场景和后果。 基于风险分析的结果,可以制定相应的风险控制措施,包括设计改进、错误检测和纠正、故障告警和车辆操作限制等。同时,也需要制定相应的安全目标和安全措施,确保汽车电子系统的安全性能得到有效管理和控制。 HA&RA是ISO 26262标准中的一个重要环节,通过对潜在危险和风险的分析和评估,可以帮助制定出更安全可靠的汽车电子系统。它的实施可以提高汽车的安全性能,减少事故的发生概率,保护人员生命安全和财产安全。因此,在汽车电子系统的设计和开发过程中,HA&RA的实施是非常重要且必要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值