CDC和RDC验证

CDC和RDC验证方案

ALINT-PRO™具有ALDEC_CDC规则插件,专注于时钟和重置域跨越分析,以及在复杂的现代多时钟和多重置设计中亚稳态问题的处理。包括在RTL设计和功能验证阶段发现关键问题的规则,大大缩短了上市时间。

无论应用程序类型或实现技术如何,时钟域交叉(CDC)问题构成了大多数现代设计的一个复杂而广泛的验证问题。在大多数行业中,设计中独立的、相互作用的时钟及其相关错误的数量在不断增长。

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

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

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

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

ALINT-PRO配备了CDC和RDC观测器,旨在促进亚稳态问题的分析。它可以可视化异步时钟或在RTL原理图查看器中使用不同颜色的重置域,以及显示检测到的时钟和重置域元素的详细视图,相关的时钟和重置信号,组识别的域跨越,以及同步器,以帮助用户了解所发现的异步传输是否得到了适当的处理。这支持针对时钟和重置域分区的高级设计分析。

设计约束的支持

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

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

在没有这些约束的情况下,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-clean状态之前可能重新运行的验证次数。

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

CDC规则验证异步时钟域之间的交叉。交叉是根据组合逻辑、收敛或发散来验证的。它还检查,一个有效的同步器是存在于交叉。对于异步重置,将验证取消断言与适当的时钟同步。最后,对未发现的同步器进行组合或顺序再收敛检查,可能是在目标域的很深处。

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

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

整合的多模式CDC分析的一个关键区别在于,它只需要运行一个工具就可以产生组合的验证结果,该结果一次列出所有有效模式中的所有意外的CDC拓扑。无效的激活条件被巧妙地消除,因此只检查相关的模式组合。大量的有效模式无疑使解释CDC检查的结果变得复杂。然而,性能节省是显著的。

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

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

结构检查可以验证一个适当的同步器存在于交叉,然而,为了确保没有亚稳性错误,通信协议应该被验证。ALINT-PRO可以生成SystemVerilog、纯VHDL和使用PSL测试平台的VHDL,通过额外的检查增强RTL仿真。它包含以下元素:

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

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

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