文章目录
- 1 uvm组件间通信时,TIL的连接需放在哪个uvm phase:
- 2 uvm_agent内定义的active mode是:
- 3 uvm_agent内定义的passive mode是:
- 4 UVM 的callback能够完成:
- 5 UVM对callback进行调试:
- 6 以下哪个可以实现UVM callback机制
- 7 uvm_sequence中的callback包括(在实现之前或者之后进行callback)
- 8 以下哪个uvm_phase是task
- 9 以下哪个属于uvm_run_phase:
- 10 uvm_tb中所有组件的同一个phase是如何执行的
- 11 uvm_tb中如何保证所有组件的run_phase代码被正确执行;
- 12 uvm_tb中所有组件都没有raise objection会导致
- 13 uvm_tb中所有组件drop objection后延时进入下一个phase
- 14 uvm_objection调试机制为
- 15 uvm_tb中所有组件objection过多
- 16 uvm_tb强制停止phase执行使用
- 17 uvm_tb中修改组件phase不按照预定义方式运行
- 18 seqlib当DUV的多个接口需要同步时可以使用
- 19 uvm_sequence中保护某个sequence可以显示独占sequencer
- 20 配置序列库(sequence library)对象时的类型:
- 21 序列库(sequence library)默认的selection_mode是
- 22 RAL_UVM寄存器模型中字段只读属性表示为
- 23 uvm 寄存器模型中字段清零属性表示为
- 24 指定uvm寄存器所在的模块实例的路径用于
- 25 创建UVM RAL 适配器adapter的意义
- 26 UVM寄存器模型读写DUT寄存器需要操作接口interface的是
- 27 UVM寄存器模型读写DUT寄存器不需要操作接口interdace的是
- 28 uvm寄存器模型,设置期望的镜像值
- 29 隐式执行UVM RAL 镜像预测的优点
- 30 下列哪种不是验证方法学
- 31 uvm是基于哪种语言的方法学
- 32 UVM消息中可以由信息等级过滤仿真信息的是
- 33 UVM中UVM_FULL消息输出可以等级+UVM_VERBOSITY设置为:
- 34 UVM中哪种消息不会被+UVM_VERBOSITY设置值过滤
- 35 当UVM_ERROR达到一定数量后,可以由哪个函数设置停止仿真
- 36 UVM组件的phase执行自顶向下执行的是
- 37 UVM agent_class 代理类的作用是
- 38 属于UVM testcase class测试类的功能
- 39 UVM对raise/dropping objection进行调试
- 40 UVM 修改仿真test使用
- 41 UVM修改仿真消息输出等级使用
- 42 以下哪个可以定义为事务
- 43 属于uvm_sequence_item自定义的常见数据处理函数
- 44 UVM通过FLAG设置打开除了pack外其他所有数据初始函数
- 45 uvm在打印数据的数值格式时,配置FLAG为二进制输出
- 46 `uvm_field_*添加动态数组类型
- 47 `uvm_field_*添加固定数组类型
- 48 UVM验证环境中封装了sequencer、driver和monitor的是
- 49 uvm_sequence类的父类是
- 50 UVM中把产生的事务item传输给driver的组件是
- 51 uvm_sequence中随机化创建item并传输事务到驱动器
- 52 sequence执行start()程序时,会回调哪个
- 53 `uvm_do宏定义对变量进行随机化时,需定义
- 54 uvm测试案例(test_base)执行default sequence方式为:
- 55 uvm 测试案例中关闭defaultsequence方式是
- 56 uvm中sequence的body()对创建并约束随机变量
- 57 uvm测试案例中最少可以设置几个default sequence
- 58 uvm设置sequence的优先级或者权重
- 59 uvm的sequence以什么单位进行数据传输
- 60 UVM的sequence机制一次数据传递结束于
- 61 uvm 的sequence机制中反馈rsp的类型是
- 62 uvm在使用uvm_config_db配置DUT的接口时,配置的类型是:
- 63 uvm设置对象的本地配置
- 64 uvm设置对象的全局资源配置是
- 65 uvm在config_db在set/get的数据类型不匹配时,EDA仿真工具会
- 66 UVM对config_db进行调试
- 67 uvm_factory能完成
- 68 如何在不修改TB原始代码的条件下,为组件的实例添加新的功能
- 69 uvm_factory的实现步骤包括
- 70 打印uvm的拓扑结构
- 71 显示检查uvm_factory的替换
- 72 UVM factory全局改变所有的组件类型
- 73 uvm factory改变部分组件类型
- 74 TLM在UVM组件之间的通信使用
- 75 uvm各组件间接口需定义为
- 76 uvm组件间通信时一个发起者对应多个接收者时
- 77 uvm组件之间的同步使用
- 78 uvm组件间通信时,连接关系的终点需定义为
- 79 uvm组件间通信时,接受者在消耗上一个事务前,发起者不能发起下一个事务传输,需定义为
- 80 uvm组件间通信时,以下连接关系错误的是
- 81 uvm_analysis_port自定义的操作函数是
- 82 uvm组件间通信时,发起者接受者中间可以数据缓冲的是
- 83 uvm组件间通信时,以下连接关系错误的是
- 84 简述UVM 的sequence机制
- 85 uvm agent的两种操作模式是什么
- 86 简述uvm主要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。
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自定义的常见数据处理函数
- 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
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: 做最后的检查