《IC验证成长手册》第5篇 SystemVerilog 面向对象:验证语言的第一块基石
《IC验证成长手册》第5篇SystemVerilog 面向对象:验证语言的第一块基石UVM 的 phase、组件、sequence、factory,全部建立在 SystemVerilog 的面向对象(OOP)能力之上。如果不理解类、继承、多态,看 UVM 源码就像看天书。本篇把这块语言地基补扎实——它是验证世界的“第一块基石”,也是从“会写用例”走向“能读框架源码”的分水岭。一、为什么验证需要 OOP测试平台本质上是一段大型软件:动辄上百个类、几十万行代码,需要复用、扩展、团队协作。面向对象提供的三个能力正好对症:封装(细节不外露,组件之间只通过接口协作)、继承(公共逻辑写在基类,子类只写差异)、多态(同一句调用在不同对象上表现不同,是 factory 覆盖、sequence 分发的理论基础)。可以说,没有 OOP 就没有 UVM——理解 OOP,是理解整个验证框架的前提。二、类与对象:句柄、new、构造函数类是模板,对象是实例。SystemVerilog 里创建对象用 new:my_class obj = new();。变量 obj 存的是“句柄”(指向对象的引用),不是对象本身。两个句柄可以指向同一个对象,也可以一个句柄先后指向不同对象——理解句柄语义,是避免一堆“玄学 bug”的关键。构造函数 new 在创建时执行,用于初始化字段,也可以带参数:obj = new(123)。class packet;int len;function new(int l = 0);len = l;endfunctionvirtual function void display();$display(“packet len=%0d”, len);