文章目录
- 前言
- 一、单选题
- 1.Verilog和OOP都具有例化的概念,但是在细节方面却存在一些区别。下面的选项中关于Verilog和OOP中例化的概念说法错误的是()。
- 2、在system verilog中,关于类(class)的说法正确的是:
- 3、关于以下UVM的说法错误的是?
- 4、在编写System Verilog断言的时候,要表示在当前时钟沿检查到a=1后,检测接下来连续4个时钟内b=1。以下写法正确的是:
- 5、使用system verilog编写如下代码,下列选项正确的是:
- 6、在某个类中,有如下定义,下列选项描述正确的是:
- 7、System verilog常用于编写testbench。关于以下两个赋值语句(略去其他语句),说法正确的是:
- 二、问答题
- 1、在同步电路中,什么建立时间和保持时间?怎么样计算同步电路的最大速度?
- 2、简述SV或者UVM验证平台的基本框架图
- 3、针对某组接口(可以以APB slave接口为例)进行测试点分解(即验证特性提取)时,可以从哪些方面进行分解提取,以保证验证全面性。
- 4、代码覆盖率和功能覆盖率有什么区别?简述你对代码覆盖率和功能覆盖率的理解。
- 5、简述interface和clock blocking的优点
- 6、列举随机测试时,你通常考虑的随机化对象有哪些?
- 7、简述定宽数组、动态数组、队列、关联数组的特点。
- 8、请简述:在UVM验证平台运行过程中,build_phase,connect_phase,run_phase的功能和典型应用?
- 9、简述UVM工厂机制的意义
- 10、阅读程序,写出输出结果
- 11、采用UVM或SV编写一个简单的apb接口的driver。
前言
笔试题型:单选 + 问答题
笔试平台:牛客(手机+电脑监控)
笔试时间:1h
一、单选题
1.Verilog和OOP都具有例化的概念,但是在细节方面却存在一些区别。下面的选项中关于Verilog和OOP中例化的概念说法错误的是()。
A. Verilog中的例化是动态的
B. System Verilog类在使用前必须先例化
C. verilog的实例名只可以指向一个实例
D. System Verilog句柄可以指向很多对象,当然一次只能指向一个
2、在system verilog中,关于类(class)的说法正确的是:
A. 类只能在program,package中定义,不能在module中定义
B. 类只能在program中使用,不能在module中使用
C. 类中的程序称为方法,也就是在类的作用域内定义的内部task或者function
D. 使用constant声明静态变量
3、关于以下UVM的说法错误的是?
A. uvm_object是UVM中最基本的类,几乎所有的类都继承自uvm_object
B. UVM真正的树根是一个称为uvm_top,uvm_top是一个全局变量,它是uvm_root唯一的一个实例
C. 可以通过get_full_name()函数获取不同component的路径
D. UVM_FATAL不会自动结束仿真
4、在编写System Verilog断言的时候,要表示在当前时钟沿检查到a=1后,检测接下来连续4个时钟内b=1。以下写法正确的是:
A. property p;
@(posedge clk)a |-> ##1 b[*4];
endproperty
B. property p;
@(posedge clk) a |-> ##[0:3] b;
endproperty
C. property p;
@(posedge clk) a l-> ##1 b[=4];
endproperty
D. property p;
@(posedge clk)a/-> ##[1:4] b;
endproperty
5、使用system verilog编写如下代码,下列选项正确的是:
integer p,q;
class A;rand integer x;constraint c{x<0;}
endclassclass B extends A;constraint c{x>0;}
endclassinitial beginA cla_a = new();B cla_b = new();cla_a.randomize();cla_b.randomize();p= cla_a.x;q = cla_b.x;end
A. q和p的值都大于0
B. q的值大于0,p的值小于0
C. 约束条件冲突,不能完成随机化
D. q.p的值都小于0
6、在某个类中,有如下定义,下列选项描述正确的是:
rand int len;
rand bit mode;constraint c{mode == 1 -> len dist {10:=1,20:=2};mode == 0 -> len dist {10:=2,20:=1};solve mode before len;
constraint mode
A. len取10的概率是1/2;
B. len取10的概率是1/3;
C. len取10的概率是1/4;
D. len取10的概率是1;
7、System verilog常用于编写testbench。关于以下两个赋值语句(略去其他语句),说法正确的是:
语句一:
wire a,b,c;
initial
#10 a = b+C;
语句二:
wire a,b,c;
initial
a = #10 b+C;
A. 两个语句是相同的,没有差别
B. #10a = b+c;表示延迟10个时钟单位后,将0时刻的b+c的值赋予a,
C. a=#10 b+c;表示延迟10个时钟单位后,将10时刻的b+c的值赋予a。
D. a= #10 b+c;表示延迟10个时钟单位后,将0时刻的b+c的值赋予a。
二、问答题
1、在同步电路中,什么建立时间和保持时间?怎么样计算同步电路的最大速度?
2、简述SV或者UVM验证平台的基本框架图
3、针对某组接口(可以以APB slave接口为例)进行测试点分解(即验证特性提取)时,可以从哪些方面进行分解提取,以保证验证全面性。
4、代码覆盖率和功能覆盖率有什么区别?简述你对代码覆盖率和功能覆盖率的理解。
5、简述interface和clock blocking的优点
6、列举随机测试时,你通常考虑的随机化对象有哪些?
7、简述定宽数组、动态数组、队列、关联数组的特点。
8、请简述:在UVM验证平台运行过程中,build_phase,connect_phase,run_phase的功能和典型应用?
9、简述UVM工厂机制的意义
10、阅读程序,写出输出结果
class transaction;int id;static int count=O;function new();id = count++;endfunction
endclassclass bad_transaction extends transaction;function new();super.new();endfunction
endclassmodule test;initial begintransaction t1,t2;bad_transaction bad_t1,bad_t2; //step (1)t1=new();$display("t1.id=%0d,t1.count=%0d",t1.id,t1.count); //step (2)t2=new();$display("t2. id=%0d,t2.count=%0d" ,t2.id,t2.count); //step(3)bad_t1=new();$display("bad_t1.id=%0d,bad_t1.count=%0d".bad_t1.id.bad_t1.count); //step(4)bad_t2=new();$display("bad_t2.id=%0d,bad_t2.count=%0d",bad_t2.id,bad_t2.count);l/step(5)t2=bad_t1;$display(""t2.id=%0d,t2.count=%0d",t2.id,t2.count); //step (6)bad_t2= t1;$display("bad_t2.id=%0d,bad_t2.count=%0d",bad_t2.id.bad_t2.count);end
endmodule
11、采用UVM或SV编写一个简单的apb接口的driver。
注:DUT作为APB slave,编写一个apb master driver。其中,pclk/paddr/pwrite/psel/penable/pwdata作为DUT的输入,pready/prdata为DUT输出。