自体脂肪.请教王明利uvm中uvm

UVM方法学部分概念一 - e_er的个人空间 - 中国电子顶级开发网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台
- Powered by X-Space
UVM方法学部分概念一
& 21:14:50
/ 个人分类:
学习UVM基础知识,面向对象设计思想OOP,可以增加重用性,多态性,扩展性。对于OOP的概念需要花时间理解和实践。UVM Overview。验证平台组建:testbench、component、env。验证方法论:function coverage、random env,满足全面、快速测试。在不修改testbench情况下,通过修改testcase的方式以提高测试灵活性和效率。分层测试的思想:分三级block level、IP level、Soc level。UVM基本元素component(ovm_object、component、agent、test、sequencer等)、元素间链接communication、元素间传输数据data。UVM规定元素运行顺序phase:build、connect、endif、startof、run、extract、check...。runtest是平台执行入口,用于找到工程中的test并执行。runtest执行时在工厂中找到想要运行的testcase,testcase要注册到工厂中。runtest执行可以通过+UVM_TESTNAME传递需要测试的test,test_name要提前注册到工厂中。runtest可以看到import进来的UVM_PKG的所有信息。phase执行顺序,是通过父子关系决定的,不是指类的父子关系,而是module包含关系,是引用与显性的定义。build时是自上而下的顺序,主要原因是,上层要替换底层组件,同时梳理出结构。run操作是并行执行的,其他phase从下而上运行,因为经过build阶段,上层清晰知道下层信息,所以可以自底而上运行。build时替换的操作与好处:上层执行set_inst_override_bytype宏,可以再顶层搜寻工厂中的组件,用于替换底层某组件。举个具体例子,设计时可以设计多个driver(正常或异常的处理),在某个testcase组件中,就可以调用异常driver实现测试异常用例,而不需要修改平台或env,灵活性重用性强。UVM TLM:基于事务传输,通过fuction:get/put用于组件间通信。Transaction class:这个类无phase概念,也需要注册到工厂。sequence:即sequence item。sequncer、driver、agent(passive仅打开monitor、active打开driver和monitor)、env、testclass。UVM 中report/filter功能,开发时将打印加好,可以通过UVM_MEDIUM设置HIGH、LOW、DEBUG,选择过滤打印条件,确定打印信息层次。这是debug的灵活性。关注我们:
UVM实战(卷1)
移动端下单更多优惠
本商品由1号店入驻商家提供
手机购买仅需?,立即扫码购买
咨&&&&询:
店铺动态评分同行业相比
描述相符:
服务态度:
发货速度:
书名:UVM实战(卷1)
原价:79.00元
出版社:机械工业出版社
出版日期:
开本:16开
商品标识:jd
目前唯一一本用研究的眼光解读如何搭建基于UVM搭建验证平台的书。 作者历时3年钻研UVM源代码和使用UVM经验的系统总结。 实例丰富,步步清晰引导读者掌握UVM的精髓和实用技巧。 本书脱胎于网络上广为流传的《UVM1.1应用指南及源码分析》,内容愈加炉火纯青。
更多精彩,点击进入华章品牌店查阅>>
《UVM实战(卷1)》主要介绍UVM的使用。全书详尽介绍了UVM的factory机制、sequence机制、phase机制、objection机制及寄存器模型等的使用。此外,本书还试图引导读者思考UVM为什么要引入这些机制,从而使读者知其然,更知其所以然。本书以一个完整的示例开篇,使得读者一开始就对如何使用UVM搭建验证平台有总体的概念。本书提供大量示例代码,这些代码都经过实际的运行。全书内容力求简单易懂,尽量将UVM中的概念与读者已有的概念联系起来。在第11章还专门介绍了OVM与UVM的区别,为那些从OVM迁移到UVM的用户提供很大帮助。本书主要面向UVM的初学者及想对UVM追根寻底的中级用户。针对没有面向对象编程基础的用户,本书在附录中简要介绍了面向对象的概念及SystemVerilog中区别于其他编程语言的一些特殊语法。
第1章与UVM的第一次接触 1.1UVM是什么 1.1.1验证在现代IC流程中的位置 1.1.2验证的语言 1.1.3何谓方法学 1.1.4为什么是UVM 1.1.5UVM的发展史 1.2学了UVM之后能做什么 1.2.1验证工程师 1.2.2设计工程师 第2章一个简单的UVM验证平台 2.1验证平台的组成 2.2只有driver的验证平台 *2.2.1最简单的验证平台 *2.2.2加入factory机制 *2.2.3加入objection机制 *2.2.4加入virtual interface 2.3为验证平台加入各个组件 *2.3.1加入transaction *2.3.2加入env *2.3.3加入monitor *2.3.4封装成agent *2.3.5加入reference model *2.3.6加入scoreboard *2.3.7加入field_automation机制 2.4UVM的终极大作:sequence *2.4.1在验证平台中加入sequencer *2.4.2sequence机制 *2.4.3default_sequence 的使用 2.5建造测试用例 *2.5.1加入base_test *2.5.2UVM中测试用例的启动 第3章UVM基础 3.1uvm_component与uvm_object 3.1.1uvm_component派生自uvm_object 3.1.2常用的派生自uvm_object的类 3.1.3常用的派生自uvm_component的类 3.1.4与uvm_object相关的宏 3.1.5与uvm_component相关的宏 3.1.6uvm_component的限制 3.1.7uvm_component与uvm_object的二元结构 3.2UVM的树形结构 3.2.1uvm_component中的parent参数 3.2.2UVM树的根 3.2.3层次结构相关函数 3.3field automation机制 3.3.1field automation机制相关的宏 3.3.2field automation机制的常用函数 *3.3.3field automation机制中标志位的使用 *3.3.4field automation中宏与if的结合 3.4UVM中打印信息的控制 *3.4.1设置打印信息的冗余度阈值 *3.4.2重载打印信息的严重性 *3.4.3UVM_ERROR到达一定数量结束仿真 *3.4.4设置计数的目标 *3.4.5UVM的断点功能 *3.4.6将输出信息导入文件中 *3.4.7控制打印信息的行为 3.5config_db机制 3.5.1UVM中的路径 3.5.2set与get函数的参数 *3.5.3省略get语句 *3.5.4跨层次的多重设置 *3.5.5同一层次的多重设置 *3.5.6非直线的设置与获取 *3.5.7config_db机制对通配符的支持 *3.5.8check_config_usage 3.5.9set_config与get_config 3.5.10config_db的调试 第4章UVM中的TLM1.0通信 4.1TLM1. 4.1.1验证平台内部的通信 4.1.2TLM的定义 4.1.3UVM中的PORT与EXPORT 4.2UVM中各种端口的互连 *4.2.1PORT与EXPORT的连接 *4.2.2UVM中的IMP *4.2.3PORT与IMP的连接 *4.2.4EXPORT与IMP的连接 *4.2.5PORT与PORT的连接 *4.2.6EXPORT与EXPORT的连接 *4.2.7blocking_get端口的使用 *4.2.8blocking_transport端口的使用 4.2.9nonblocking端口的使用 4.3UVM中的通信方式 *4.3.1UVM中的analysis端口 *4.3.2一个component内有多个IMP *4.3.3使用FIFO通信 4.3.4FIFO上的端口及调试 *4.3.5用FIFO还是用IMP 第5章UVM验证平台的运行 5.1phase机制 *5.1.1task phase与function phase 5.1.2动态运行phase *5.1.3phase的执行顺序 *5.1.4UVM树的遍历 5.1.5super.phase的内容 *5.1.6build阶段出现UVM_ERROR停止仿真 *5.1.7phase的跳转 5.1.8phase机制的必要性 5.1.9phase的调试 5.1.10超时退出 5.2objection机制 *5.2.1objection与task phase *5.2.2参数phase的必要性 5.2.3控制objection的最佳选择 5.2.4set_drain_time的使用 *5.2.5objection的调试 5.3domain的应用 5.3.1domain简介 *5.3.2多domain的例子 *5.3.3多domain中phase的跳转 第6章UVM中的sequence 6.1sequence基础 6.1.1从driver中剥离激励产生功能 *6.1.2sequence的启动与执行 6.2sequence的仲裁机制 *6.2.1在同一sequencer上启动多个sequence *6.2.2sequencer的lock操作 *6.2.3sequencer的grab操作 6.2.4sequence的有效性 6.3sequence相关宏及其实现 6.3.1uvm_do系列宏 *6.3.2uvm_create与uvm_send *6.3.3uvm_rand_send系列宏 *6.3.4start_item与finish_item *6.3.5pre_do、mid_do与post_do 6.4sequence进阶应用 *6.4.1嵌套的sequence *6.4.2在sequence中使用rand类型变量 *6.4.3transaction类型的匹配 *6.4.4p_sequencer的使用 *6.4.5sequence的派生与继承 6.5virtual sequence的使用 *6.5.1带双路输入输出端口的DUT *6.5.2sequence之间的简单同步 *6.5.3sequence之间的复杂同步 6.5.4仅在virtual sequence中控制objection *6.5.5在sequence中慎用fork join_none 6.6在sequence中使用config_db *6.6.1在sequence中获取参数 *6.6.2在sequence中设置参数 *6.6.3wait_modified的使用 6.7response的使用 *6.7.1put_response与get_response 6.7.2response的数量问题 *6.7.3response handler与另类的response *6.7.4rsp与req类型不同 6.8sequence library 6.8.1随机选择sequence 6.8.2控制选择算法 6.8.3控制执行次数 6.8.4使用sequence_library_cfg 第7章UVM中的寄存器模型 7.1寄存器模型简介 *7.1.1带寄存器配置总线的DUT 7.1.2需要寄存器模型才能做的事情 7.1.3寄存器模型中的基本概念 7.2简单的寄存器模型 *7.2.1只有一个寄存器的寄存器模型 *7.2.2将寄存器模型集成到验证平台中 *7.2.3在验证平台中使用寄存器模型 7.3后门访问与前门访问 *7.3.1UVM中前门访问的实现 7.3.2后门访问操作的定义 *7.3.3使用interface进行后门访问操作 7.3.4UVM中后门访问操作的实现:DPI+VPI *7.3.5UVM中后门访问操作接口 7.4复杂的寄存器模型 *7.4.1层次化的寄存器模型 *7.4.2reg_file的作用 *7.4.3多个域的寄存器 *7.4.4多个地址的寄存器 *7.4.5加入存储器 7.5寄存器模型对DUT的模拟 7.5.1期望值与镜像值 7.5.2常用操作及其对期望值和镜像值的影响 7.6寄存器模型中一些内建的sequence *7.6.1检查后门访问中hdl路径的sequence *7.6.2检查默认值的sequence *7.6.3检查读写功能的sequence 7.7寄存器模型的高级用法 *7.7.1使用reg_predictor *7.7.2使用UVM_PREDICT_DIRECT功能与mirror操作 *7.7.3寄存器模型的随机化与update 7.7.4扩展位宽 7.8寄存器模型的其他常用函数 7.8.1get_root_blocks 7.8.2get_reg_by_offset函数 第8章UVM中的factory机制 8.1SystemVerilog对重载的支持 *8.1.1任务与函数的重载 *8.1.2约束的重载 8.2使用factory机制进行重载 *8.2.1factory机制式的重载 *8.2.2重载的方式及种类 *8.2.3复杂的重载 *8.2.4factory机制的调试 8.3常用的重载 *8.3.1重载transaction *8.3.2重载sequence *8.3.3重载component 8.3.4重载driver以实现所有的测试用例 8.4factory机制的实现 8.4.1创建一个类的实例的方法 *8.4.2根据字符串来创建一个类 8.4.3用factory机制创建实例的接口 8.4.4factory机制的本质 第9章UVM中代码的可重用性 9.1callback机制 9.1.1广义的callback函数 9.1.2callback机制的必要性 9.1.3UVM中callback机制的原理 *9.1.4callback机制的使用 *9.1.5子类继承父类的callback机制 9.1.6使用callback函数/任务来实现所有的测试用例 9.1.7callback机制、sequence机制和factory机制 9.2功能的模块化:小而美 9.2.1Linux的设计哲学:小而美 9.2.2小而美与factory机制的重载 9.2.3放弃建造强大sequence的想法 9.3参数化的类 9.3.1参数化类的必要性 *9.3.2UVM对参数化类的支持 9.4模块级到芯片级的代码重用 *9.4.1基于env的重用 *9.4.2寄存器模型的重用 9.4.3virtual sequence与virtual sequencer 第10章UVM高级应用 10.1interface 10.1.1interface实现driver的部分功能 *10.1.2可变时钟 10.2layer sequence *10.2.1复杂sequence的简单化 *10.2.2layer sequence的示例 *10.2.3layer sequence与try_next_item *10.2.4错峰技术的使用 10.3sequence的其他问题 *10.3.1心跳功能的实现 10.3.2只将virtual_sequence设置为default_sequence 10.3.3disable fork语句对原子操作的影响 10.4DUT参数的随机化 10.4.1使用寄存器模型随机化参数 *10.4.2使用单独的参数类 10.5聚合参数 10.5.1聚合参数的定义 10.5.2聚合参数的优势与问题 10.6config_db 10.6.1换一个phase使用config_db *10.6.2config_db的替代者 *10.6.3set函数的第二个参数的检查 第11章OVM到UVM的迁移 11.1对等的迁移 11.2一些过时的用法 *11.2.1sequence与sequencer的factory机制实现 11.2.2sequence的启动与uvm_test_done *11.2.3手动调用build_phase 11.2.4纯净的UVM环境 附录ASystemVerilog使用简介 附录BDUT代码清单 附录CUVM命令行参数汇总 附录DUVM常用宏汇总
张强,资深验证工程师,毕业于浙江大学超大规模集成电路研究所,研究方向为模拟及数模混合集成电路,主要从事模拟电源管理芯片、运算放大器及应用于高性能CPU的SRAM的研究与设计,持有两个与SRAM相关的专利。毕业后一直从事数字集成电路的设计和验证工作,曾经参与过高速智能列车数据采集及通信系统、高性能智能投影仪芯片的研究与开发。目前主要从事手机等消费电子低功耗图形显示芯片的研究。2011年年底,在熟读UVM源代码的情况下,在网上发布了《UVM1.1应用指南及源代码解析》,深受读者肯定。
UVM验证方法学在欧美先进的微电子和半导体公司中已经被广泛采用。而目前国内的公司也开始作同样的升级,《UVM实战》是一本符合现代验证大趋势的书。对于这一本由中国本土作者自己编写的UVM学习书籍(也是第一部中文自主版权的UVM书籍),我深感惊奇,也为年轻的作者感到骄傲。书中涉及的全面的UVM验证方法学理论知识、丰富的实战经验和范例以及循序渐进的教学方式无不令人印象深刻,这是一本易懂易学的高水平著作,也是一本适合于芯片验证工程师、微电子专业本科或研究生以及相关学科教学的优秀学习教材和参考书。—— T. Chan博士美国Pixelworks公司工程部执行副总裁 我很荣幸能够第一时间品读这本关于UVM的中文书籍。UVM验证方法学出现不到5年,但是发展速度惊人,目前专业的IP、VIP供应商都开始为客户提供UVM验证环境,因此学习UVM对专业的验证工程师,以及设计工程师,都有很大的裨益。遗憾的是,目前关于UVM的资料大多是英文的,并且内容对于入门者来说比较晦涩难懂,让人望而生畏,尚没有正式出版的中文UVM教程。这本书的出现,有如及时雨,填补了这个空白,让国内读者能够很快地在混沌中摸清方向。此书循序渐进,从实践到背景原理进行了深入浅出的讲解,非常适合自学。并且其内容是基于UVM的稳定版本1.1d,相对其他英文书籍内容更新、更实用,对读者帮助也更大。作者有非常丰富的UVM经验,曾经在网络上发布过一个关于UVM代码分析的文档,我也曾经通过E-mail请教过他相关问题,受益匪浅。相信这本书能够对国内整体验证水平的提高带来很大的帮助。不论是验证工程师还是设计工程师,我都强烈推荐大家仔细阅读。—— 朱迎辉 瑞晟微电子(苏州)有限公司电脑周边事业处副处长 我读过不少介绍OVM/UVM验证方法学的书,我也亲自实践过UVM,然而,我还是常常感慨没有一本能够真正把UVM说透彻、讲清楚的技术书籍。有幸拜读张强的《UVM实战》一书之后,我的想法改变了。以我多年IC设计和验证的经验,我认为这是一本能够让读者叫好的技术书籍。作者结合自己在UVM验证领域丰富的实践经验,花费很多心血深入研究UVM的源代码,从体系上把握了UVM的精髓,然后用深入浅出的方式将其介绍给读者。这本书给人以耳目一新的感觉,从理论到实践、从初级到高级、从搭建平台到系统调试,不但讲述非常清楚,而且逻辑联系严密。学习完本书,并且按照书中的实例进行练习,就能够系统地掌握UVM的使用和调试技术。与目前市面上的其他UVM书籍相比,这一点实属难能可贵。这本书对于使用UVM验证的工程师具有极高的参考价值,对学习UVM的初学者更是一本不可多得的好书。—— 贺海文灿芯半导体DFT主管(曾任英特尔移动通信IC设计与验证高级工程师)
如发现商品介绍信息有误,您可以点击【 】反馈给我们,谢谢。
您暂时不能对商品进行评价
抱歉,您暂时不能对该商品进行评价,可能有以下原因:
1、 您可能没有在1号店购买过该商品。
2、 您购买了该商品,但还没确认收货,或订单还未完成。3、 您已经评价过该商品。
因厂家更改商品包装、场地、附配件等不做提前通知,以下内容仅供参考!给您带来的不变还请谅解。谢谢
*问题类型:
提问小贴士:
因厂家更改商品包装、产地、附配件等不做提前通知,且每位咨询者购买情况、提问时间等不同。为此,客服给到的回复仅对提问者3天内有效,其他网友仅供参考!给您带来的不便还请谅解,谢谢!
您的问题已经收到,我们将尽快回复(9-18点)
感谢您为其他会员做出的帮助,请在此填写您的回答,字数请限定在20~100之间!
回复小贴士
1、1号店鼓励您对已有的产品问题做出解答,一个问题只能回答一次。
2、问答字数限制:10~100个字以内。
3、若您提交信息出现与产品无关的冗余信息或涉及广告、比价、重复反馈、不实 评论、恶意评论、粗口、危害国家安全等不当言论时,或经1号店查实您存在自问 自答等作弊行为,1号店有权予以删除其内容。
选择手机号码
入网地区中国
未找到匹配的手机号码,请重新搜索
加入购物车
由于商品在各地的价格和库存不同请选择您的收货地
移动4G套餐
移动流量月包
已选套餐:
月费语言(分钟)流量备注
此流量月包将与您已有的主套餐内流量叠加使用,费用每月扣除
联通4G套餐
联通流量月包
已选套餐:
月费语言(分钟)流量备注
此流量月包将与您已有的主套餐内流量叠加使用,费用每月扣除
电信4G套餐
电信流量月包
已选套餐:
月费语言(分钟)流量备注
此流量月包将与您已有的主套餐内流量叠加使用,费用每月扣除
? 非常抱歉,该业务办理失败 请咨询10086
?您的套餐变更已成功提交,请注意收短信
如果您想修改套餐,或对套餐变更有任何疑问,请联系10086
已变更套餐:38元月套餐 移动4G套餐
套餐包含:语音50分钟/月 流量500M/月
加微信查订单中国电子顶级开发网论坛(EETOP) 国内顶级电子论坛,最活跃的电子工程师交流社区uvm_report_object
从本节开始,我们进行uvm的report的相关类的介绍,report机制大概包括四个主要的类uvm_report_object,uvm_report_handler,
uvm_report_server,uvm_report_catcher。其中uvm_report_object是一个到uvm_report机制的接口类,对uvm
report机制的使用都是通过这个类来进行的。uvm_report_object通过在自己的方法中使用uvm_report_handler来实现消息的报告,uvm_report_handler存储了对消息的显示和处理的一些配置信息,他对消息的处理进行决策,并对消息进行一些格式化,过滤等。最终消息被将被uvm_report_handler送到uvm_report_server。而uvm_report_catcher实际上就是一个uvm_report_cb,他对特定的uvm_report_object发出的消息进行抓取。
&1. 一个uvm的report由下列部分组成id string, severity,
verbosity level, and the textual,filename and line
number;如果消息的verbosity level超过了一个report被配置的最大verbosity
level那么这个消息将被过滤掉。如果消息通过了过滤,那么以后的行为都是确定的,如果被配置为输出到一个文件,那么该消息最后将被输出的该文件中
&2.report的actions定义了对各个级别的消息采取的行动,该行动针对severity
or id,或者(severity, id)对。可采取的行动包括显示,推出,计数,UVM_DISPLAY |
UVM_COUNT|UVM_EXIT
&3.文件描述符,可以设定默认的文件描述符,通过severity, id,
(severity, id)设定文件描述符。这些文件描述符必须使用者自己负责进行开关维护。
&4.默认的文件句柄是0,即标准输出默认的文件句柄可以通过set_*_file来改写
&5.uvm_report_object的第一个对象是uvm_report_handler
m_rh该句柄在new函数中实例化,uvm_report_object的所以消息都委派给handler处理。
&6.& virtual function void
uvm_report_info( string id,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string message,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int verbosity = UVM_MEDIUM,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string filename = "",
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int line = 0);
该函数直接调用m_rh.report函数,没有过多内容。函数中的参数在1中也做了解释
m_rh.report(UVM_INFO, get_full_name(), id, message,
verbosity,
&&&&&&&&&&&&&&&
filename, line, this);
&7.& virtual function void
uvm_report_warning( string id,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string message,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int verbosity = UVM_MEDIUM,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string filename = "",
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int line = 0);
该函数直接调用m_rh.report函数,没有过多内容。函数中的参数在1中也做了解释
&8. & virtual function void
uvm_report_error( string id,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string message,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int verbosity = UVM_LOW,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string filename = "",
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int line = 0);
该函数直接调用m_rh.report函数,没有过多内容。函数中的参数在1中也做了解释
&9. & virtual function void
uvm_report_fatal( string id,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string message,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int verbosity = UVM_NONE,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string filename = "",
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int line = 0);
函数直接调用m_rh.report函数,没有过多内容。函数中的参数在1中也做了解释
下列是一组hooks,这些hooks都将在handler中根据具体情况被调用,因为在6-9中report_object被传递给了handler
& & virtual function bit
report_info_hook(
&&&&&&&&&&
string id, string message, int verbosity, string filename, int
virtual function bit report_error_hook(
&&&&&&&&&&
string id, string message, int verbosity, string filename, int
&& & virtual
function bit report_warning_hook(
&&&&&&&&&&
string id, string message, int verbosity, string filename, int
& virtual function bit report_fatal_hook(
&&&&&&&&&&
string id, string message, int verbosity, string filename, int
& virtual function bit report_hook(
&&&&&&&&&&
string id, string message, int verbosity, string filename, int
line);//一个总的hook
11. virtual function void report_header(UVM_FILE file = 0);//打印
version and copyright
information,如果file!=0就打印到对应文件。调用m_rh.report_header(file)
12. virtual function void report_summarize(UVM_FILE file =
0);//打印统计信息,调用m_rh.summarize(file);
13.virtual function void
die();//该函数被report_server调用,如果满足退出条件或者需要采取退出的行动。如果是在component中,那么将只把本仿真phase结束,如果不是component,那么仿真将直接介绍,并嗲用12中的函数显示总结信息
14.function void set_report_verbosity_level (int
verbosity_level);//设定本component的最大level,任何message的verbosity超过这个level都将被忽略。调用m_rh.set_verbosity_level(verbosity_level)实现
15. function void set_report_id_verbosity (string id, int
verbosity);
&& &function
void set_report_severity_id_verbosity (uvm_severity severity,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string id, int verbosity);
&&&&function
void set_report_severity_action (uvm_severity severity,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
uvm_action action);&
&& //对给定的id, severity 或者(id,
severity)对设置verbosity level,都是调用handler中对应的函数来实现
16. function void set_report_id_action (string id, uvm_action
function void set_report_severity_action (uvm_severity
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
uvm_action action);
& function void set_report_severity_id_action
(uvm_severity severity,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string id, uvm_action action);
&& //对给定的id, severity 或者(id,
severity)对设置ACTIONS,在2中介绍,都是调用handler中对应的函数来实现
17.& function void
set_report_severity_override(uvm_severity cur_severity,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
uvm_severity new_severity);//改写14中的设定,调用handler对应函数实现
18. & function void
set_report_severity_id_override(uvm_severity cur_severity,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
string id,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
uvm_severity
new_severity);&//改写(severity,id)对的severity值,调用handler内函数实现
19.function void set_report_default_file ( UVM_FILE
file);//设置默认的输出文件,调用handler相应函数实现
20.function void set_report_severity_file (uvm_severity
severity, UVM_FILE
file););//设置默认的severity级别的消息的输出文件,调用handler相应函数实现
21.function void set_report_id_file (string id, UVM_FILE
file);););//设置默认的ID级别的消息的输出文件,调用handler相应函数实现
22.& function void set_report_severity_id_file
(uvm_severity severity, string id,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
file););););//设置默认的(ID,severity)级别的消息的输出文件,调用handler相应函数实现
23. function int get_report_verbosity_level(uvm_severity
severity=UVM_INFO, string
id="");//返回(ID,severity)的verbosity值,调用handler对应的函数实现
24.function int get_report_action(uvm_severity severity, string
id);//返回(ID,severity)的action值,调用handler对应的函数实现
25.function int get_report_file_handle(uvm_severity severity,
string id);//返回(ID,severity)的report file值,调用handler对应的函数实现
26. function int uvm_report_enabled(int verbosity,
&&&&&&&&&&&&&&&&&&&&&&&&&
uvm_severity severity=UVM_INFO, string
id="");//测试(ID,severity)对,如果他们对应的verbosity比report的verbosity低,或者对应的action=UVM_NO_ACTION那么返回失败,否则返回1
27. function void set_report_max_quit_count(int
max_count);//如果UVM_COUNT
actions达到max_count,将调用die;调用handler的函数实现
28.function void set_report_handler(uvm_report_handler
handler);//m_rh =
29.function uvm_report_handler get_report_handler();// return
30.function void reset_report_//
m_rh.让m_rh达到初始状态
31.function uvm_report_server get_report_server();//return
m_rh.get_server();
32.function void
dump_report_state();//m_rh.dump_state();对handler的内部状态进行一个报告
33.function int uvm_get_max_verbosity();// return
m_rh.m_max_verbosity_
34.protected virtual function uvm_report_object
m_get_report_object();//
F:\zhenyu_liu\my_work\matierals\systemverilog\uvm-1.0p1\uvm-1.0p1\src\base\uvm_report_object.svh
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 请教网家教中心 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信