1、uvm_component与uvm_object之间的区别和联系?

uvm_component类:是用于构成UVM仿真平台的组件,可组成树形结构,在bulid_phase中创建,之后整个仿真周期内一直存在,可通过interface连接到DUT的端口上或者通过TLM port完成uvm_component间的连接,可通过phase机制控制平台的仿真行为。

uvm_object类:uvm中基本的类,可用于封装数据流(事务),从一个组件(component)产生传递到另一个组件,无phase机制,不能形成树状结构。

2、uvm中的port都有哪些,各有什么区别?

analysis port :可以不连接,也可以连接多个analysis export,以广播的形式传输数据,用于monitor将数据发到reference model和scoreboard。可以通过该analysis port端口调用在另一个组件中实现的方法。

TLM port:必须一对一连接到export上,否则编译会报错,常用于driver和sequencer之间的transaction通信。

3、uvm的factory机制,其优点是什么?

factory是一种设计模式,也叫编程技巧,在使用工厂模式的时候分为三个步骤:
1)注册
在定义一个类的时候使用UVM已经提供的宏进行注册。

`uvm_component_utils(class_type_name)`uvm_object_utils(class_type_name)

2)实例化对象
在对component或object型对象进行实例化的时候要使用静态方法create(),不能采用new()去实例化。
3. 重载override。使用override实现对象的替换
该机制的优点是在不更改平台代码的前提下实现对象的替换,在其内部有两张表,一张注册表,一张替换表,在例化的时候,如果该类替换表中无内容,就用注册表的类进行例化,否则就使用替换表的内容进行例化。

4、function phase和task phase区别?

只有run_phase(及其并行的12个phase)是task phase(消耗仿真时间的phase),其他phase都是function phase(不消耗仿真时间的非阻塞类型phase)。

5、uvm平台中,用例仿真是怎么样开始的怎么样停止的?

phase的启动通过在顶层或者测试用例中调用run_test任务,该任务会首先创建test top,然后调用所有的phase,开始仿真。
在遇到最后一个组件的drops objection时,结束仿真。

6、uvm平台中,config_db机制有什么作用?

config_db机制用于在uvm验证平台间传递参数,通常都是成对出现的,set函数是寄信,get函数是收信,set和get函数的第一个和第二个参数联合起来构成目标路径,第三个参数是目标成员的记号,第四个参数是设置的值或者对象。

7、使用config_db机制,传递函数未成功可能是什么原因导致的?

可能是set和get参数所指的路径不一致,或者第三个参数成员记号不一致导致的。

8、什么是objection机制?

UVM平台通过objection机制控制验证平台的关闭。在每个phase中,UVM会检查 是否objection被提起(raise_objection),如果被提起,那么等待这个objection被撤销(drop_objection)后仿真停止;如果未提起,那么则立马结束当前的phase。
可以简单的将drop_objection理解成finish的替代者,只不过之前必须调用raise_objection。raise_objection语句必须在main_phase中第一个消耗仿真时间的语句之前。如:$display不消耗时间,@(posedge top.clk)需要消耗仿真时间。

9、filed automation机制?

uvm中的field_automation实现了类中的copy,compare,print等基本的操作函数,在使用时,通过uvm_field_utils_begin和uvm_field_utils_end来加到自己写的class中。

10、sequence和sequencer如何建立联系?

通过三种方式实现sequence和sequencer的挂接。
1) 使用start任务

2) 使用uvm_config_db#(uvm_object_wrapper)配置default_sequence

3) 使用uvm_config_db#(uvm_sequence_base)配置default_sequence

11、运行sequence的步骤?
1) 创建一个序列
2) 配置或随机化序列
3)开始一个sequence,使用sequence.start()方法启动序列,start方法需要输入一个指向sequencer的参数

12、m_sequencer句柄?
可以理解为member_sequencer,可以理解为每个sequence中默认都有m_sequencer这一成员变量。m_sequencer 是一个指向执行当前sequence的sequencer句柄。其类型为uvm_sequencer_base,该类m_sequencer是父类,不能直接用子类中定义的各类数据,解决办法就是使用p_sequencer,

13、p_sequencer句柄?
使用 `uvm_declare_p_sequencer(my_sequencer) 宏声明p_sequencer,其本质是在当前sequence中声明了一个成员变量p_sequencer。指向的类型为my_sequencer,即p_sequencer是my_sequencer的句柄

uvm 形式验证_uvm面试题相关推荐

  1. uvm 形式验证_UVM基础

    uvm_component与uvm_object 1. 几乎所有的类都派生于uvm_object,包括uvm_component. uvm_component有两大特性是uvm_object所没有的: ...

  2. uvm 形式验证_UVM中Register的验证方法-Access

    前面两篇文章介绍了ral_model的生成,今天介绍一下如何使用ral_model访问register. 对于register的访问,无外乎读写,但是由于ral model的存在,register的操 ...

  3. uvm 形式验证_IC设计职位详解之“数字验证工程师”就业必学课程

    数字验证处于数字IC设计流程的前端,属于数字IC设计类岗位的一种.在IC设计中,数字验证所占的人数比重是非常多的,很多大公司,数字前端设计工程师与验证工程师的比例已经达到1:3. 数字验证主要分成几种 ...

  4. uvm 形式验证_谈一谈IC flow中的形式验证

    By definition, formal verification is the use of tools that mathematically analyze the space of poss ...

  5. uvm 形式验证_验证平台自动化篇之二:UVM Framework

    原标题:验证平台自动化篇之二:UVM Framework 一个UVM使用者,从新手到精通大致会经历三年的时间,而在经过这三年之后,verifier会有倦怠期.除了不可避免地在80%以上工作处于重复性劳 ...

  6. uvm 形式验证_这究竟属于下一代验证的方法、语言还是工具?||路科验证

    来源:内容由 公众号 路科验证 (ID:Rocker-IC)编辑部 原创,谢谢! 首先声明,便携式激励标准(PortableStimulus Standard, PSS)不是一种方法论,而是一种语言. ...

  7. uvm 形式验证_6.小白学uvm验证 - 寄存器模型

    写过 verilog 硬件代码的同学应该都知道 DUT 会包含很多寄存器,它们是模块间交互的接口,其用途大致可以分为两类: a. 通过读出寄存器当前的值获取 DUT 当前的状态,该类寄存器称为状态寄存 ...

  8. uvm 形式验证_一种基于UVM的总线验证方法与流程

    本发明涉及芯片设计的功能验证领域,尤其是一种基于UVM的总线验证方法. 背景技术: 随着集成电路工艺的不断进步,集成电路的规模和复杂度也在不断地提高,验证的难度也越来越大.在集成电路设计中,验证工作已 ...

  9. 哪一种验证方法最好?形式验证、硬件加速还是动态仿真?

    本文转自:http://www.eetop.cn/blog/html/28/1561828-513396.html 关于最佳的验证方法,最近总能在各种文章中看到.这里希望以一些新的视角来看待这些问题. ...

最新文章

  1. php 几十万数据导出到csv
  2. php ado,常用的php ADODB使用方法集锦
  3. 5.16 Stacks and Queues
  4. Python菜鸟快乐游戏编程_pygame(4)
  5. 1941套站点模版,终生收藏,个个精品
  6. uni 加入图标_uniapp中引入 iconfont
  7. 判断是否包含某个头文件
  8. python中write什么意思_Python中操作文件之write()方法的使用教程
  9. Unity为Mesh指定uv
  10. HTML DOM教程 18-HTML DOM Body 对象
  11. Speex的安装使用
  12. Elasticsearch-SERVICE_UNAVAILABLE/1/state not recovered
  13. robots.txt文件示例
  14. 小程序发布线上接口请求失败,开发者工具请求正常,体验版和开发版要打开调试才可以正常请求解决办法
  15. HTML5的数据存储和数据处理的功能有,浅析 HTML5 数据存储的方法及应用
  16. Cookie和Post模拟登陆
  17. 洛谷 Cantor 表
  18. 一个性能瓶颈分析的过程。
  19. springboot设置首页
  20. 毕业设计-基于DGA 恶意域名的检测算法

热门文章

  1. dell服务器硬盘驱动器,DELL服务器WindowsServer2018系统安装-解决找不到安装在计算机的上地硬盘驱动器安装无法继续,要退出请按F3.doc...
  2. 读入一段文本到 vector 对象,每个单词存储为 vector 中的一个元素。把 vector 对象中每个单词转化为大写字母。输出 vector 对象中转化后的元素,每八个单词为一行输出。
  3. Android开发之通过Android Studio自带插件git创建分支,合并分支等
  4. iis php重定向循环,iis和apache及PHP页面设置301重定向跳转方法
  5. 【转】idea激活搭建授权服务器
  6. 通用Excel文件导出工具类
  7. truncate与delete的区别
  8. 字符串分割 函数实现
  9. 数据持久化------Archiving(归档,解档)
  10. centos6.5搭建流媒体服务器