类库地图
在SV模块中,验证环境整体的构建,是从底层模块的验证组件搭建到通信和激励生成。这些元素无论是软件对象的创建、访问、修改、配置,还是组件之间的通信等都是通过用户自定义的方式来实现的。
UVM验证方法学作为之前所有方法学的融合版本,从自身初衷而言,就是将验证过程中可以重用和标准化的部分都规定在其方法学的类库当中,通过标准化的方式减轻了验证人员构建环境的负担。
在可以看到对验证环境的共同需求是:
- 组件的创建和访问
- 环境的结构创建、组件之间的连接和运行
- 不同阶段的顺序安排
- 激励的生成、传递和控制
- 测试的报告机制
注:UVM300个类,核心就50个类(十大类中),真正使用的库可能就百分之十(十大类),其他的在UVM后台会自动调用;
UVM类库地图按照UVM的核心机制将地图进行了分块:
- 核心基类
- 工厂(factory)类
- 事务(transaction)和序列(sequence)类
- 结构创建(structure creation)类
- 环境组件(environment component)类
- 通信管道(channel)类
- 信息报告(message report)类
- 寄存器模型(register model)类
- 线程同步(thread synchronization)类
- 事务接口(transaction interface)类
核心基类提供最底层的支持,包括一些基本的方法,如复制、创建、比较和打印。在核心类之上发展了支持UVM特性的各个相关的类群。工厂类提供注册环境组件、创建组件和覆盖组件类型的方法。事务类和序列类用来规定在TLM传输管道中的数据类型和数据生成方式。环境组件类则是构成验证结构的主要部分,组件之间的嵌套关系通过层层例化和连接形成结构层次关系。事务接口类和通信管道类则共同实现组件之间的通信和存储。线程同步类则比SV自身的同步方法更方便,发生同步时可传递的信息更多。信息报告类使得从UVM环境报告的信息一致规范化,便于整体的控制和过滤。最后,寄存器模型类用来完成对寄存器和存储的建模、访问和验证。层次化的组件通过phase机制可以有序完成环境的创建、连接和运行,同样,层次化的sequence通过test可以完成不同的测试场景。
这篇笔记参考《UVM实战》、《芯片验证漫游指南》和某验证视频整理而成,仅作学习心得交流,如果涉及侵权烦请请告知,我将第一时间处理。