目录
功能验证
功能验证(functional verification),是电子设计自动化中验证数字电路是否与预定规范功能相符的一个验证过程,通常所说的功能验证、功能仿真是指不考虑实际器件的延迟时间,只考虑逻辑功能的一个流程。功能验证的目标是达到尽可能高的测试覆盖率,被测试的内容要尽可能覆盖所有的语句、逻辑分支、条件、路径、触发、状态机的状态等,同时在某些阶段还必须包括对时序的检查。在较小型的电路设计中,设计人员可以利用硬件描述语言来建立测试平台(通常这是一个顶级模块),通过指定测试向量来检验被测模块在各种输入情况下,检验对应的输出是符合要求。但是,在更大型集成电路设计项目中,该过程会耗费设计人员较大的时间和精力。许多项目都采用计算机辅助工程工具来协助验证人员创建随机测试激励向量。其中,硬件验证语言在建立随机测试和功能覆盖方面具有显著的优势,它们通常提供了专门用来进行功能覆盖和产生可约束随机测试激励向量的数据结构。除了上面讲述的这种通过输入测试向量的方式,功能验证还可以通过形式等效性检查(形式验证)、断言等方式来进行,达到更高的功能覆盖率。.
查看 硬件验证语言和功能验证
硬件描述语言
在电子学中,硬件描述语言(hardware description language, HDL)是用来描述电子电路(特别是数字电路)功能、行为的语言,可以在寄存器传输级、行为级、逻辑门级等对数字电路系统进行描述。随着自动化逻辑综合工具的发展,硬件描述语言可以被这些工具识别,并自动转换到逻辑门级网表,使得硬件描述语言可以被用来进行电路系统设计,并能通过逻辑仿真的形式验证电路功能。设计完成后,可以使用逻辑综合工具生成低抽象级别(门级)的网表(即连线表)。 硬件描述语言在很多地方可能和传统的软件编程语言类似,但是最大的区别是,前者能够对于硬件电路的时序特性进行描述。硬件描述语言是构成电子设计自动化体系的重要部分。小到简单的触发器,大到复杂的超大规模集成电路(如微处理器),都可以利用硬件描述语言来描述。常见的硬件描述语言包括Verilog、VHDL等。.
系统芯片
系统芯片(System on Chip,縮寫:SoC)是一个将電腦或其他电子系统集成到单一芯片的集成电路。系统芯片可以处理数字信号、模拟信号、混合信号甚至更高频率的信号。系统芯片常常應用在嵌入式系统中。系统芯片的集成规模很大,一般达到几百万门到几千万门。 尽管微控制器通常只有不到100 kB的随机存取存储器,但是事实上它是一种简易的、功能弱化的单芯片系统,而“系统芯片”这个术语常被用来指功能更加强大的处理器,这些处理器可以运行Windows和Linux的某些版本。系统芯片更强的功能要求它具备外部存储芯片,例如有的系统芯片配备了闪存。系统芯片往往可以连接额外的外部设备。系统芯片对半导体器件的集成规模提出了更高的要求。为了更好地执行更复杂的任务,一些系统芯片采用了多个处理器核心。.
查看 硬件验证语言和系统芯片
高级验证
级验证(High-level verification, HLV),或称系统级验证,是指在高抽象级别(层次)对所设计的电路系统进行验证的任务。高级验证主要是检验高抽象级别(通常在寄存器传输级之上)的模型设计是否代表了实际的硬件电路。高级验证与高级综合的关系,正类似功能验证和逻辑综合的关系。 数字电子系统设计已经从低抽象级别,即逻辑门级的设计,发展到寄存器传输级的设计。高于寄存器传输级的抽象层次,通常被称为“高级”,或“系统级”、“行为算法级”。 在高级综合里,系统的行为、算法设计通常以C语言、C++和SystemC代码等来书写,通过高级综合,这些代码被转换到寄存器传输级,然后再通过逻辑综合转换到逻辑门级的网表。功能验证被用来确保寄存器传输级或逻辑门级的硬件表示在功能上与设计目标一致。由于逻辑综合工具不断发展,大多数功能验证都在寄存器传输级完成,而非逻辑门级。现在,逻辑综合工具已经足够可靠,因此人们不像以前那样重点关注从寄存器传输级描述到逻辑门级的转换过程的功能验证。 时至今日,高级综合仍然是一种新兴技术。目前,高级验证有两个重要的研究领域:.
查看 硬件验证语言和高级验证
電子設計自動化
电子设计自动化(Electronic design automation,縮寫:EDA)是指利用计算机辅助设计(CAD)软件,来完成超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计(包括布局、布线、版图、设计规则检查等)等流程的设计方式。.
集成电路设计
集成电路设计(Integrated circuit design, IC design),根据当前集成电路的集成规模,亦可称之为超大规模集成电路设计(VLSI design),是指以集成电路、超大规模集成电路为目标的设计流程。.
通用验证方法学
通用验证方法学(Universal Verification Methodology, UVM)是一个以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。它是第一个由电子设计自动化领域三巨头(Cadence、Synopsys和Mentor Graphics)联合支持的验证方法学,其最新版本为1.2版。.
OpenVera
OpenVera是一种硬件验证语言,它由新思科技研发和运营。该语言主要用于创建硬件系统的测试平台。OpenVera是作为IEEE 1800标准的SystemVerilog的一个基础部分,许多从事半导体集成电路设计、系统级设计、IP核设计以及电子设计自动化的人员都受益于此。.
SystemC
SystemC是一种基于C++语言的用于系统设计的计算机语言,是用C++编写的一组库和宏。它是为了提高电子系统设计效率而逐渐发展起来的产物。IEEE于2005年12月批准了IEEE1666-2005标准。 通常,系统由软件部分和硬件部分组成,系统的一部分功能由软件实现,而另一部分功能则由硬件实现。早期的系统比较简单,系统工程师将准备设计的系统划分为软件部分和硬件部分,分别由软件工程师和硬件工程师进行设计、仿真、实现和改进,最后再将软件部分和硬件部分结合起来形成系统。软件工程师使用C和C++等程序设计语言,因为这些语言专长于描述串行执行的程序,用来仿真软件部分;而硬件工程师则使用VHDL和Verilog等硬件描述语言,因为这些语言专长于描述并行运行的硬件,用来仿真硬件部分。但是,随着电子系统的不断发展,系统结构越来越复杂,系统元件也越来越多,这就要求系统工程师在先期划分软件和硬件时,就对整个系统性能有很好的了解和掌握,以便更好地划分软件和硬件,减小设计中不必要的失误所带来的损失和风险。SystemC也就由此孕育而生,因为它能够满足对软件和硬件协同仿真的需求。 SystemC的名称来自“系统”一词的英语System和“C/C++语言”中的C,以表示它是一种基于C/C++语言的系统设计语言。 许多科学研究团队和计算机辅助设计软件公司一同为SystemC的发展做出了贡献,1999年成立了开源SystemC的开发团队“Open SystemC Initiative(OSCI)”。 2011年11月10,IEEE通过了新SystemC 2011标准:IEEE1666-2011。.
SystemVerilog
在现代的集成电路(尤其是超大规模集成电路)的设计和验证流程中,SystemVerilog是一种由Verilog发展而来的硬件描述、硬件验证统一语言,前一部分基本上是2005年版Verilog的扩展,而后一部分功能验证特性则是一门面向对象程序设计语言。面向对象特性很好地弥补了传统Verilog在芯片验证领域的缺陷,改善了代码可重用性,同时可以让验证工程师在比寄存器传输级更高的抽象级别,以事务而非单个信号作为监测对象,这些都大大提高了验证平台搭建的效率。 SystemVerilog已经被采纳为电气电子工程师学会1800-2009标准,并获得了主流电子设计自动化工具供应商的支持。虽然没有哪一个仿真系统能够声称自己完全支持SystemVerilog语言参考手册(Language Reference Manual, LRM)里介绍的所有语言结构,要改善测试平台的互操作性相当困难,但是推进跨平台兼容性的研究开发工作已经在进行。若干种验证方法学相继出现,以预定义类的形式对测试平台模块进行标准化,如今最新的基于SystemVerilog的验证方法学为通用验证方法学。这一方法学主要包括开放源代码的类库以及支持可重用测试平台、开发验证IP核的预置格式。许多第三方提供商则开始推出基于SystemVerilog的验证IP核。.
Verilog
Verilog是一种用于描述、设计电子系统(特别是数字电路)的硬件描述语言,主要用於在集成电路设计,特别是超大规模集成电路的计算机辅助设计。Verilog是电气电子工程师学会(IEEE)的1364号标准。 Verilog能够在多种抽象级别對数字逻辑系统进行描述:既可以在晶体管级、逻辑门级进行描述,也可以在寄存器传输级对电路信号在寄存器之间的传输情况进行描述。除了对电路的逻辑功能进行描述,Verilog代码还能够被用于逻辑仿真、逻辑综合,其中后者可以把寄存器传输级的Verilog代码转换为逻辑门级的网表,从而方便在现场可编程逻辑门阵列上实现硬件电路,或者让硬件厂商制造具体的专用集成电路。设计人员还可以利用Verilog的扩展部分Verilog-AMS进行模拟电路和混合信号集成电路的设计。.
测试平台
测试平台(test bench),或称测试台,是用于验证软件设计正确性、可靠性的一种虚拟的环境。测试平台通常包含信号输入、数据处理、验证、输出几个部分。对于小型的数字电路设计,工程师可以使用硬件描述语言来搭建测试平台。如果遇到大型集成电路项目,由于所需的测试向量相当复杂,为了达到更高的语句、分支、条件、路径、触发、翻转覆盖率,很多情况需要使用更加先进的直接随机测试方法。硬件验证语言针对随机测试的建立和功能覆盖率的提高,则提供了专用的数据结构供工程师使用。.
查看 硬件验证语言和测试平台