形式等价检查过程是电子设计自动化(EDA)的一部分,通常在数字集成电路的开发过程中使用,以形式化证明电路设计的两种表示表现出完全相同的行为。
一般来说,功能等价有很多种可能的定义,包括不同抽象层次和不同时序细节粒度之间的比较。
数字芯片的寄存器传输级别(RTL)行为通常用硬件描述语言来描述,如Verilog或VHDL。该描述是黄金参考模型,详细描述了在哪个时钟周期内将执行哪些操作以及通过哪些硬件执行哪些操作。一旦逻辑设计者通过模拟和其他验证方法验证了寄存器传输描述,该设计通常被逻辑合成工具转换成网表。等价不能与功能正确性混淆,功能正确性必须通过功能验证来确定。
初始网表通常会经历一些转换,如优化、增加测试设计结构等。然后将其用作将逻辑元素放置到物理布局中的基础。当代物理设计软件偶尔也会对网表进行重大修改(例如用具有更高或更低驱动强度/或面积的等效相似元素替换逻辑元素)。在非常复杂的多步骤过程的每个步骤中,必须保持原始代码描述的原始功能和行为。当最终由数字芯片制成并下线时,许多不同的电子设计自动化程序和一些可能的手工编辑将改变网表。
理论上,逻辑合成工具保证第一个网表在逻辑上等同于RTL源代码。在这个过程中后来对网表进行更改的所有程序,理论上也要确保这些更改在逻辑上等同于以前的版本。
实际上,程序会有缺陷,做出RTL到最终磁带输出网表的所有步骤都没有错误地执行的假设将是一个重大风险。此外,在现实生活中,设计师通常会对网表进行手动更改,通常称为工程变更单(Engineering Change Orders,简称ECo),从而引入一个主要的额外错误因素。因此,不要盲目地假设没有出错,需要一个验证步骤来检查最终版本的网表与设计的原始描述(黄金参考模型)的逻辑等价性。
历史上,检查等价性的一种方法是使用最终的网表重新模拟为验证RTL的正确性而开发的测试用例。这个过程称为门级逻辑模拟。然而,这方面的问题是检查的质量只和测试用例的质量一样好。此外,众所周知,门级模拟执行缓慢是一个主要问题,因为数字设计的规模继续呈指数级增长。
解决这个问题的另一种方法是形式化证明RTL码和由它合成的网表在所有(相关)情况下具有完全相同的行为。这个过程被称为形式等价检查,是一个在更广泛的形式验证领域中研究的问题。
可以在设计的任意两个表示之间执行形式等价检查:RTL <>网表、网表< >网表或RTL <> RTL,尽管后者与前两者相比很少见。通常,形式等价性检查工具也将非常精确地指示两种表示之间存在差异的点。
等价性检查程序中有两种用于布尔推理的基本技术:
EDA逻辑等效性检查(LEC)领域的主要产品有:
暂无