多周期和错误路径的基础知识---凯利讯半导体

来源:互联网 发布:指纹识别算法 排名 编辑:程序博客网 时间:2024/05/16 19:12

  1引言

  RTL设计人员面临的重大挑战之一是预先确定完整的时间例外。这在复杂的设计中成为一个迭代过程,其中基于关键路径或时序报告的路径分析失败来识别额外的时间异常。这种方法留下了大量的可能不是真实的时序路径,但是这些路径从来没有被识别出来,因为它们可能不会出现在关键路径报告中。但是,综合和计时工具在不需要时将继续花费资源来优化这些路径。同时,它也会影响器件的面积和功耗。

  本文档的目的是提供虚假和多循环路径例外的例子,甚至有经验的设计师都很容易忽略这些例外,并通过对时序报告的迭代来识别。


  1.1错误的路径

  假路径是设计中的那些定时弧,其中在特定时间间隔内源寄存器的改变不会被目标寄存器捕获。假路径可以按以下设计拓扑进行分类。


  1.1.1静态虚假路径

  静态错误路径是那些设计中的定时弧,源寄存器的激励不会对目标寄存器产生任何影响或改变。即使源和目标触发器都在相同的时钟域上运行,这些拓扑中的时序路径也不能被任何输入向量所敏化。


  示例 - 1

  以下拓扑描述了静态错误路径的示例。这里D1.Q的变化将永远不会导致D4.D的任何变化。D4的触发值总是由D2的值决定的。因此,对于这个特定的电路D1-> D4可以被视为错误的路径。

  

  图 1:静态时序路径

  示例 - 2

  在一个系统中,定义一个控制位,如果该位置位,则进入DMA控制器的时钟将在低功耗(STOP)模式下保持使能状态​​,否则时钟将在STOP模式下被选通。

  

  图2:DMA时钟门控


  在上述电路中,当系统处于RUN模式时,时钟门控单元将始终保持使能状态​​,并且dma_en控制寄存器中的任何更改都不会影响时钟门控使能产生逻辑。在进入低功耗STOP模式之前,用户应该在RUN模式下写入/更改该控制寄存器。一旦系统进入停止模式,dma_en寄存器的预编程值将决定时钟门控单元的状态。单周期定时路径是由“stop_mode_reg - > CG_cell”生成的。路径“dma_en_reg - > CG_cell”是一个错误的路径。即使在触发器dma_en_reg-> CG cell之间存在非常小的组合延迟,这种拓扑中的时钟偏移和单元放置也可能导致时序问题。为计时工具提供正确的例外将有助于在第一次迭代中优化单元布局。


  实施例-3

  IO输出定时弧通常是关键的,并且是决定同步协议接口的最大波特率支持的限制因素。识别正确的REG-> OUT时序弧并通过将它们限制为假路径来隔离无效的REG-> OUT路径变得重要。通过定时和布局工具可以节省大量的迭代时间和精力,以满足同步接口的IO-Spec。

  通常情况下,在开始任何数据事务之前,需要正确配置协议模块。这些配置寄存器在任何数据事务中被认为是静态的。然而,从这些配置寄存器到输出焊盘的定时弧可能存在。这是前面的设计约束可以帮助减轻计时工具的任务以达到目标频率的另一个例子。

  在下面给出的拓扑结构中,配置寄存器(config1,config2和config3)应该在进行任何数据事务之前用特定的值进行编程。当数据传输已经启动时,有效定时弧将是移位寄存器 - > combo3-> IO缓冲区 - > PAD。然而,从配置1/2/3发起的时间弧终止于PAD可以很容易地通过设置错误的路径异常来禁用。

  

  图3:配置寄存器的I / O路径


  然而,上述例外需要适当审查,以避免任何发现的角落案件。例如:在半双工通信或存储器接口中,数据方向可以在运行中改变。因此可能需要满足“数据方向寄存器 - > PAD”的时间,路径不能被视为错误的路径。


  1.1.2假复位时间弧

  在设备启动期间,不需要设备的所有应用模块保持启用状态。因此,默认情况下,这些模块的时钟是门控的。在系统复位解除断言序列期间,复位对这些模块的解除在没有时钟的情况下发生。由于没有时钟,所以没有机会由于重置断言时序违规而导致亚稳态。因此,这些模块的异步复位恢复/解除断言路径可被视为错误路径。


  1.1.3异步错误路径(CDC路径)

  如果源寄存器的时钟域与目标寄存器的时钟域异步,则该路径被视为异步或时钟域交叉路径。在这些路径中不可能有任何时序关联,因为启动和捕获域的时钟沿之间没有定义的关系。这些路径可以被视为时序分析的错误路径。在这种情况下,设计人员有责任避免在捕获域寄存器时发生任何建立/保持冲突事件。本节讨论了一些常用的同步技术,这有助于避免异步时钟设计中发生亚稳态。设计师应该在合成之前为计时工具提供这些例外情况。有时可能会发生在SOC集成中使用同步时钟的异步设计。在这种情况下,这些异常特别有用,因为时序工具并不需要优化使用同步拓扑的时序路径。


  两个翻转同步器:

  当信号从一个时钟域跨越到另一个时钟域时,在目标域中使用信号之前需要先进行同步。目标寄存器可能会遇到建立/保持冲突,因为启动和捕获时钟域边缘之间没有关系。在同步器的第一个触发器中的转移问题被第二个触发器阻塞,假定在第二个触发器的下一个时钟沿到达之前第一个触发器将稳定下来。两个触发器发生亚稳态的概率直接取决于时钟源的频率。违规情况下的建立时间取决于特定技术库的触发特性,并且必须小于设计中支持的最快时钟。

  

  图4:两个翻转同步器


  请注意,亚稳态时间后,DB1信号没有必要稳定在一个较高的值。设计必须确保目标时钟的一个以上周期的DA信号的稳定性。如果设计不能保证稳定性,那么同样会导致信号在目标域中未注册的变化。

  通常使用两个触发器同步器来同步整个域的控制信号。


  多路复用同步器

  当设计者必须在任何时钟域上传输多位数据总线时,通常使用基于复用器同步器的设计拓扑结构。在这种拓扑结构中,数据总线的时钟域交叉由多路复用选择信号控制,当多路输入的输入数据变为有效时,该选择信号被使能。这确保了由于数据输入的改变,目标触发器将永远不会是亚稳定的。

  设计人员必须确保输入数据在多路复用器启用其输入路径时应保持稳定,只有在多路选择器选择反馈路径时才应该改变。

  

  图 6:Mux同步器


  FIFO

  通常使用FIFO来安全地将数据从一个时钟域传递到另一个异步时钟域。使用FIFO将数据从一个时钟域传递到另一个时钟域需要多个异步时钟设计技术。

  

  图7:异步Fifo


  写指针指向数据写入的下一个存储位置。读指针指向要读取的当前FIFO位置。写指针值随写时钟改变,读指针值随读时钟改变,但是两个指针跨越时钟域以确定fifo满/空逻辑。因此,在使用FIFO满/空逻辑之前,在目标时钟域中同步它们非常重要。在跨越多位信号的时钟域之前,灰度编码是优选的。


  握手

  将数据从一个时钟域发送到另一个时钟域的一种常用方法是使用手摇协议,其中发送方发送带有请求的数据并且接收方通过发送确认来确认数据。在目标域状态机内部使用之前,请求和确认信号都在目标时钟域中同步。

  

  图8:握手方案


  1.1.4伪异步伪路径

  伪异步错误路径是源寄存器和目标寄存器都是由同一个时钟源或同一个时钟源产生的时钟同步的,但它们的设计方式使得符合时序规范是不可能的,而且可以忽略。源寄存器和目标寄存器之间的时钟和数据偏移的差异使得几乎不可能满足时序。在这种情况下,设计人员需要确保这些路径不应有严格的时间要求。

  

  图9:伪异步假路径


  在上面的设计中,PLL时钟用于与其他片上/片外时钟源一起生成system_clk。尽管system_clk是从PLL派生的,但由于功能和测试时钟多路复用器,后分频器和时钟门控单元在时钟路径中沿着线路存在,在PLL输出和系统时钟之间存在非常罕见的路径。

  在PLL输出上工作的电路可以与系统时钟中存在的逻辑进行通信。由于系统时钟源于PLL,所以两个时钟都被同步处理。工具将尽量满足相同的时间。然而,巨大的不寻常的时钟路径有时会成为定时工具遇到的噩梦。这种伪异步路径可以视为假路径。然而,处理错误的路径不能防止“capture_intc_reg”变得亚稳定,因为没有时间保证可能导致任何功能故障。

  在上述设计中,已经放置了两个同步器来阻止亚稳态传播到整个系统。现在,简单的“D1_reg-> Sync1_reg”路径可以被视为错误的路径。

  注意:在上面的电路中,设计人员应该确保这个延迟,因为双触发器同步器不会在设计中引起任何协议或功能问题。

阅读全文
0 0
原创粉丝点击