书接上回:

从零开始搭建UVM平台(一)-只有uvm_driver的验证平台

从零开始搭建UVM平台(二)-加入factory机制

从零开始搭建UVM平台(三)-加入objection机制

从零开始搭建UVM平台(四)-加入interface

从零开始搭建UVM平台(五)-加入transaction机制

                                                                                加入env

为什么要加入env?目前我们的uvm平台组件还只有driver这一个,但是后续会陆续加入monitor/reference model等组件,组件一旦变多,该如何组织整个验证平台呢?我们知道run_test传入的参数可以帮助我们自动例化一个组件类并自动执行调用其中的phase。但是一旦组件变多,而run_test传入的参数只有一个,那么此时就需要一个容器类来包裹住所有的其他的组件,那么在run_test时只需要传入该容器类的类名就可以搭建好包含所有组件的验证平台。这个容器类就是env。

第一步:创建一个uvm_env类文件

从零开始搭建UVM平台(六)-加入env-LMLPHP

这里需要注意的是my_driver的例化方式用了create,这是用factory机制注册过的组件特有的例化方式,这种例化方式的好处是能够实现重载机制,具体见后面描述。

既然顶层变成了env,那么harness里面的run_test传入的参数名和config_db传入的interface路径要进行修改。

第二步:修改harness里面的run_test传入的参数名和config_db传入的interface路径

从零开始搭建UVM平台(六)-加入env-LMLPHP

10-02 13:11