《The UVM Primer》——chapter4: Object-Oriented Programming (OOP)

SystemVerilog是一种在现代集成电路设计和验证流程中,由Verilog发展而来的硬件描述和硬件验证相互结合的语言,前一部分基本上是2005年版Verilog的扩展,而后一部分功能验证特性则是一门面向对象程序设计语言。面向对象特性很好地弥补了传统Verilog在芯片验证领域的缺陷,改善了代码可重用性,同时可以让验证工程师在比寄存器传输更高的抽象级别,以transaction而非单个信号作为监测对象,这都大大提高了验证平台搭建的效率。

SystemVerilog 3.0(最初的版本是 3.0,因为他们认为最初的 Verilog 是 1.0,1364-2001 是Verilog 2.0,所以这是Verilog 3.0)在2002年6月被 Accellera 批准并移交给 IEEE 批准。

SystemVerilog 3.1 版于 2003 年 5 月发布,3.1a 版于 2004 年 5 月发布,其中包括对验证语言和 C 语言集成的改进。这成为 IEEE 1800-2005。

IEEE 1800-2009将该标准的 Verilog 部分提升至 IEEE 1364-2005,这正式结束了未来 Verilog 版本的开发。最新版本是 IEEE 1800-2017,可通过 IEEE Get Program 免费获得,或者https://www.accellera.org/downloads/ieee

OOP有三大特点使其深受验证工程师和软件工程师的喜爱:

  • Code Reuse

  • Code Maintainability

  • Memory Management

代码重用

一个简单的微控制器,通常包含微处理器、寄存器、UART 和其他接口。我们不需要知道设计上是如何实现的,只需要知道引脚和指令在波形上的定义。事实上,无论微控制器是以封装的形式、还是作为芯片的一部分,甚至是编在 FPGA 中,我们都可以用一样的代码。

OOP中的对象也是一样的。它包含了数据、task和function。一旦定义了一个对象, 我们不需要关注里面有什么, 只需按照文档说明来使用即可。之后每加一个功能, 验证平台就更强大。如果新功能编写正确了,就可以在之前的基础上创建更多新功能。

代码维护

每次你把验证平台中的A处代码拷到另一处的B处代码,这是在制造潜在的代码维护问题。你希望A、B代码在两个地方是一样的,但是你在A处代码发现了一个 bug,你就需要在程序里搜索B处代码并修复。如果你拷的是别人的代码,这个问题会更严重。在这种情况下,他们修改了自己的 bug,但是很可能不会跟你讲这个修改,导致你的代码没有同步。

OOP可以解决这个问题,在一个地方写通用的代码,然后整个验证平台都可以访问。如果使用了别人的代码,别人的修改你也可以同步更新。

内存管理

在学习 OOP 的时候,我们会发现自己在创建并向验证平台传递对象。实际上执行的是在代码里分配内存并在多个线程里共享。这个在C语言这样的传统语言里,是一个让人头痛的bug易发的过程,但是在像 SystemVerilog这样的纯 OOP 语言里是简单的。

总结:OOP有什么好处

  • 模块化    debug和协作开发更加容易

  • 重用性    代码可以继承重用,避免重复造轮子

  • 生产率    通过可重用代码可以更快地构建新程序

  • 安全性    封装隐藏了复杂的代码,更容易维护软件

  • 接口说明    对象通信传递,外部系统的描述更简单

  • 易于升级和扩展    开发者可以独立地实现系统功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值