zoukankan      html  css  js  c++  java
  • VMM学习-vmm_log

    功能类似verilog里的$display函数,在vmm里做了强化,可以在仿真过程中看到整个平台的运行信息,用来调试仿真平台。

    函数原型在vmm.sv里(class vmm_log;),其构造函数为extern function new(string name,string inst,vmm_log under=null),name表示包含vmm_log的类的名称,inst是包含vmm_log的类的例化名字,vmm的验证组件(test/generator/driver,etc)都包含vmm_log的隐式例化,在编写验证组件时不需要再次例化,对于transaction则不同,因为在验证期间,transcation往往会被例化很多次,这时的vmm_log往往需要在编写验证组件时单独例化,例化为静态函数,可以让transactions一直使用,比如:

    class wb_spi_trans extends vmm_data;
        static vmm_log log = new("wb_spi_trans","WB_SPI_TRANS");
        ...
      function new();
        super.new(this.log);
        'vmm_note(this,log,"Create an object");
      endfunction: new endclass : wb_spi_trans

    这样在例化wb_spi_trans时就会输出信息“Normal[NOTE] on wb_spi_trans(WB_SPI_TRANS) at 0

    Create an object”,参数name的作用在于告诉你是哪个组件输出的信息,参数inst的作用在于告诉你这个组件在整个验证环境中的层次(例化名称)。VMM通过参数化的宏定义输出信息,比如上面的'vmm_note,展开后:

    do
        if(log.start_msg(vmm_log::NOTE_TYP)) begin
            'void(log.text("Create an object"));
        log.end_msg();
        end
    while(0)

    log.start_msg函数输出”Normal[NOTE] on wb_spi_trans(WB_SPI_TRANS) at 0",log.test输出"Create an object",log.end_msg结束输出。vmm_log关键的属性有信息种类types_e(枚举类型:FAILURE_TYP/NOTE_TYP/DEBUG_TYP/REPORT_TYP/NOTIFY_TYP...),信息等级(枚举类型:FATAL_SEV/ERROR_SEV/WARNING_SEV/NORMAL_SEV/TRACE_SEV/DEBUG_SEV...),函数根据这两个变量来决定是否将信息输出,start_msg根据这两个变量决定是否输出信息,根据name和inst决定是哪个组件在输出信息。

  • 相关阅读:
    C# 获取文件的修改时间、访问时间、创建时间
    Nhibernate Or多条件查询
    C# 将GridView当前页数据导成Execl
    C# 清空文件夹
    TreeView默认收缩
    JS控制控件的隐藏显示
    div置顶,不随滚动条滚动而滚动
    js 父窗体与子窗体的调用
    树形菜单的绑定以及链接
    2010.10.16 OA项目组一周报告 CQ
  • 原文地址:https://www.cnblogs.com/kxk_kxk/p/3855725.html
Copyright © 2011-2022 走看看