CDC和RDC验证

CDC和RDC验证方案

ALINT-PRO™ 以ALDEC_CDC rule插件为特色,该插件侧重于时钟和重置域交叉分析,以及复杂、现代多时钟和多重置设计中的亚稳态问题处理。包含的规则揭示了RTL设计和功能验证阶段的关键问题,大大缩短了上市时间。

对于大多数现代设计而言,无论应用类型或实现技术如何,时钟域交叉(CDC)问题都是一个复杂且广泛传播的验证问题。在大多数行业中,设计中独立交互时钟及其相关错误的数量不断增加。

重设域交叉(RDC)问题代表了一类相对较新的错误,这对于具有动态可切换部件的复杂重设策略的设计来说是典型的,因此,它们要求在设计的某些区域内有更频繁的重设序列。根本原因是具有不同不相关异步复位信号的顺序元件之间的数据传输不同步,即使它们由相同的时钟控制。

根据经验,CDC bug发生的概率比RDC bug高,因为RDC相关的亚稳性只能发生在重置事件期间,而CDC相关的亚稳性可能在任何时间点发生。尽管如此,清理这两类域交叉问题是非常重要的,而且这两类问题的验证方法有很多共同点。

跨时钟域同步,跨时钟域fifo

CDC/RDC验证策略由三个关键要素组成:静态结构验证、设计约束设置和动态功能验证。静态检查以linting的形式实施,并在ALINT-PRO中执行,而动态验证则基于与Riviera PRO的集成™, 有源HDL™, 或ModelSim®通过自动生成的SystemVerilog或VHDL测试台。该测试台可与现有设计无缝集成,并可在RTL模拟期间揭示亚稳态触发的问题。

ALINT-PRO配备CDC和RDC查看器,旨在促进亚稳态问题的分析。它可以在RTL原理图查看器中以不同颜色显示异步时钟或复位域,并显示检测到的时钟和复位域元素、相关时钟和复位信号、组识别域交叉点的详细视图,和同步器,帮助用户了解发现的异步传输是否得到了正确处理。这样就可以对时钟和复位域分区进行高级设计分析。

设计约束支持

跨时钟域同步,跨时钟域fifo

设计约束支持是适当亚稳态验证的基本要素。ALINT-PRO™ 可以读取SDC文件进行设计配置,并检索与衣料相关的信息。这包括:时钟声明和它们之间的关系、输入和输出端口与时钟的相关性、异步和物理/逻辑上互斥的时钟组、错误和多周期路径、案例分析的设置等。

在没有这些限制的情况下,ALINT-PRO尝试检测时钟的结构、重置网络、I/O延迟、时钟组和同步电路,所有这些都仅基于网络列表拓扑和预定义的电路模式自动进行。该工具可以生成SDC文件的初稿,用于后续设计阶段,如时序驱动逻辑合成和静态时序分析。生成的SDC草案包含时钟声明,包括主时钟和生成时钟、异步时钟组,以及顶级端口相对于相应读/写时钟的I/O延迟说明。无法从RTL中提取精确的时钟频率和延迟值,因此使用默认值,在后续设计工具中使用之前,应在稍后进行调整。基于结构验证结果,ALINT-PRO还可以为一些最具挑战性的SDC约束生成模板,这些约束声明时间异常,并为供应商特定地点和路线以及静态时间分析工具的使用提供额外提示。

允许混合部分指定的SDC输入和自动检测。这两种方法相辅相成,SDC通常可用于将自动检测引导到正确的方向,这在某些高级情况下很难避免,尤其是在具有复杂自定义时钟选通、多路复用和扫描启用电路的ASIC设计中。

ALINT-PRO为设计约束提供了自定义扩展:Aldec设计约束(ADC)。这些扩展有助于捕获设计元素的高层意图,这些元素无法通过通常支持的SDC语法(如重置语义)来表达。因此,ADC可以看作是广泛分布的SDC的超集。生成ADC扩展,例如基于纯拓扑的主控和生成的重置,类似于提供给SDC处理流。

这些扩展的ADC约束分为两组:

  • 块级设计约束-用于描述不能直接合成的模块:FPGA供应商原语、行为模型或加密ip。还可以描述自定义同步器、时钟和重置生成单元,以及特定的ram和fifo,以验证它们在设计中的正确使用。
  • 芯片级设计约束-用于描述重置网络,准静态寄存器,CDC和RDC豁免,以及从网络列表,时钟/重置,以及CDC和RDC模型中检索附加信息。

ALINT-PRO为最相关的Xilinx、Intel (Altera)、Microsemi和Lattice FPGA库提供预先打包的最新精确计时注释(块级约束),包括相对于时钟插脚的输入和输出延迟,以及具有依赖于特定泛型值的计时行为的多模式原语。这大大减少了CDC/RDC误报的数量,并揭示了以前不可见的时钟和重置域交叉路径。

对于实例化复杂的多时钟ip块(例如,加密的核心)和其他类型的黑盒的设计来说,编写自定义块级约束是必须的。用户需要明确地声明时钟和异步控制引脚,并表示非控制I/O引脚和假设的时钟之间的关系。由于没有与黑盒相关联的清晰的时间抽象,ALINT-PRO对块内可能的时钟域跨越做出悲观的假设,并可能生成许多错误的积极消息。块级设计约束还可以用于使用分层方法提高CDC分析的性能。如果一个大型设计块已经针对内部CDC问题进行了验证,那么用黑箱和块级设计约束模型替换它是有意义的,因为与验证块相关的新的CDC违规可能只出现在其I/O边界处。

静态验证

跨时钟域同步,跨时钟域fifoALINT-PRO具有一组规则(ALDEC_CDC规则插件),可以对其进行静态验证。这些规则包括两部分:约束规则(时钟、重置和I/O延迟分析)和CDC/RDC规则(同步器的结构分析)。可以使用基于阶段的CDC流来促进以建议的预定义顺序运行规则,从而最大限度地减少验证重新运行的潜在次数,直到设计达到CDC清洁状态。

时钟和重置网络验证在CDC检查之前执行,以确保正确提取时钟域。

CDC规则验证异步时钟域之间的交叉。交叉验证是否具有组合逻辑、收敛或发散。还应检查道口是否存在有效的同步器。对于异步重置,验证反断言与正确的时钟同步。最后,根据组合或顺序重新收敛检查未覆盖的同步器,可能在目标域中非常深入。

RDC规则验证独立重置域之间的交叉,寻找RDC特定的同步模式。对来自不同域的重置进行分析。对于同一交叉,可能存在多种不同的复位信号组合,从而导致路径异步,从而导致亚稳态。

必须特别注意分析具有多种时钟操作模式的设计,这些模式可以选择静态的,也可以选择动态的,这极大地复杂化了CDC验证。ALINT-PRO能够以统一的多模式方式支持模态CDC分析,或者根据具体情况单独支持。

整合多模式CDC分析的一个关键区别在于,只需运行一个工具即可生成组合验证结果,该结果同时列出所有有效模式中所有意外的CDC拓扑。无效激活条件被巧妙地消除,因此仅检查相关模式组合。大量的有效模式无疑会使CDC检查结果的解释复杂化。但是,性能节约是非常显著的。

或者,可以使用匹配的“set\u case\u analysis”约束单独分析每个单独的操作模式,这基本上消除了分析期间的非活动路径。尽管这种类型的验证结果更容易理解,但每个模式都需要多次运行,如果设计本身或相关时序约束发生任何修正,则必须从头开始为每个模式重新运行验证。

动态验证跨时钟域同步,跨时钟域fifo

结构检查可以验证交叉口中是否存在适当的同步器,但是为了确保没有亚稳态错误,应验证通信协议。ALINT-PRO可以使用PSL测试台生成SystemVerilog、纯VHDL和VHDL,以通过附加检查增强RTL模拟。它包含以下元素:

  • 亚稳态仿真-行为的SystemVerilog或VHDL代码,它在异步时钟域之间的交叉插入随机延迟。这使得在RTL模拟过程中可以揭示诸如漏脉冲或数据不一致等问题。
  • 断言——为同步跨越生成断言,以确保同步器的正确使用。这包括检查数据稳定性和正确捕获通过时钟域边界发送的数据。
  • 覆盖率–允许验证用户的测试台,以触发同步交叉上的数据传输,并检查由于亚稳态仿真而插入的随机延迟是否在模拟过程中实际发生。

生成的测试平台不包含刺激,没有设计的原始测试平台就不能用于模拟。

问我们一个问题
x
问我们一个问题
x
验证码图片 重新加载验证码
输入的数据不正确。
谢谢你!你的问题已经提交。请允许1-3个工作日的人回答你的问题。
发生内部错误。你的问题没有提交。请联系我们使用反馈表
我们使用cookies来确保为您提供最佳的用户体验,并为您提供我们认为与您相关的内容。如果您继续使用我们的网站,您同意我们使用cookie。有关Cookie和其他网站信息使用的详细概述,请参阅隐私政策
Baidu