硬件验证语言(英语:hardware verification language, 缩写为 HVL)是一种用硬件描述语言(HDL)编写、用于电子电路设计验证的编程语言。
简介硬件验证语言通常具有类似C++或Java这样高级语言的特点,同时又提供硬件描述语言那样的位运算功能。许多硬件验证语言能够生成带约束的随机激励,并提供了功能覆盖结构,来辅助设计人员进行复杂的硬件验证。
SystemVerilog、OpenVera和SystemC是最常用的硬件验证语言。其中,SystemVerilog更是将硬件描述语言与硬件验证语言合并到单一标准。1
硬件描述语言在电子学中,硬件描述语言(英语:hardware description language, HDL)是用来描述电子电路(特别是数字电路)功能、行为的语言,可以在寄存器传输级、行为级、逻辑门级等对数字电路系统进行描述。随着自动化逻辑综合工具的发展,硬件描述语言可以被这些工具识别,并自动转换到逻辑门级网表,使得硬件描述语言可以被用来进行电路系统设计,并能通过逻辑仿真的形式验证电路功能。设计完成后,可以使用逻辑综合工具生成低抽象级别(门级)的网表(即连线表)。
硬件描述语言在很多地方可能和传统的软件编程语言类似,但是最大的区别是,前者能够对于硬件电路的时序特性进行描述。硬件描述语言是构成电子设计自动化体系的重要部分。小到简单的触发器,大到复杂的超大规模集成电路(如微处理器),都可以利用硬件描述语言来描述。常见的硬件描述语言包括Verilog、VHDL等。1
SystemVerilog代的集成电路(尤其是超大规模集成电路)的设计和验证流程中,SystemVerilog是一种由Verilog发展而来的硬件描述、硬件验证统一语言,前一部分基本上是2005年版Verilog的扩展,而后一部分功能验证特性则是一门面向对象程序设计语言。面向对象特性很好地弥补了传统Verilog在芯片验证领域的缺陷,改善了代码可重用性,同时可以让验证工程师在比寄存器传输级更高的抽象级别,以事务而非单个信号作为监测对象,这些都大大提高了验证平台搭建的效率。
SystemVerilog已经被采纳为电气电子工程师学会1800-2009标准,并获得了主流电子设计自动化工具供应商的支持。虽然没有哪一个仿真系统能够声称自己完全支持SystemVerilog语言参考手册(Language Reference Manual, LRM)里介绍的所有语言结构,要改善测试平台的互操作性相当困难,但是推进跨平台兼容性的研究开发工作已经在进行。若干种验证方法学相继出现,以预定义类的形式对测试平台模块进行标准化,如今最新的基于SystemVerilog的验证方法学为通用验证方法学。这一方法学主要包括开放源代码的类库以及支持可重用测试平台、开发验证IP核的预置格式。许多第三方提供商则开始推出基于SystemVerilog的验证IP核。1
OpenVeraOpenVera是一种硬件验证语言,它由新思科技研发和运营。该语言主要用于创建硬件系统的测试平台。OpenVera是作为IEEE1800标准的SystemVerilog的一个基础部分,许多从事半导体集成电路设计、系统级设计、IP核设计以及电子设计自动化的人员都受益于此。2
SystemCSystemC是一种基于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。2
本词条内容贡献者为:
王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所