面向对象的编程
面向对象编程(OOP)原本属于软件开发方法学范畴,似乎与SystemVerilog这一类硬件描述语言没有任何关系。在传统的编程语言,例如C和FORTRAN中,程序根据数据结构进行操作。在 SystemVerilog语言的过程块(例如initial和always块)中,程序的运行与传统的编程语言十分类似。**所谓面向对象编程,其实就是把程序内部的执行细节放到程序外部进行描述;把数据结构和函数对数据结构的操作置于多个类的声明中,然后实例引用这些类,并把它们转变成具体的对象,再组装成可以执行的程序。**虽然SystemC是基于 C++(一种已得到广泛应用的OOP语言)的硬件描述语言,但是用类的概念来描述硬件、分析思考硬件设计/验证问题并非易事。应该提醒读者:在描述抽象层次高于RTL的硬件模型时,SystemC是最好的语言之一。
SystemVerilog语言包括了面向对象编程(OOP)的许多多特点,特别适合编写测试平台。虽然通过任何一种编程语言,采用不同的编程方法,都口以实现如下程序的功能,但采用这里介绍的这些结构,就可以显著地简化编程工作。
OOP最基本的特点是在编程中采用了类(class)的概念。下面的例子介绍了SystemVerilog中一个最简单的类:
class Twobits;bit a, b;endclass
上面这个例子过于简单,下面这个例子较好一些,"其中包括了一个或者多个函数[在 OOP术语中,函数(function)通常称为方法(method)]。
class Twobits;bit a,b;function implies;implies=(~a|b);endfunction endclass