本文首发于微信公众号“芯片学堂”,作者JKZHAN
SystemVerilog,缩写SV,是一种硬件描述和硬件验证语言,可用于电子系统的建模、设计、仿真、测试和实现。也就是说,它不仅具备硬件设计的能力,而且有强大的特性来支持硬件验证。SV是目前应用最为广泛的硬件验证语言,结合验证方法学,能够为系统级芯片验证提供有力的支撑。
1. 前身
SystemVerilog从出生到现在,也就最近二十年的事,说长不长,说短不短。
1985年,Gateway设计自动化公司(现在是Cadence的一部分)为了跟上硬件设计和验证复杂度的进步,引入Verilog作为一种在当时更为先进的硬件描述语言。在此之前,Brunel大学为英国国防部开发HILO-2语言成功地合并了门级和RTL级抽象,其语法结构和RTL抽象风格成为了Verilog语言的雏形。Verilog语言在并发处理方面又借鉴了一种叫Occam的并行处理语言,该语言原先是Inmos公司针对并行处理器编程而开发的。此后,Synopsys公司和Cadence公司在Verilog行为级描述编译、应用领域推广和标准的制定上做出了重要贡献,才确保了Verilog在硬件设计领域中的霸主地位。
Verilog的发展听起来似乎一帆风顺,其实不然。在Verilog推出后的十年时间里,语言的特性和抽象层级几乎没有发生变化。这在当时已经难以满足高复杂度的硬件设计和验证,工程师们需要更高的抽象级别来帮助他们完成设计和验证工作。在90年代初,工程师们开始使用C/C++这种高级编程语言来搭建验证环境,然后使用Verilog系统的编程接口完成设计和验证环境的连接。实际上这种借助C/C++来帮助验证的方式到现在还在使用。在这样的背景下,衍生出了一些具备高级抽象特性的编程语言,比如一些老工程师还使用过的Vera和Specman。Vera是System Science公司开发的,它后来被Synopsys收购了。而Specman是InSpec公司基于National Semiconductor的技术开发的。
2. 雏形
这些新的验证语言包含了支撑复杂验证的必要概念,但却带来了新的问题:碎片化,即整套环境看起来就没那么“单纯”了。在1998年,开发Verilog和HILO-2的元老们组建了Co-Design Automation公司并开发了Superlog。他们的目的很直接,就是要整合这些必要的验证特性到Verilog语言当中去,形成一种硬件设计和验证都统一的语言。2000年的时候,OVI(Open Verilog International)和VHDL International两个组织合并,诞生了Accellera,这个组织后面大伙多多少少会接触到。该组织的任务在于开发和确定新的行业标准,并促进新方法的采用。2001年六月,Co-Design向Accellera贡献了Superlog的子集,Verplex公司则提供了OVL断言库,同时Accellera成立了HDL+技术委员会来管理这些新的技术,它们都在为SV的诞生奠定基础。
在这之后的一段时间里,HDL+技术委员会致力于新一代硬件描述语言标准的制定以及断言等新技术整合。他们会定期召开表决会议,逐渐完善LRM(Language Reference Manual)。
3. 诞生
起初只是把用于扩展Verilog的这一部分LRM叫做SystemVerilog 3.0。在2002年6月,Accellera将其确定为标准。与此同时,Synopsys宣布为SV的发展提供一些新的技术,这些技术非常关键,包括了基于Vera的TestBench构造方法、OpenVera断言技术、与C/C++联合仿真的DirectC仿真接口,以及用来收集和衡量覆盖率的应用程序接口。集合了这么多新技术,终于有内味了,HDL+委员会在接下来的一年里将它们作为SystemVerilog 3.1发布。
随着SystemVerilog标准的发布,HDL+委员会在组织结构上也做出了调整,主要为了分管错误修订和澄清、新技术的审查和整合、新标准制定等等事项。他们为SV的发展做出了重要的贡献。从那以后,SystemVerilog的发展蒸蒸日上。在2005年,SystemVerilog 3.1a正式成为IEEE标准;2009年,SV标准与Verilog标准合并,即IEEE Standard 1800-2009;在之后的2012年和2017年,都分别对旧版本做了修正和补充。
4. 未来
在芯片验证工作中,编程语言只是工程师们手上的工具,如何运用好这个工具来达到验证目的才是关键。随着摩尔定律的演进,芯片的设计和验证复杂度今非昔比。在当下依然有很多小伙伴在尝试使用高编程语言来辅助验证工作,相信在不久的将来,更高的需求会带来不一样的验证局面。
参考文献
[1] Rich, D. I. . "The evolution of systemverilog." IEEE Design & Test of Computers 20.4(2003):82-84.
[2] Wilson Research Group and Mentor, A Siemens Business, 2018 Functional Verification Study.