0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

复位设计的结构性问题分析与解决方案介绍

电子设计 来源:郭婷 作者:电子设计 2018-12-04 08:22 次阅读

随着数字化设计和SoC的日益复杂,复位架构也变得非常复杂。在实施如此复杂的架构时,设计人员往往会犯一些低级错误,这些错误可能会导致亚稳态、干扰或其他系统功能故障。本文讨论了一些复位设计的基本的结构性问题。在每个问题的最后,都提出了一些解决方案。

复位域交叉问题

1. 问题

在一个连续设计中,如果源寄存器的异步复位不同于目标寄存器的复位,并且在起点寄存器的复位断言过程中目标寄存器的数据输入发生异步变化,那么该路径将被视为异步路径,尽管源寄存器和目标寄存器都位于同一个时钟域,在源寄存器的复位断言过程中可能导致目标寄存器出现亚稳态。这被称为复位域交叉,其中启动和捕捉触发的复位是不同的。

在这种情况下,C寄存器和A寄存器的起点异步复位断言是不同的。在C寄存器复位断言过程中而A触发器没有复位,如果A寄存器的输入端有一些有效数据交易,那么C寄存器的起点异步复位断言引起的异步变更可能导致目标A寄存器发生时序违规,从而可能产生亚稳态。

复位设计的结构性问题分析与解决方案介绍

图1:复位域交叉问题

在上面的时序图中,当有一些有效数据交易通过C1进行时,rst_c_b获得断言,导致C1发生异步改变,w.r.t clk从而使QC1进入亚稳态,这可能导致设计发生功能故障。

2. 解决方案

* 使用异步复位、不可复位触发器或D1触发器POR.

* 如果复位源rst_c_b是同步的,那么则认为来自C_CLR --> Q的用于从rst_c_b_reg -->C_CLR-->C_Q1-->C1-->A_D进行设置保持检查的时序弧能够避免设计亚稳态。然而,通常在默认情况下 C_CLR-->Q时序弧在库中不启用,需要在定时分析过程中明确启用。

* 在目的地(A)使用双触发器同步器,以避免设计中发生亚稳态传播。然而,设计人员应确保安装两个触发器引入的延迟不会影响预期功能。

由于组合环路导致复位源干扰

1. 问题

在SoC 中,全局系统复位在设备中组合了软件或硬件生成的各种复位源。LVD复位、看门狗复位、调试复位、软件复位、时钟丢失复位是导致全局系统复位断言的一些示例。 然而,如果由于任何复位源导致的全局复位断言是完全异步的,且复位发生源逻辑被全局复位清零,那么设计中会产生组合环路,这会在该复位源产生干扰。组合路径的传播延迟会根据不同的流程、电压或温度以及干扰范围而不同。如果设计中使用了组合信元用于复位断言和去断言,那么也会导致模拟中出现紊乱情况。这被视为设计人员的非常低级的错误。

复位设计的结构性问题分析与解决方案介绍

图2:复位源干扰(基本问题)

在上图中,当复位源SW_Q断言时,会导致rst_b断言,这是全局复位。现在,如果全局复位本身被用于清除 “SW_Q” 复位断言,那么会在设计中在SW_Q输出和全局复位时产生干扰。此外,在模拟中,这会导致紊乱情况,因为复位源断言试图通过该组合逻辑去断言。

然而,如果复位源(SW_Q)在复位状态机(触发器的SET/CLR输入)为全局复位断言被异步使用,那么复位干扰可能能够复位整个系统(通过断言全局复位),因为全局系统复位去断言不仅仅与复位源去断言相关。当该复位源(有干扰)被同步使用或在触发器D输入使用的情况下可能依然有一个问题。干扰范围可能无法在至少一个周期内保持稳定,因此这不会被目标触发器捕获。此外,该复位源不能被用作任何电路的时钟(除了脉冲捕捉电路),因为它可能违反时钟宽度。

复位设计的结构性问题分析与解决方案介绍

图3:复位源干扰(问题2)

在上图中,复位源SW_Q将出现干扰。虽然如果复位源SW_Q的干扰在某个触发器被捕捉作为复位事件状态(在S)或用于其他目的,全局复位输出(rst_b)都没有干扰,但它将导致时序违反/亚稳态,或根本不可能被捕获。

2. 解决方案

* 设计人员永远都不应犯下上述(图2)低级错误。

* 如果复位实现如图3所示,那么设计人员应保证复位源(在该示例中为SW_Q)总是在触发器的SET/CLR输入使用,而不在D或CLK使用。

* 解决这个问题的最好的方法是在复位状态机中使用之前注册该复位源。 虽然它将导致时钟依靠全局复位断言,但是无论如何,如果没有时钟,该内部复位(SW_Q)都不会断言。请参见图4.

复位设计的结构性问题分析与解决方案介绍

图4:解决方案1

此外,用户也可以扩展SW_Q断言,然后再在设计中使用它,复位断言与时钟无关。 请参见图5.

复位设计的结构性问题分析与解决方案介绍

图5:解决方案2

复位路径的组合逻辑

1. 问题(I)

如果组合逻辑输入大约在同一时间发生变化,那么使用复位路径中的组合逻辑可能产生干扰,这可能在设计中触发虚假复位。下面是一个RTL代码,它会在设计中意外复位。

assign module_a_rstb = !((slave_addr[7:0]==8'h02 & write_enable & (wdata[7:0]==00))

always @(posedge clk or negedge module_rst_b)

if(!module_rst_b) data_q <= 1'b0;

else data_q <= data_d;

在上面的示例中,slave_addr,write_enable和wdata改变它们的值 w.r.t system clock,使用静态时序分析,设计人员可以保证在目标触发器的设置时间窗口之前这些信号在一个时钟周期内的稳定性。然而,在该示例中,这些信号直接用作触发器的异步清零输入。

因此,即使在特定的时间slave_addr[7:0]在逻辑上将其值从“00000110”改为“01100000”,但由于组合逻辑的传播延迟(净延迟和信元延迟)它可以用一个序列“00000110 --> 00000010 --> 00000000 --> 01000000 --> 01100000”生成过渡。

在这段时间里,salve_addr为“00000010”,如果wdata[7:0]始终为零且“write_enable” 已经被断言,那么它将在module_rst_b创建一个无用脉冲,从而导致虚假复位。

复位设计的结构性问题分析与解决方案介绍

图6:复位路径的组合逻辑

2. 解决方案

首先注册组合输出,然后再将其用作复位源(如图7所示)。

复位设计的结构性问题分析与解决方案介绍

图7:复位路径的组合逻辑解决方案

3. 问题(II)

在上面的示例中,复位路径的组合逻辑解决方案并不完善。如果组合逻辑输入大约在同一时间发生变化,那么它可能在设计中触发虚假复位。然而,如果组合逻辑的输入信号变化相互排斥,那么它可能不会引起任何设计问题。例如,测试模式和功能模式相互排斥。因此复位路径的测试复用是有效的设计实践。

然而,对于某些情况,变化相互排斥的静态信号或信号可能会导致设计出现虚假复位触发。下面的示例描述了此类设计可能出现问题。

复位设计的结构性问题分析与解决方案介绍

图8:复位路径的组合逻辑(问题 2)

在上面的示例中,多路复用结构用于复位路径,同时进行RTL编码。其中“mode” 是一个控制信号,不频繁改变,而mode0_rst_b和mode_1_rst_b是两个复位事件,然而在合成RTL时,在门控级它被分解成不同的复杂的组合(And-Or-Invert[AOI])信元。虽然在逻辑上它相当于一个多路复用器,但由于不同的信元和净延迟,每当信号“mode”从 1-->0变化时,final_rst_b都会产生干扰。

4. 解决方案

* 在合成过程中在复位路径保留多路复用结构,因为多路复用结构与其他组合逻辑相比易于产生干扰。MUX Pragma可以在编码RTL时使用,这将有助于合成工具在复位路径中保留任何多路复用器。

设计中的同步复位问题

1. 问题(I)

在许多地方,设计人员在时钟方面喜欢同步复位设计。原因可能是为了节省一些芯片面积(带有异步复位输入的触发器比任何不可复位触发器都大)或让系统与时钟完全同步,也可能有一些其他原因。对于此类设计,当复位源被断言时需要向设计的触发器提供时钟,否则,这些触发器可能会在一段时间内都不进行初始化。但当该模块被插入一个系统时,系统设计人员可能选择在复位阶段禁用其时钟(如果在一开始不需要激活该模块),以节省整个系统的动态功耗。因此,该模块甚至在复位去断言后一段时间内都不进行初始化。如果该模块的任何输出直接在系统中使用,那么将捕获未初始化和未知的值(X),这可能会导致系统功能故障。

复位设计的结构性问题分析与解决方案介绍

图9:同步复位问题时序图

2. 解决方案

在复位阶段启用该模块的时钟且持续最短的时间,使该模块内的所有触发器都在复位过程中被初始化。 当系统复位被去断言时,模块输出不会有任何未初始化的值。

复位设计的结构性问题分析与解决方案介绍

图10:同步复位问题已解决

3. 问题(II)

在时钟域交叉路径使用两个触发同步器是常见做法。然而,有时设计人员对这些触发器使用同步复位。相同的RTL代码是

always @(posedge clk )

if(!sync_rst_b) begin

sync1 <= 1'b0; sync2 <= 1'b0 ;

end

else begin

sync1 <= async_in; sync2 <= sync1

end

在硬件中进行了RTL合成后,上面的代码会在双触发器同步器的同步链中引入组合逻辑,这会带来风险,并缩短sync2触发器输入进入亚稳态的时间。

复位设计的结构性问题分析与解决方案介绍

图11:同步复位问题2

2. 解决方案

可用以下方式编写RTL代码,以避免同步链的组合逻辑。

always @(posedge clk )

if(!sync_rst_b) begin

sync1 <= 1'b0;

end

else begin

sync1 <= async_in; sync2 <= sync1

end

在上面的代码中,对sync2触发器不使用复位,因此在同步链中不会实现组合信元。然而,需要注意sync2需要一个额外的周期才能复位,这不应导致设计出现任何问题。

冗余复位同步器引起的问题

1. 问题

在使用多个异步时钟的设计中,设计人员需要确保在目标寄存器使用的时钟方面,异步复位的同步去断言,否则可能导致目标触发器发生时序违反,从而产生亚稳态。复位同步器被用来复位去断言,与目标时钟域同步。然而,只有在系统复位去断言过程中有目标时钟时才会发生复位去断言时序违反。如果在复位去断言时没有时钟,那么便不会有任何时序违反。因此,在设计多时钟域模块时,设计人员可以让编译时间选项绕过该模块中的那些复位同步器,并让系统集成商根据对该模块的时钟可用性决定是否需要使用复位同步器。

此外,如果系统时钟和异步时钟比非常高,冗余同步器甚至会造成设计功能性问题。下面描述了这个问题。

复位设计的结构性问题分析与解决方案介绍

图12:冗余同步器的问题

在上面的设计中,去断言与sys clk同步的系统复位被馈送到(mod_clk域)的复位同步器,然后在mod_clk域逻辑中使用该复位。让我们假定sys clk : mod_clk的时钟频率比大于6:1.默认不启用mod_clk,以节省动态功率。当用户想要启用mod_clk域逻辑的功能时,便启用该时钟。在启用了该时钟后,有两个mod_clk周期的延迟,其中,由于复位同步器导致整个mod_clk域逻辑都处于复位状态。在该阶段,如果一些数据交易从sys clk域开始,将在mod_clk域丢失。

2. 解决方案

虽然这不是大问题,但有时会在客户一端造成混淆,因为该延迟对客户不可见。 因此消除混淆的更好的方式是:

* 如果在全局复位去断言过程中没有时钟,则在设计中绕过/删除冗余复位同步器。 这当然会节省一定的门控数。

* 如果动态功耗不是问题,用户可以在mod_clk域逻辑开始运作之前很长时间在启动代码选择启用mod_clk. 因此,复位去断言将有足够的时间传播。

* 这也可以在软件中处理,在任何有效操作之前启用了mod_clk后,设置两三个mod_clk周期的延迟。

由于罕见的时钟路径导致复位去断言时序问题

1. 问题

设计的复位架构根据系统而不同。在一些安全关键设备中,整个复位状态机在安全时钟上工作,安全时钟默认启用。 该时钟也被用作设备的默认系统时钟。

复位设计的结构性问题分析与解决方案介绍

图13:罕见时钟路径的问题

在上图中,复位状态机(R触发器)在default_clk上工作。此外,在复位去断言过程中,default_clk是sys clk的源。因此,在逻辑上,这两个时钟(clk1和clk2)在复位去断言过程中同步。但是,由于clk1和clk2之间存在巨大的罕见路径,因此很难平衡这两个时钟并视其为同步。 因此,满足A触发器的复位去断言变得具有挑战性。

2. 解决方案

异步对待clk1和clk2,并在A触发器中使用复位之前放置复位同步器。现在需要从S2-->A满足复位去断言时序(见图14)。这不应是个问题。

复位设计的结构性问题分析与解决方案介绍

图14:解决方案

结束语

这部分主要专注于复位设计中的故障以及克服这些问题的可能的解决方案。然而,上述解决方案并非唯一的解决方案,也不普遍适用于所有设计。这些是一些通用的解决方案和建议的指导方针,在特殊情况下可能需要进行修改。在这些情况下,此类问题不仅导致功能故障,还会增加一些额外的调试时间和工作,从而增加执行周期时间。因此,设计人员需要在设计的早期阶段考虑此类问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5304

    浏览量

    119883
  • soc
    soc
    +关注

    关注

    38

    文章

    4110

    浏览量

    217809
  • 触发器
    +关注

    关注

    14

    文章

    1995

    浏览量

    61016
收藏 人收藏

    评论

    相关推荐

    必备:复位设计中的结构性缺陷及解决方案

    随着数字化设计和SoC的日益复杂,复位架构也变得非常复杂。在实施如此复杂的架构时,设计人员往往会犯一些低级错误,这些错误可能会导致亚稳态、干扰或其他系统功能故障。本文讨论了一些复位设计的基本的结构性问题。在每个问题的最后,都提出
    发表于 09-24 14:13 2866次阅读

    立体智慧仓储解决方案.#云计算

    解决方案智能设备
    学习电子知识
    发布于 :2022年10月06日 19:45:47

    #硬声创作季 #FPGA FPGA-17-02 按键抖动现象介绍解决方案分析-1

    fpga解决方案
    水管工
    发布于 :2022年10月29日 02:13:54

    #硬声创作季 #FPGA FPGA-17-02 按键抖动现象介绍解决方案分析-2

    fpga解决方案
    水管工
    发布于 :2022年10月29日 02:14:15

    #硬声创作季 #FPGA FPGA-17-02 按键抖动现象介绍解决方案分析-3

    fpga解决方案
    水管工
    发布于 :2022年10月29日 02:14:41

    《高级FPGA设计》学习笔记:复位方案

    重复的错误也正是我们最不愿意遇到也最糟糕的错误。下面简单介绍三种复位方案:一、完全异步方案这种方案,确立和释放寄存器都是异步的,值得重申一下
    发表于 12-05 17:09

    电机CAE结构及振动噪声仿真解决方案(二)

    这一期中我们会对电机的静力学分析,疲劳寿命分析解决方案介绍。1 静力学分析由于工艺上的需要,电机转轴几何模型上有许多倒角等特征,可使用AN
    发表于 10-15 10:43

    电机CAE结构及振动噪声仿真解决方案

    电机 CAE 结构及振动噪声仿真解决方案:必要性分析及研究现状1.1电机结构仿真的必要性电机是指依据电磁感应定律实现电能转换或传递的一种电磁装置。它的主要作用是产生驱动转矩,作为用电器
    发表于 10-15 10:41

    净化芯方案—负离子灭菌器定时复位IC

    吧营造神器。负离子有良好的杀菌消毒作用,使破坏细菌病毒等微生物的分子蛋白结构,使其产生结构性改变或能量转移,从而使细菌、病毒等微生物死亡。定时复位IC—EN8F202:(www.enroo.com
    发表于 01-10 11:44

    计算机解决方案的逻辑分析基础

    计算机解决方案的逻辑分析基础
    发表于 07-29 13:37

    几种驱动解决方案介绍和比较

    专用芯片的主要参数是什么?几种驱动解决方案介绍和比较
    发表于 06-04 06:05

    优化电动汽车的结构性

    优化电动汽车的结构性能以提高效率和安全性迅速增长的全球电动汽车(EV)市场预计到2027年将达到8028亿美元。在电池和高压电子设备的驱动下,电动汽车的运行和维护成本往往低于传统汽车,几乎不会产生
    发表于 09-17 08:10

    测试交换结构性能的仿真信源实现

    提出了一种用于测试交换结构性能的仿真信源的实现方案,其内容包含两种形式的交换结构信源:一种是均衡业务下的具有地址突发的信源,用于验证交换结构所需的缓存大小;
    发表于 02-28 10:31 19次下载

    HCC推出故障安全 防止意外复位或断电的exFAT解决方案

    HCC推出故障安全,防止意外复位或断电的exFAT解决方案
    的头像 发表于 02-25 16:11 2179次阅读

    存储器结构性分道篇.zip

    存储器结构性分道篇
    发表于 01-13 09:07 1次下载