uvm_version 定义了UVM相关的版本信息,而具体的uvm_revision则是通过在src/macros/uvm_version_defines.svh实现的。

uvm_revision_string()被uvm_root::report_handler() 函数调用。本函数仅返回uvm的版本号,该版本号可以通过`UVM_VERSION_STRING定义,通过定义了5个字符串,记录copyright。

 
`ifndef UVM_VERSION_SVH
`define UVM_VERSION_SVH parameter string uvm_mgc_copyright = "(C) 2007-2014 Mentor Graphics Corporation";
parameter string uvm_cdn_copyright = "(C) 2007-2014 Cadence Design Systems, Inc.";
parameter string uvm_snps_copyright = "(C) 2006-2014 Synopsys, Inc.";
parameter string uvm_cy_copyright = "(C) 2011-2013 Cypress Semiconductor Corp.";
parameter string uvm_nv_copyright = "(C) 2013-2014 NVIDIA Corporation";
parameter string uvm_revision = `UVM_VERSION_STRING; function string uvm_revision_string();
return uvm_revision;
endfunction `endif // UVM_VERSION_SVH

uvm_version_defines 源代码如下:

`ifndef UVM_VERSION_DEFINES_SVH
`define UVM_VERSION_DEFINES_SVH // Title: UVM Version Defines // Group: UVM Revision Values
// These macros provide the current values for the ~MAJOR~, ~MINOR~,
// and optionally the ~FIX~ revision.
//
// Example with UVM version 1.2:
// UVM_MAJOR_REV - '1'
// UVM_MINOR_REV - '2'
// UVM_FIX_REV - 'undefined'
//
// Example with UVM version 1.1a:
// UVM_MAJOR_REV - '1'
// UVM_MINOR_REV - '1'
// UVM_FIX_REV - 'a'
// // Macro: UVM_MAJOR_REV
// Defines the MAJOR revision number.
//
// For UVM version 1.2, the MAJOR revision number is '1'
//
// | `define UVM_MAJOR_REV 1
`define UVM_MAJOR_REV // Macro: UVM_MINOR_REV
// Defines the MINOR revision number.
//
// For UVM version 1.2, the MINOR revision number is '2'
//
// | `define UVM_MINOR_REV 2
`define UVM_MINOR_REV // Macro: UVM_FIX_REV
// (Optionally) Defines the FIX revision letter.
//
// For the first "X.Y" release of the UVM, there is no
// FIX revision letter. In these cases, the UVM_FIX_REV
// is left undefined.
//
// For any subsequent "X.Y" fix releases, the UVM_FIX_REV
// value is set to the appropriate fix release letter.
//
// Example:
// 1.1 - First release, UVM_FIX_REV is undefined
// 1.1a - Fix release, UVM_FIX_REV is 'a' // Include this in the comment when the FIX rev is present:
// | `define UVM_FIX_REV a //`define UVM_FIX_REV a // Macro: UVM_NAME
// The name used by the library when displaying the name of
// the library.
//
// | `define UVM_NAME UVM
`define UVM_NAME UVM // Macro: UVM_VERSION_STRING
// Provides a string-ized version of the UVM Library version number.
//
// When there is a FIX_REV, the string is "<name>-<major>.<minor><fix>" (such as "UVM-1.1d").
// When there is NO FIX_REV, the string is "<name>-<major>.<minor>" (such as "UVM-1.2"). `ifdef UVM_FIX_REV
`define UVM_VERSION_STRING `"`UVM_NAME``-```UVM_MAJOR_REV``.```UVM_MINOR_REV`UVM_FIX_REV`"
`else
`define UVM_VERSION_STRING `"`UVM_NAME``-```UVM_MAJOR_REV``.```UVM_MINOR_REV```"
`endif // Group: Conditional Compilation
// These macros provide the ability to conditionally compile based on the
// revision of the library which is being used.
//
// These macros are required for conditional compilation, as SystemVerilog does
// not support conditionals with `ifdefs.
//
// For example:
// | // Illegal:
// | `if (UVM_MAJOR_REV == 1)
// |
// | // Legal:
// | `ifdef UVM_MAJOR_REV_1
// // Macro: UVM_MAJOR_REV_1
// Indicates that the MAJOR version of this release is '1'.
//
// | `define UVM_MAJOR_REV_1
//
`define UVM_MAJOR_REV_1 // Macro: UVM_MINOR_REV_2
// Indicates that the MINOR version of this release is '2'.
//
// | `define UVM_MINOR_REV_2
//
`define UVM_MINOR_REV_2 // Macro: UVM_VERSION_1_2
// Indicates that the version of this release is '1.2'.
//
// | `define UVM_VERSION_1_2
`define UVM_VERSION_1_2 // Undocumented, same thing as UVM_VERSION_1_2
`define UVM_MAJOR_VERSION_1_2 // Group: UVM Version Ladder // Macro: UVM_POST_VERSION_1_1
// Indicates that this version of the UVM came after the
// 1.1 versions, including the various 1.1 fix revisions.
//
// The first UVM version wherein this macro is defined is
// 1.2, and the macro will continue to be defined
// for all future revisions of the UVM library.
//
// | `define UVM_POST_VERSION_1_1
`define UVM_POST_VERSION_1_1 `endif // UVM_VERSION_DEFINES_SVH

uvm_verision——告诉我你几岁了?的更多相关文章

  1. [No00002C]人的寿命应该能达到100至175岁-北大齐教授健康讲座笔录

      人的寿命应该能达到100 至175 岁,为什么都没有达到呢?最主要一个原因就是我们不重视保健,不懂得保健的知识.很多人死于无知,这很冤枉啊! 大家知道怎么保健吗?国际上有个维多利亚宣言,宣言里有三 ...

  2. 30岁IT男连续工作一个月 突然失聪

    连续开发软件一个月,30 岁男子突然听不见声音了.近日,浙江省中山医院针灸科主任高宏主任中医师接诊了这名患者.高主任说,现在很多年轻人工作压力大,得突发性耳聋的越来越多,这种病听着不是威胁生命的大病, ...

  3. IT行业歧视40岁以上人群为找工作还要谎报年龄[转]

    IT行业歧视40岁以上人群为找工作还要谎报年龄(这样不好) http://www.aliyun.com/zixun/content/2_6_616161.html [赛迪网讯]4月5日消息,许多40多 ...

  4. CODE大全告诉你java是否开始没落了

    CODE大全告诉你java是否开始没落了! 22 岁,对于一个技术人来说可谓正当壮年.但对于一门编程语言来说,情况可能又有不同.各类编程语言横空出世,纷战不休,然而 TIOBE 的语言排行榜上,Jav ...

  5. 30岁后还能入IT行业吗?

    前言 写这样的文章只想给那些准备改行想入IT行业的同学一点点建议,当然只做参考,我的个人经历. 我也是一个30岁改行进IT行业的程序猿.入这行也有一年多了吧.给我的感觉就是比较苦逼. 入行前的培训 进 ...

  6. 热泪盈眶的五十岁 | James Altucher

    我是一名程序员,但我不爱看技术博客,因为要吸取知识点,看源代码.官方文档和书永远比看技术博客要好.对于博客这种偏碎片的媒介,我倾向于看一些短小精炼.有一点深度的叙述,Altucher刚好符我目前的品味 ...

  7. [转帖] cnblog新闻区 “40岁以上的员工,请自觉离开”

    “40岁以上的员工,请自觉离开” 投递人 itwriter 发布于 2018-04-29 22:36 评论(9) 有2733人阅读 原文链接 [收藏] « » “准确地说,华为目前要裁掉的.清退的,是 ...

  8. UI设计是青春饭?今天告诉你真相!

    最近有学员来问,“我想转行学习UI设计,但是听很多人说,UI设计是吃青春饭的,互联网公司是不是只选择年轻的血液而淘汰年纪大的?”今天,我来统一回答一下. UI设计是不是青春饭? 我们先来思考一个问题: ...

  9. 【Java学习经历系列-1】19岁的我,没遇见生命中的她,却遇见了java

    [写在前面]正直青春年少的你,遇到了你的她了吗?还是你也和我们今天的主人公一样,在最美好的年级,正在为你的初衷努力着,坚持着,奔波着..... 作者:李伟   我的黑客时代 01 大学专业是电子信息工 ...

随机推荐

  1. bzoj 2655 calc —— 拉格朗日插值

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2655 先设 f[i][j] 表示长度为 i 的序列,范围是 1~j 的答案: 则 f[i][ ...

  2. FFmpeg常用命令 (三)流媒体

    前言 如此强大的FFmpeg,能够实现视频采集.视频格式转化.视频截图.视频添加水印.视频切片.视频录制.视频推流.更改音视频参数功能等.通过终端命令如何实现这些功能,Richy在本文做一记录,以备之 ...

  3. 【HDU5512】 2015沈阳赛区D题 规律题(GCD)

    第一篇博客,就从一个比较简单的题目入手吧! 题目: [HDU5512] 题意: 有n个塔,编号为1~n,  编号为a,b的塔已经维修好,此外其他的塔都需要维修.塔的维修是有顺序的,每次只能维修编号为k ...

  4. glance image-create --name "linux-core-mini-01" --file /cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --progress --visibility public

    glance image-create --name "linux-core-mini-01" --file /cirros-0.3.4-x86_64-disk.img --dis ...

  5. KVM虚拟机内无agent情况下的监控方法

    KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openst ...

  6. mysql分页性能

    - select * from userinfo limit 20000,10  # 数据越往后越慢 - 索引表中扫: select * from userinfo where id in (sele ...

  7. 揭开 iOS 7 之 Multipath TCP 的面纱(转)

    看到中文圈似乎讨论 iOS 7 的这个特性的还不多,于是我稍微研究了一下这个「Mutlipath TCP」,写点心得.过程是这样的: Olivier Bonaventure 通过 Wireshark ...

  8. Maven 依赖范围(转)

    1.什么是依赖范围? maven 项目不同的阶段引入到classpath中的依赖是不同的,例如,编译时,maven 会将与编译相关的依赖引入classpath中,测试时,maven会将测试相关的的依赖 ...

  9. ajaxForm上传文件到本地服务器(封装)

    不啰嗦,直接看代码 1.html: <div class="con-item fix"> <span class="f">文章封面< ...

  10. Mol Cell Proteomics. |廖文丽| 阿尔兹海默症临床前期的脑脊液中突触蛋白的变化先于神经变性标志物

    大家好,本周分享的是发表在Molecular & Cellular Proteomics. 上的一篇关于阿尔兹海默病临床前期生物标志物鉴定的文章,题目是Changes in synaptic ...