硬件验证语言(英语:hardware verification language,
缩写为 HVL)是一种用
硬件描述语言(HDL)编写、用于
电子电路设计
验证的
编程语言。
硬件验证语言通常具有类似
C++或
Java这样
高级语言的特点,同时又提供硬件描述语言那样的位运算功能。许多硬件验证语言能够生成带约束的随机激励,并提供了功能覆盖结构,来辅助设计人员进行复杂的硬件验证。
SystemVerilog、OpenVera和SystemC是最常用的硬件验证语言。其中,SystemVerilog更是将硬件描述语言与硬件验证语言合并到单一标准。
在
电子学中,硬件描述语言(英语:hardware description language, HDL)是用来描述电子电路(特别是
数字电路)功能、行为的语言,可以在
寄存器传输级、行为级、
逻辑门级等对数字电路系统进行描述。随着自动化逻辑综合工具的发展,硬件描述语言可以被这些工具识别,并自动转换到逻辑门级网表,使得硬件描述语言可以被用来进行电路系统设计,并能通过
逻辑仿真的形式
验证电路功能。设计完成后,可以使用
逻辑综合工具生成低抽象级别(门级)的
网表(即连线表)。
硬件描述语言在很多地方可能和传统的
软件编程语言类似,但是最大的区别是,前者能够对于硬件电路的时序特性进行描述。硬件描述语言是构成
电子设计自动化体系的重要部分。小到简单的
触发器,大到复杂的
超大规模集成电路(如
微处理器),都可以利用硬件描述语言来描述。常见的硬件描述语言包括Verilog、VHDL等。
代的
集成电路(尤其是
超大规模集成电路)的设计和验证流程中,SystemVerilog是一种由
Verilog发展而来的硬件描述、
硬件验证统一语言,前一部分基本上是2005年版
Verilog的扩展,而后一部分
功能验证特性则是一门
面向对象程序设计语言。面向对象特性很好地弥补了传统Verilog在芯片验证领域的缺陷,改善了代码可重用性,同时可以让验证工程师在比
寄存器传输级更高的抽象级别,以
事务而非单个信号作为监测对象,这些都大大提高了验证平台搭建的效率。
SystemVerilog已经被采纳为
电气电子工程师学会1800-2009标准,并获得了主流
电子设计自动化工具供应商的支持。虽然没有哪一个仿真系统能够声称自己完全支持SystemVerilog语言参考手册(Language Reference Manual, LRM)里介绍的所有语言结构,要改善测试平台的互操作性相当困难,但是推进跨平台兼容性的研究开发工作已经在进行。若干种验证方法学相继出现,以预定义类的形式对测试平台模块进行标准化,如今最新的基于SystemVerilog的验证方法学为通用验证方法学。这一方法学主要包括
开放源代码的
类库以及支持可重用测试平台、开发验证
IP核的预置格式。许多第三方提供商则开始推出基于SystemVerilog的验证
IP核。
SystemC是一种基于
C++语言的用于
系统设计的
计算机语言,是用C++编写的一组
库和
宏。它是为了提高电子系统设计效率而逐渐发展起来的产物。IEEE于2005年12月批准了IEEE1666-2005标准。
通常,系统由
软件部分和
硬件部分组成,系统的一部分功能由软件实现,而另一部分功能则由硬件实现。早期的系统比较简单,
系统工程师将准备设计的系统划分为软件部分和硬件部分,分别由软件工程师和硬件工程师进行设计、
仿真、实现和改进,最后再将软件部分和硬件部分结合起来形成系统。
软件工程师使用C和C++等
程序设计语言,因为这些语言专长于描述串行执行的程序,用来仿真软件部分;而
硬件工程师则使用
VHDL和
Verilog等
硬件描述语言,因为这些语言专长于描述并行运行的硬件,用来仿真硬件部分。但是,随着电子系统的不断发展,系统结构越来越复杂,系统组件也越来越多,这就要求系统工程师在先期划分软件和硬件时,就对整个系统性能有很好的了解和掌握,以便更好地划分软件和硬件,减小设计中不必要的失误所带来的损失和风险。SystemC也就由此孕育而生,因为它能够满足对软件和硬件协同仿真的需求。
许多科学研究团队和
计算机辅助设计软件公司一同为SystemC的发展做出了贡献,1999年成立了
开源SystemC的开发团队“Open SystemC Initiative(OSCI)”。