UVM_知识点测试

文章目录

1 uvm组件间通信时,TIL的连接需放在哪个uvm phase:

  • build:创建并配置验证平台的架构;
  • connect
  • run:运行仿真
  • report:报告测试案例的仿真结果

2 uvm_agent内定义的active mode是:

  • 被动操作,仅仅实例化了监视器和配置参数:passive mode
  • 模拟DUV的系统接口器件,例化了driver,sequencer和monitor
  • 包含配置信息和其他参数;
  • 通过TLM连接各个组件并通信;

3 uvm_agent内定义的passive mode是:

  • 被动操作,仅仅实例化了监视器和配置参数
  • 模拟DUV的系统接口器件,例化了driver,sequencer和monitor
  • 包含配置信息和其他参数;
  • 通过TLM连接各个组件并通信;

4 UVM 的callback能够完成:

  • 修改UVM组件的操作;
  • UVM组件注入错误;
  • UVM组件间通信;
  • UVM组件收集覆盖率;

5 UVM对callback进行调试:

  • +UVM_CB_TRACE_ON;
  • +UVM_VERBOSITY;
  • +UVM_CONFIG_DB_TRACE;
  • +UVM_OBJECTION_TRACE

6 以下哪个可以实现UVM callback机制

  • uvm_sequence_item;
  • uvm_sequence;
  • uvm_driver;
  • uvm_tlm;

7 uvm_sequence中的callback包括(在实现之前或者之后进行callback)

  • pre_start();
  • pre_do();
  • pre_body();
  • body();

8 以下哪个uvm_phase是task

  • build;
  • connect;
  • run;
  • check

9 以下哪个属于uvm_run_phase:

  • reset;
  • connect;
  • configure;
  • main;

10 uvm_tb中所有组件的同一个phase是如何执行的

  • 串行;
  • 并行;
  • 随机
  • 不运行

11 uvm_tb中如何保证所有组件的run_phase代码被正确执行;

  • 调用机制;
  • for循环;
  • objection机制;
  • 不运行;

12 uvm_tb中所有组件都没有raise objection会导致

  • 顺序执行run_phase完毕;
  • 并行执行run_phase完毕;
  • 跳过run_phase,执行下一个phase;
  • 不运行;

13 uvm_tb中所有组件drop objection后延时进入下一个phase

  • jump phase;phase 跳跃
  • set_drain_time;
  • raise_objection;
  • drop_objection

14 uvm_objection调试机制为

  • +UVM_CB_TRACE_ON;
  • +UVM_VERBOSITY;
  • +UVM_CONFIG_DB_TRACE;
  • +UVM_OBJECTION_TRACE;

15 uvm_tb中所有组件objection过多

  • 仿真出现错误;
  • 影响仿真速度;
  • 跳过run_phase,执行下一个phase;
  • 提高仿真效率;

16 uvm_tb强制停止phase执行使用

  • +UVM_TIMEOUT;
  • +UVM_VERBOSITY;
  • +UVM_TESTNAME;
  • +UVM_OBJECTION_TRACE;

17 uvm_tb中修改组件phase不按照预定义方式运行

  • jump_phase
  • set_drain_time
  • raise_objection
  • drop_objection

18 seqlib当DUV的多个接口需要同步时可以使用

  • sequence;
  • virtual sequence
  • factory
  • callback

19 uvm_sequence中保护某个sequence可以显示独占sequencer

  • fork_join;
  • begin_end;
  • wait;
  • grab ungrab;

20 配置序列库(sequence library)对象时的类型:

  • transaction_seq_lib_base;序列库类
  • uvm_sequence_base;
  • uvm_objection_wrapper;配置序列的对象类型
  • uvm_sequence;

21 序列库(sequence library)默认的selection_mode是

  • UVM_SEQ_LIB_RAND;
  • UVM_SEQ_LIB_RANDC;
  • UVM_SEQ_LIB_ITEM;随机周期,没有序列
  • UVM_SEQ_LIB_USER;自定义序列

22 RAL_UVM寄存器模型中字段只读属性表示为

  • RW
  • RO
  • WO
  • RC

23 uvm 寄存器模型中字段清零属性表示为

  • RW
  • RO
  • WO
  • RC

24 指定uvm寄存器所在的模块实例的路径用于

  • frontdoor;
  • backdoor;
  • set;
  • get;

25 创建UVM RAL 适配器adapter的意义

  • 运行寄存器的sequence;
  • 后门读写DUT寄存器;
  • 将RAL中的事务数据转换成agent/sequence 的总线事务;
  • 验证所有寄存器的操作属性

26 UVM寄存器模型读写DUT寄存器需要操作接口interface的是

  • frontdoor;
  • backdoor;
  • set;
  • get;

27 UVM寄存器模型读写DUT寄存器不需要操作接口interdace的是

  • frontdoor;
  • backdoor;
  • set;
  • get;

28 uvm寄存器模型,设置期望的镜像值

  • frontdoor;
  • backdoor;
  • set;
  • get;

29 隐式执行UVM RAL 镜像预测的优点

  • 镜像值的更新时序不一定是精确到时钟预期;
  • DUV内部的改写可能不会影响镜像值;
  • 加快读写DUT寄存器速度;
  • 自动调用读写操作更新镜像值,不需要验证工程师自己编写代码。

30 下列哪种不是验证方法学

  • VMM;
  • OVM;
  • UVM;
  • JAVA

31 uvm是基于哪种语言的方法学

  • C
  • verilog
  • systemverilog
  • vhdl

32 UVM消息中可以由信息等级过滤仿真信息的是

  • `uvm_fatal
  • `uvm_error
  • `uvm_warning
  • `uvm_info

33 UVM中UVM_FULL消息输出可以等级+UVM_VERBOSITY设置为:

  • UVM_DEBUG
  • UVM_HIGH
  • UVM_MEDIUM
  • UVM_NONE

34 UVM中哪种消息不会被+UVM_VERBOSITY设置值过滤

  • UVM_DEBUG
  • UVM_HIGH
  • UVM_MEDIUM
  • UVM_NONE

35 当UVM_ERROR达到一定数量后,可以由哪个函数设置停止仿真

  • set_max_quit_count
  • get_max_quit_count:返回数量
  • uvm_set_verbosity
  • uvm_set_report

36 UVM组件的phase执行自顶向下执行的是

  • build
  • connect
  • run
  • report

37 UVM agent_class 代理类的作用是

  • 封装计分板和覆盖率:enc里面封装
  • 封装验证环境
  • 封装序列器、驱动器、和监视器以及接口
  • 封装激励结构:sequence里面封装

38 属于UVM testcase class测试类的功能

  • 封装了激励结构;
  • 配置和修改测试案例;
  • 通过TLM连接各个组件并通信
  • 在UVM组件之间进行通信

39 UVM对raise/dropping objection进行调试

  • +UVM_TESTNAME
  • +UVM_VERBOSITY
  • +UVM_DISPLAY
  • +UVM_OBJECTION_TRACE

40 UVM 修改仿真test使用

  • +UVM_TESTNAME
  • +UVM_VERBOSITY
  • +UVM_DISPLAY
  • +UVM_OBJECTION_TRACE

41 UVM修改仿真消息输出等级使用

  • +UVM_TESTNAME
  • +UVM_VERBOSITY
  • +UVM_DISPLAY
  • +UVM_OBJECTION_TRACE

42 以下哪个可以定义为事务

  • SOC
  • GPU
  • APB总线
  • clock

43 属于uvm_sequence_item自定义的常见数据处理函数

  • print
  • clone
  • copy
  • display

44 UVM通过FLAG设置打开除了pack外其他所有数据初始函数

  • UVM_ALL_ON | UVM_NOPACK
  • UVM_ALL_ON | UVM_PACK
  • UVM_ALL_ON
  • UVM_NOPACK

45 uvm在打印数据的数值格式时,配置FLAG为二进制输出

  • UVM_OCT
  • UVM_BIN
  • UVM_DEC
  • UVM_HEX

46 `uvm_field_*添加动态数组类型

  • `uvm_field_int
  • `uvm_field_sarray*(
  • `uvm_field_array_*
  • \uvm_field_queue_*(

47 `uvm_field_*添加固定数组类型

  • `uvm_field_int
  • `uvm_field_sarray*(
  • `uvm_field_array_*
  • \uvm_field_queue_*(

48 UVM验证环境中封装了sequencer、driver和monitor的是

  • uvm_test
  • uvm_env
  • uvm_agent
  • uvm_scoreboard

49 uvm_sequence类的父类是

  • uvm_sequence_item
  • uvm_component
  • uvm_config_db
  • uvm_sequencer

50 UVM中把产生的事务item传输给driver的组件是

  • uvm_sequence
  • uvm_sequencer
  • uvm_driver
  • uvm_agent

51 uvm_sequence中随机化创建item并传输事务到驱动器

  • body()
  • `uvm_create
  • `uvm_do
  • `uvm_send

52 sequence执行start()程序时,会回调哪个

  • pre_start
  • pos_tbody
  • start
  • pre_body
  • body
  • post_body
  • print

53 `uvm_do宏定义对变量进行随机化时,需定义

  • randc
  • rand
  • logic
  • int

54 uvm测试案例(test_base)执行default sequence方式为:

  • uvm_config_db #(uvm_sequence)::get(this, “*.seqr.main_phase”,“default sequence”, sequence::get_type());
  • uvm_config_db #(uvm_object_wrapper)::get(this, “*.seqr.main_phase”,“default sequence”, sequence::get_type());
  • uvm_config_db #(uvm_sequence)::set(this, “*.seqr.main_phase”,“default sequence”, sequence::get_type());
  • uvm_config_db #(uvm_object_wrapper)::set(this, “*.seqr.main_phase”,“default sequence”, sequence::get_type());

55 uvm 测试案例中关闭defaultsequence方式是

  • uvm_config_db #(uvm_sequence)::get(this, “*.seqr.main_phase”,“default sequence”, null);
  • uvm_config_db #(uvm_object_wrapper)::get(this, “*.seqr.main_phase”,“default sequence”, null);
  • uvm_config_db #(uvm_sequence)::set(this, “*.seqr.main_phase”,“default sequence”, null);
  • uvm_config_db #(uvm_object_wrapper)::set(this, “*.seqr.main_phase”,“default sequence”, null);

56 uvm中sequence的body()对创建并约束随机变量

  • `uvm_do();
  • `uvm_do_with();
  • `uvm_create();:只创建,不随机,无约束
  • `uvm_start();

57 uvm测试案例中最少可以设置几个default sequence

  • 0;
  • 1;
  • 2;
  • 3;

58 uvm设置sequence的优先级或者权重

  • `uvm_do();
  • `uvm_do_with();
  • `uvm_do_pri();
  • `uvm_create();

59 uvm的sequence以什么单位进行数据传输

  • 信号;
  • 变量;
  • 事务;
  • interface;

60 UVM的sequence机制一次数据传递结束于

  • driver拿到产生的事务
  • sequence把事务传递给driver
  • sequence启动body()
  • sequence执行finish_item()

61 uvm 的sequence机制中反馈rsp的类型是

  • uvm_driver
  • uvm_sequencer
  • uvm_sequence
  • uvm_sequence_item

62 uvm在使用uvm_config_db配置DUT的接口时,配置的类型是:

  • interface
  • virtual interface
  • uvm_sequence_item
  • run_test

63 uvm设置对象的本地配置

  • uvm_config_db
  • uvm_resourece_db(全局设置
  • uvm_fifo
  • uvm_factory

64 uvm设置对象的全局资源配置是

  • uvm_config_db
  • uvm_resourece_db
  • uvm_fifo
  • uvm_factory

65 uvm在config_db在set/get的数据类型不匹配时,EDA仿真工具会

  • 编译错误;
  • 仿真错误;
  • warning;
  • 不报错;

66 UVM对config_db进行调试

  • +UVM_TESTNAME
  • +UVM_VERBOSITY
  • +UVM_CONFIG_DB_TRACE
  • +UVM_OBJECTION_TRACE

67 uvm_factory能完成

  • 构造通用的功能;
  • 插入错误条件;
  • 为全局配置特殊的对象,控制对象的位置;
  • 获取资源配置信息

68 如何在不修改TB原始代码的条件下,为组件的实例添加新的功能

  • uvm_config_db
  • uvm_sequence
  • uvm_factory
  • uvm_component

69 uvm_factory的实现步骤包括

  • 工厂的基础结构和寄存机制`uvm_object_utils(transaction_type);
  • 通过静态的代理类程序创建对象class_name,obj = class_name::type_id::create();
  • 类的覆盖set_type_override_by_type();
  • 在uvm组件中内嵌callback函数或任务;

70 打印uvm的拓扑结构

  • uvm_top.print_topology()
  • uvm_report()
  • uvm_print()
  • uvm_test()

71 显示检查uvm_factory的替换

  • uvm_factory.print()
  • factory.print()
  • uvm_callbacks::display()
  • uvm_print()

72 UVM factory全局改变所有的组件类型

  • set_type_override_by_type
  • set_inst_override_by_type
  • set_type_override_by_inst
  • set_inst_override_by_inst

73 uvm factory改变部分组件类型

  • set_type_override_by_type
  • set_inst_override_by_type
  • set_type_override_by_inst
  • set_inst_override_by_inst

74 TLM在UVM组件之间的通信使用

  • write
  • fifo
  • interface
  • TLM port

75 uvm各组件间接口需定义为

  • interface
  • virtual interface
  • logic
  • TLM port

76 uvm组件间通信时一个发起者对应多个接收者时

  • put port
  • get oort
  • uvm fifo
  • analysis port

77 uvm组件之间的同步使用

  • wire
  • mailbox
  • uvm_event
  • tlm port

78 uvm组件间通信时,连接关系的终点需定义为

  • port
  • export
  • imp
  • fifo

79 uvm组件间通信时,接受者在消耗上一个事务前,发起者不能发起下一个事务传输,需定义为

  • nonblocking
  • blocking
  • imp
  • get

80 uvm组件间通信时,以下连接关系错误的是

  • port -> port
  • port -> export
  • port -> imp
  • export -> port

81 uvm_analysis_port自定义的操作函数是

  • put
  • get
  • port
  • write

82 uvm组件间通信时,发起者接受者中间可以数据缓冲的是

  • put port
  • get port
  • uvm fifo
  • analysis port

83 uvm组件间通信时,以下连接关系错误的是

  • port -> imp
  • port -> export
  • export -> imp
  • imp -> port

84 简述UVM 的sequence机制

  • 在整个UVM验证平台中,sequence负责transaction的产生,并通过sequence发送给driver。

85 uvm agent的两种操作模式是什么

  • active mode:模拟DUT的系统接口器件,例化了driver,sequencer,monitor;
  • passive mode:仅仅实例化了monitor和配置参数

86 简述uvm主要phase和作用

common phase

  • 🔺build_phase:                     创建并配置验证平台的架构
  • 🔺connect_phase:                建立UVM验证平台各个组件之间的连接关系
  • end_of_elaboration_phase:    检查验证平台架构的正确性
  • 🔺start_of_simulation_phase:在产生激励阶段设置配置信息
  • 🔺run_phase:                         运行仿真
  • extract_phase:                        从不同的节点提取数据,进行对比验证
  • check_phase:                         在验证环境中检查任何意外情况
  • report_phase:                         报告测试案例的仿真结果
  • final_phase:                            停止循环,结束仿真

uvm phase

  • pre_reset_phase:                    对DUV复位前,设置或等待复位条件
  • 🔺reset_phase:                       对DUV进行复位,其中复位信号有效
  • post_reset_phase:                  复位完成之后,等待DUV进入初始化的条件
  • pre_configure_phase:             在配置DUV之前,设置或等待配置的条件
  • configure_phase:                    配置DUV的参数信息
  • post_configure_phase:           等待DUV进入配置的状态
  • pre_main_phase:                   启动DUV执行核心流程前,设置或等待执行条件
  • 🔺main_phase:                      对DUV进行验证:输入激励,检查响应
  • post_main_phase:                 通常无任何操作
  • pre_shutdown_phase:           通常无任何操作
  • shutdown_phase:                  处理验证平台中的数据
  • post_shutdown_phase:         做最后的检查

87 使用成千上百的种子跑每一个随机化测试案例是有重大意义的。

88 `uvm_warning不可以用UVM信息等级过滤掉而不用打印到仿真日志中。

89 uvm sequence不是属于uvm的一个组件。

90 `uvm_do宏定义支持randc类型的随机变量

91 在factory中必须使用create()创建transaction的对象

92 uvm中如果objection没有drop掉,不会等待会退出仿真。

93 virtual sequence中不可以定义自己的sequence item。

  • 19
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值