文章目录
- 前言
-
- 1、driver和sequencer之间的通信
- 2、master agent、slave agent和active agent、passive agent的区别
- 3、layer sequence/层次化sequence介绍
- 4、sequence机制
-
- (1)p_sequencer和m_sequencer区别
- (2)lock和grab区别
- (3)sequence如何失效
- (4)sequence的三种启动方式
- (5)sequence和sequencer的区别
- (6)sequence的种类
- (7)starting_phase
- (8)uvm_transaction和uvm_seq_item的关系
- (9)启动sequence的步骤
- (10)介绍virtual sequence和virtual sequencer
- (11)uvm_do宏所作的工作
- (12)uvm_do和uvm_do_on,有哪些宏
- (13)virtual sequence和hierarchical sequence的区别
- (14)sequence的仲裁算法
- 5、数据类型
-
- (1)logic和bit的区别
- (2)常见数据类型
- (3)SV中要引入Verilog中没有的二值逻辑的原因
- (4)结构体和联合体
- (5)队列/动态数组/关联数组/枚举的基本操作
- (6)动态数组创建大小为5后,可以删除某些元素吗
- (7)深拷贝和浅拷贝区别
- (8)压缩数组和非压缩数组
- (9)单引号初始化:动态数组、结构体
- (10)SV相比Verilog的区别
- (11)数据的访问类型local/public/protected
- (12)四值逻辑变量赋值给二值逻辑变量时x和z分别对应什么
- (13)mailbox和队列的比较
- (14)new( )和new[ ]的区别
- (15)copy和clone的区别
- (16)reg和wire的区别,logic和wire的区别
- (17)动态转换和静态转换
- (18)枚举类型变量赋值给整型变量,但是整型变量不能直接赋值给枚举类型
前言
汇总整理在面试过程中常见的问题,如果都能回答下来,那么面试肯定不成问题的
1、driver和sequencer之间的通信
(1)如何确保driver驱动多个sequence的时候,driver返回的响应会给正确的sequence
sequence ID用于区分不同的sequence,在driver返回响应的时候通过rsp.set_id_info(req).先拷贝id信息,再返回给sequencer,sequencer才知道返回给那个sequence。
driver中去seq_item_port.put_response(req); seq_item_port.item_done(); 等效于seq_item_port.item_done(req);
sequence中要去get_response
(2)get next item、try next item、get的区别
get next item
:阻塞调用,会一直等待transaction,最后返回指向这个transaction的指针
try next item
:非阻塞调用,如果没有transaction,会返回一个空指针
get:阻塞调用,隐式地完成了握手,不需要显示调用item_done()