1.1 Verilog和SystemVerilog的区别

本节内容摘自《使用SystemVerilog进行RTL建模——基于SystemVerilog的ASIC与FPGA设计》

Verilog 始于 20 世纪 80 年代初,是 Gateway Design Automation 公司为其数字仿真器开发的硬件建模语言。Verilog HDL 在 1989 年开放给公众,并于1995 年由 IEEE 组织进行标准化,晋升为国际标准,此时的 Verilog 称为 IEEE Std 1364-1995™(通常称为“Verilog-95”)。2001 年,IEEE 将 Verilog 标准更新为 1364-2001™ 标准,称为“Verilog-2001”。Verilog 名称下的最后一个官方版本是 IEEE Std 1364-2005™。同年,IEEE 发布了一系列具有增强功能的 Verilog HDL。这些增强功能最初以不同的标准编号和名称记录,即 IEEE Std 1800-2005™ SystemVerilog 标 准。2009 年,IEEE 终止了 IEEE-1364 标准,并将 Verilog-2005 合并到 SystemVerilog 标准中,标准编号为 IEEE Std 1800-2009™ 标准。2012 年,IEEE 又增加了额外的设计和验证增强功能,作为 IEEE Std 1800-2012™ 标准,称为 SystemVerilog-2012。在撰写本书之际, IEEE 接近完成 IEEE Std 1800-2017™ 标准,又称为 SystemVerilog-2017。此版本仅修正了 2012 年版本标准中的错误,并对语言语法和语义规则进行了 澄清。

1.1.1  原始Verilog
20 世纪 80 年代初,Verilog 是一家名为 Gateway Design Automation 的公司的专有硬件描述语言(HDL)。最初的 Verilog HDL 的主要作者是 PhilMoorby。随着数字仿真变得越来越流行,几家电子设计自动化(EDA)公司都提供各自的数字仿真器,但当时没有标准的硬件描述语言可供这些仿真器使用。相反,每个仿真器公司提供了一种特定于该仿真器的专有建模语言。GatewayDesign Automation 也不例外,仿真器产品被命名为“Verilog-XL”,其附带的建模语言被称为“Verilog”

Verilog-XL 仿真器和 Verilog HDL 在 20 世纪 80年代后半期成为数字设计的主流仿真器和语言。促成这种流行的因素包括以下几个方面:

(1)Verilog-XL 仿真器比大多数同时期的仿真器速度更快,设计容量更大,使得使用它的公司能够更高效地设计更大、更复杂的数字集成电路。

(2)20 世纪 80 年代后半期,许多电子设计公司正在从定制集成电路转向专用集成电路(ASIC)。Gateway Design Automation 与主要的 ASIC 供应商紧密合作,Verilog-XL 作为标准参考仿真器,成为确保时序准确的关键。ASIC供应商的这一偏好使得 Verilog 成为参与 ASIC 设计的公司的首选语言。

(3)20 世纪 70 年代和 80 年代早期,主要的数字仿真器通常使用两种专有语言:一种是用于数字逻辑建模的门级语言,另一种是用于激励输入和响应检查的专用语言。Gateway Design Automation 摒弃了这一传统,将门级建模、抽象功能建模、激励和响应检查整合到一种称为 Verilog 的单一语言中。

(4)许多公司采用 Verilog 语言进行 ASIC 设计是因为它能够将抽象的 Verilog 模型综合为门级模型。20 世纪 80 年代后半期,Synopsys Inc 与Gateway Design Automation 达成协议,将 Verilog 语言与 Synopsys Design Compiler (DC) 数字综合工具进行绑定。这种绑定使用户能够同时进行 Verilog的仿真和综合,在当时相较于其他所有专有数字建模语言具有巨大的优势。

1.1.2  开放Verilog和VHDL
Verilog 语言的快速增长和普及在 20 世纪 90 年代初突然放缓。电气和电子工程师协会(IEEE)发布了 VHDL 语言,作为第一个行业标准的非专有硬件描述语言。与 Verilog 类似,VHDL 也提供了一种集成的数字建模和验证语言,并得到了 ASIC 供应商的支持(最初是在 VHDL 设计流程中使用经过认证的 Verilog ASIC 库)。随着 VHDL 仿真器和综合编译器的出现,许多设计公司开始回避使用专有语言,这其中也包括 Verilog。还有一些其他因素,例如美国国防部(DoD)要求使用 VHDL 作为国防部设计的文档语言,导致用户从 Verilog 向 VHDL 转变(其实美国国防部并没有要求设计工作必须使用VHDL,只要求最终文档必须使用 VHDL)。

Gateway Design Automation 计划将 Verilog 发布到公共领域,试图阻止这种远离专有 HDL 的做法。完成该计划的第一步就是将 Verilog 语言文档与 Verilog-XL 仿真器产品文档分开。在这项工作进行期间,Gateway Design Automation 被 Cadence Design Systems 收 购。Cadence 完成了这项工 作,Verilog 于 1991 年正式成为公共领域语言。一个名为 Open Verilog International (OVI) 的非营利组织成立,以控制开源 Verilog 语言并促进其使用。将 Verilog 发布到公共领域有效地遏制了从 Verilog 转向 VHDL 的趋势。在接下来的二十年里,这两种 HDL 共存,在全球电子设计行业中有着相近的地位。然而,2005 年 SystemVerilog 的出现打破了这种平衡关系,SystemVerilog 以其新名称再次成为数字设计和验证中使用的更主流的硬件描述语言。

1.1.3  IEEE Verilog-95和Verilog-2001
IEEE 于 1993 年接管了开源的 Verilog 语言,并在两年后发布了官方的IEEE Verilog HDL 标准,即 IEEE 1364-1995,昵称为“Verilog-95”。五年后, IEEE 发布了 1364-2001,又称为“Verilog-2001”,并对数字设计的建模和验证功能进行了多项增强。

图 1.1 显示了 Verilog-95 中的主要语言特性,以及在 Verilog-2001 中添加的主要新特性。请注意,此图并没有完全展示所有的 Verilog 语言特性。它的目的是展示 Verilog-2001 相较于原始 Verilog 语言,主要添加的新特性。

1.1.4  SystemVerilog对Verilog 的扩展——一个独立的标准
1980 年到 2001 年,典型数字集成电路的规模和复杂性发生了翻天覆地的变化,当时 Verilog 和 VHDL 语言还都是第一次出现。即使在 Verilog-2001 中添加新的特性,对这些大型设计的建模,以及验证这些复杂设计,也变得越来越困难。

为了解决 Verilog-2001 语言的局限性,Accellera 开始定义一套实质性的Verilog 语言新特性。这些扩展被概括为两个主要类别:

(1)    满足更高效、更准确地建模数字逻辑功能的需求。
(2)    编写高效、无竞争的验证代码,以适应大型且复杂的设计的需求。

定义下一代 Verilog 的工作最初是在 IEEE 之外进行的,由一个名为Accellera(现为 Accellera Systems Initiative)的独立非营利组织完成。 Accellera 由开发电子设计自动化软件工具的公司和使用这些软件工具的公司代表组成。Accellera 成立于 20 世纪 90 年代中期,由 Verilog 和 VHDL 用户组合并而成。后来,其他 EDA 小组也并入了 Accellera,例如 SystemC Initiative。 Accellera 负责今天许多 EDA 工程标准的初步开发工作。许多 Accellera 标准中的内容最终都成为 IEEE 标准的一部分。

2002 年末,Accellera 发布了包含这些主要扩展的第一个版本,这些扩展同时添加到了 IEEE Verilog-2001 语言中。在 Verilog-2001 的扩展开发过程中,这些新语言特性起初被称为“Verilog ++”,但在最后一刻决定将这些扩展发布为“SystemVerilog 3.0”。选择 3.0 是为了表明,当这些扩展与 Verilog 结合时,它将是 Verilog 语言的第三代(Verilog-95 是第一代,Verilog-2001 是第二代)。 Accellera 继续定义对Verilog 的更多扩展,并在 2003 年发布了 SystemVerilog 3.1标准。

需要注意的是,Accellera SystemVerilog 3.1 文档并不是一个完整的、独立的语言,它是 IEEE 1364-2001 Verilog 语言的一组扩展。Accellera 最初的意图是 IEEE 随后将这些扩展添加到 IEEE 1364 Verilog 标准的下一个版本中,添加的目标版本是 1364-2005,昵称为 Verilog-2005。然而,由于多种原因, IEEE Verilog 标准委员会决定不立即将这些扩展合并到实际的 Verilog 1364 标准中。相反,IEEE 为这些扩展分配了一个新的标准编号。在 2005 年,IEEE发布了 1364-2005 Verilog 标准,同时发布了 1800-2005 SystemVerilog 作为对Verilog 标准的扩展。

图 1.2 显示了 SystemVerilog 相较于 Verilog-2001 添加到的主要特性。该图还显示有 4 个特性被纳入了 Verilog 1364-2005 文档,而不是 SystemVerilog 1800-2005 标准。图 1.2 没有区分 2005 年、2009 年、2012 年和 2017 年版本的 SystemVerilog。SystemVerilog 对传统 Verilog 添加的大多数新功能是在SystemVerilog-2005 版本中实现的。在 2009 年和 2012 年版本中仅添加了一小部分额外功能,而在 2017 年版本中没有新增功能。

1.1.5  SystemVerilog替代了Verilog
在发布这两个独立标准后,IEEE 开始着手合并这两个标准,斯图尔特·萨瑟兰(本书作者)负责编辑工作以合并这两份大型文档。除了合并这两个标准外,IEEE 还定义了一些额外的SystemVerilog 特性。合并后的 Verilog 和SystemVerilog 标准被发布为 IEEE1800-2009 SystemVerilog 标准。当时, IEEE 终止了旧的 Verilog-1364 标准,正式更名为“SystemVerilog”。

硬件设计的复杂性,以及验证过程的持续演变,使得 IEEE 也在不断发展 SystemVerilog 标准以跟上步伐。2012 年,IEEE 发布了 1800-2012 SystemVerilog 标准。在本书撰写之际,IEEE 正在研究 1800-2017 版本的SystemVerilog。SystemVerilog-2017 版本主要对 SystemVerilog 标准进行了修正,并未向 2012 标准添加任何新语言特性。

本书基于 2012/2017 版本的 SystemVerilog。

IEEE 在 2005 年决定发布两个独立标准:一个包含传统 Verilog 语言(1364-2005),另一个仅包含对 Verilog 的扩展,称为 SystemVerilog(1800-2005),这让工程师感到困惑。一个常见的误解是,Verilog 是一种硬件建模语言,而 SystemVerilog 是一种验证语言。这个理解是不对的!最初的 Verilog 语言始终是一种集成了电路建模和电路验证的语言。SystemVerilog 在实质上扩展了原始 Verilog HDL 的建模和验证的能力。

SystemVerilog 既是一种数字建模语言,也是一种数字验证语言。

数字仿真的早期先驱之一Simon Davidmann撰写了关于Verilog和 SystemVerilog 起源的详细历史,可以在《System Verilog 硬件设计及建模》一书的附录中找到。

本书的重点是 SystemVerilog 的设计方面,作为本书的额外内容,推荐读者阅读《SystemVerilog 验证:测试平台编写指南(原书第三版)》,以了解该语言在验证方面的应用。

《使用SystemVerilog进行RTL建模——基于SystemVerilog的ASIC与FPGA设计》购买链接如下:https://u.jd.com/greXgQq

SystemVerilog Verification(SV)是一种硬件验证语言,它结合了Verilog、VHDLC等语言的特点,特别适用于验证硬件设计的正确性。SystemVerilog Verification(SV)是UVM 1.1的基础,UVM是一种验证方法学,为SV验证提供了框架结构,以加快简化验证过程。 《SystemVerilog Verification UVM 1.1 Student Guide》是一本面向学生的指南,旨在帮助学生学习理解如何使用SystemVerilogUVM进行硬件验证。这本指南提供了关于SV验证UVM方法学的详细介绍,以及在学习过程中应注意的关键概念技术。 指南首先介绍了SystemVerilog的基础知识,例如数据类型、运算符控制结构等。接下来,它详细介绍了SV中的verification(验证)概念技术,如assertion(断言)、functional coverage(功能覆盖)、constrained random(约束随机)transaction-level modeling(事务级建模)等。 随后,指南重点介绍了UVM的基本概念架构。UVM提供了一套基于类的验证框架,使开发人员能够重用代码验证环境。指南详细介绍了UVM中的各种重要组件,如testbench(测试台)、sequence(序列)driver(驱动器)等,并演示了如何使用UVM框架来编写可重用、可扩展的验证环境。 最后,指南可能会包含一些实际的验证案例或项目,旨在帮助学生将所学知识应用于实际项目中。这些案例可能包括创建测试用例、实现验证组件以及运行仿真调试。 通过学习《SystemVerilog Verification UVM 1.1 Student Guide》,学生将能够获得有关SystemVerilogUVM的全面指导,从而能够更好地理解实践硬件验证。这本指南将为学生提供一个坚实的基础,使他们能够在工程领域中进行有效的硬件验证工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值