加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

uvm初探

(2015-04-15 17:38:13)
标签:

it

1. 使用UVM的第一条原则: 所有的组件均派生自uvm类。

2. 类的 new函数中的两个参数(string name, uvm_component parent)

3. uvm_info宏,3个参数 1?  2打印内容  3冗余级别UVM_HIGH/MEDIUM/LOW

    uvm_fatal宏,2个参数 1? 2 打印内容    重大问题,结束仿真

4. 使用uvm   `include "uvm_macros.svh"    import uvm_pkg : : *;

5. uvm类的phase函数都有一个uvm_phase phase参数,在真正的验证平台中,这个参数是不需要用户理会的。

6. factory机制: 自动创建一个类的实例并调用其中的函数和任务。

         `uvm_component_utils(string name)  功能之一:如果在定义新类时使用了这个宏,就将这个类登记在UVM内部的一张表中

          `uvm_object_utils 用于派生自uvm_object的类的注册

         tb中使用run_test(string name); 根据类名创建一个实例(uvm_component_utils)的功能

         创建实例  drv = my_driver::type_id::creat("drv", this);  第一个参数为实例在uvm树中的名字,第二个参数为实例在uvm树中的父节点,因为在env中例化的,父节点为env,故写成this,表示类一级

7. objection机制:  在每个phase中,通过objection的提起和撤销来控制仿真

               phase.raise_objection(this);  该语句必须在phase中第一个消耗仿真时间的语句之前,否则会退出

               phase.drop_objection(this);

8. 避免绝对路径,提高可移植性  方法一: 使用宏

          方法二: 使用接口(interface)   在类中使用的接口要声明virtual

9. 两种不同的层次结构   结构一: tb_top.dut.xxx  模块(module)的例化所引入的hierachy

          结构二:验证平台组件在run_test中的例化引入,如uvm_test_top.drv

10.  config_db机制:由于层次结构的不同,类中使用的virtual interface不能直接与tb中的接口相连, 使用config_db机制来进行连接

      在tb中set:  uvm_config_db# (virtual my_if) : : set(null, "uvm_test_top.drv", "vif", input_if);

      在类的build_phase中get:  uvm_config_db#(virtual my_if) : : get(this, "uvm_test_top.drv", "vif", vif);

      也可以传递数据

       tb:  uvm_config_db# (int) : : set(null, "uvm_test_top.drv", "var", 10);

       class:  uvm_config_dv# (int) : : get(this, "uvm_test_top.drv", "var", var);

      set 与get函数的第三个参数一定要一样

11. transaction :  验证平台各组件间信息传递的基本形式, 类似于数据包

           一定要从uvm_sequence_item派生,才可以使用UVM的Sequence机制

12. driver的功用: 将激励信号驱动到DUT的端口上

13. env:容器类, env 实例化在uvm中,在env中实例化driver、monitor、reference model和scoreboard

14. run_test 如何自动实例化一个类? 在tb中使用如下语句:

                   initial begin

                         run_test("my_env");

                    end

      my_env is the class name

      run_test自动创建的实例名字为uvm_test_top

15. monitor: 从DUT端口收集数据,打包成transaction,发送给reference module和scoreboard

16. agent: 在其中封装monitor与driver

                uvm_agent中有一个成员变量is_active,取值为UVM_PASSIVE和UVM_ACITVE, 可以控制agent中是否实例化driver。因为在输出端口处的agent不需要driver

17. 创建实例要在build_phase中执行。 build_phase执行从树根到树叶的顺序

 

 

 

 

         

 

0

阅读 收藏 喜欢 打印举报/Report
后一篇:uvm初探
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有