本文转自:
http://www.eetop.cn/blog/html/28/1561828-1865363.html
许多新的SoC设计必须集成很多功能并消耗非常低的功耗,即设计可能会有很多时钟域,电源域和复位域。例如,我们最近分析的一个设计具有接近20个电源域,超过200个时钟域和最多32个复位域。标准验证工具和方法没有提供可靠的方法来分析不同的域并全面验证其互操作性。因此,开发多域验证(MDV)以解决这一领域的挑战很有意义。
多域验证从UPF文件提取出电源域的信息,从时钟树提取出时钟域信息,以及从复位数提取出复位域。同样重要的是控制这些域的逻辑功能:电源控制信号,时钟门控信号和复位使能信号。对于每种域,都有三方面的信息如图所示:域结构信息,域控制逻辑和跨域信号。
如图所示,多域验证过程被垂直划分为3部分:域结构验证,域控制验证和域交叉验证。不是一次验证一个域,这种垂直相位(异相)方法是独特的。它允许用户先关注总图,例如,如果电源域spec是错的,或者没有很好地定义时钟树,那就不会有效地检查出跨电源域/时钟域信号的细节违规了。用户应该首先专注于优化UPF,时钟树和复位树。一个阶段完成后,再移动到后一阶段。
A. 域结构验证
并非一次一个地验证域的结构,多域验证同时提取、验证电源域,时钟域和复位域,它可以让我们理解域结构(时钟树和复位树)是如何被其它域影响的。
例如,如图所示,存在许多具有挑战性的情况:
- 在多电源域中的复位树--期望复位信号从一个always-on(始终开启)域产生,并且在其它电源域消耗。然而,如果一个复位信号从一个电源域产生,而扇出到另一个电源域是有潜在风险的。
- 在多电源域中的时钟树--类似于复位树,如果时钟信号从一个always-on(时钟开启)域产生,并且在其它电源域消耗,这是没有问题的。但如果一个时钟信号从一个电源域产生,而扇出到另一个电源域也是有风险的。
- 在多复位域中的时钟树--会有潜在的异步复位域交叉问题。此外,设计的一部分可以被复位,而另一部分不被复位,准确无误地复位改设计将变得困难。
还有一些在设计中常见的情况:
- 在多复位域中的一个电源线网 --电源线网覆盖多复位域是很正常的。
- 在多时钟域中的一个电源线网--电源线网覆盖多时钟域是很正常的。
- 在多时钟域中的复位树--复位树被用在多时钟域中是很正常的。但是,复位信号必须在使用之前同步到每个时钟域,复位信号被异步地断言,但是必须相对于目标时钟域被同步地移除。
结构验证的目的是确保电源网,时钟信号和复位信号正确分布到设计的不同部分。 在此过程中,域是清晰的,即域边界被画出,并且计算域的数量。 然后,对于设计中的每个设计元素(例如寄存器,存储器阵列和模块),我们将知道与其相关联的电源域,时钟域和复位域。
B. 域控制验证
由于电源开关,频率开关和时钟门控是低功率设计的常见做法,因此,重要的是验证域控制信号。从图5中,域控制信号包括电源开关,isolation和retention (都是UPF基础知识)控制信号;时钟选择,控制,门控信号;复位控制及门控信号。电源控制信号是由电源控制器产生。时钟控制信号可能有很多来源。对于动态电压和频率开关,时钟频率选择信号可以从电源控制器产生,对于DFT,扫描和功能时钟选择信号可以来自测试控制器。其它内部时钟决定于操作模式和软件进程。它们被配置寄存器定向或不定向地控制。在局部,驱动数据路径的时钟可以被使能信号关闭以减少功耗。在检查完所有这些控制逻辑扇出到时钟树之后,很有可能时钟由比时钟树本身更复杂的逻辑网络控制。
对于域控制信号,有两方面需要被验证:
- 域依赖 -- 确保控制信号是:
- 来自于一个always-on(时钟开启)电源域或在同一个电源域。
- 来自于一些稳定的寄存器或同一个同步时钟和复位域
2. 功能--正确地开启或关闭域。电源,时钟和复位信号必须在精确的序列之后被断言和去除。对应的控制信号,电源开关,时钟和复位门控逻辑必须在正确 的时间具有正确的值。
域控制逻辑,特别是时钟控制逻辑,可能非常复杂。不可能模拟所有可能的情况,因此,形式验证自然适合这种时钟树结构连接验证。
C. 域交叉验证
在域结构验证之后,我们将知道与每个设计元素(例如寄存器,存储器阵列和模块)相关联的电源,时钟和复位域。 域交叉分析将检查所有
数据相关元素。
域控制验证将验证设计元素的电源,时钟和复位域。 如果有任何类型(电源,时钟或复位域)的域交叉,可以执行传统的域交叉验证确保交叉正确实施。利用现有的同类域验证技术是非常有益的。CDC和其他域验证工具是成熟的,并具有全面的调试环境。一旦域交叉验证要求已经建立,它们可以在局部部署以验证模块之间的所有交叉。
总结
本文介绍了多域验证方法来在RTL级验证电源域,时钟域和复位域。通过一起表示和验证3种域,它能更直观地让人理解他们之间的相互作用,因此,在设计周期中,尽早地预见任何域问题。多域验证过程被垂直划分为3部分:域结构验证,域控制验证和域交叉验证。这种分而治之的方法使我们能够专注于多域验证问题的不同方面。虽然我们必须要为多域结构和控制验证开发新的算法,但我们可以利用已建立的同类工具来执行常见时钟域,电源域和复位域交叉验证。使用多域验证,所有域间问题现在都可以完全自信地进行验证。