• 搜索

  • 移动端

    APP下载
  • 学习中心

【验证训练营】互动知识点、题目和解答
2023-11-16 09:46:21261浏览
小周老师作业: 数字IC验证必备知识点


01验证基础的定义,验证策略,验证方法

答案:验证的定义:确保该模块能够成功地完成预定的任务。

验证策略:白盒验证(主要针对模块级验证),灰盒验证(子系统级),黑盒验证(系统及验证)

验证方法:逻辑仿真(功能验证),FPGA原型验证(硬件仿真),形式验证(formal 验证 )等。


02验证计划的编写,验证点的提取

答案:首先对spec进行划分,从寄存器,接口,协议,基础功能点等划分清楚;

需要验证寄存器的读写属性,默认值检查等。


03如何确保验证的模块是否验证完全

答案:①从功能方面考虑,验证完spec上提取的所有功能点,交叉验证;

②从性能方面考虑,该模块支持多少M频率的时钟等;

③从接口方面考虑,模块内涉及的协议是否都验证;

④从时序方面考虑,clk和reset是否正常等;

⑤从场景方面考虑,正常场景,异常场景的处理等。


04SV语法,class类的三要素,数据类型,面向对象OOP

答案:class的三要素:多态,封装,继承。


05随机约束中的权重分布,条件约束,slove…before约束,约束块的控制

此知识点见绿皮书137页。


06三种基础过程语句的区分:fork_join,fork_join_any,fork_join_none

答案:fork join是中间所有进程同时开始,必须所有进程执行完再接着执行;

fork join_any是中间所有进程同时开始,至少有一个进程执行完再接着执行;

fork join_none是中间所有进程同时开始,不必等待就可以接着执行其他进程了。


07

基础的bus总线协议的了解,例如:用SV语言描述apb总线的读写行为

答案:最常用的BUS总线有AXI,AHB,APB等。

interface automatic apb_if#(int ADDR_WIDTH=8, int DATA_WIDTH=32) (input wire pclk);


logic                        preset_b;

logic [ADDR_WIDTH-1:0]    paddr;

logic                     psel;

logic                     penable;

logic                     pwrite;

logic [DATA_WIDTH-1:0]     pwdata;

logic [DATA_WIDTH-1:0]     prdata;

logic                     pclk_reqen;

logic                     pready;

logic                     pclk_req;


logic                     pslverr;


task automatic write (input [ADDR_WIDTH-1:0] addr, input[DATA_WIDTH-1:0]  data);

@(posedge pclk);

#1;

psel=1;

pwdata=data;

paddr=addr;

pwrite=1;

penable=0;

@(posedge pclk);

#1;

penable=1;

wait(pready==1'b1);

@(posedge pclk);

#1;

psel=0;

pwdata=data;

paddr=addr;

pwrite=0;

penable=0;

endtask


task automatic read(input [ADDR_WIDTH-1:0] addr, output[DATA_WIDTH-1:0] data);

@(posedge pclk);

#1;

psel=1;

paddr=addr;

pwrite=0;

penable=0;

@(posedge pclk);

#1;

penable=1;

wait(pready==1'b1);

@(posedge pclk);

data=prdata;

#1;

psel=0;

paddr=addr;

pwrite=0;

penable=0;

endtask


endinterface



黄老师作业:



01验证工程师常用哪些EDA工具?

vcs,verdi,dve等


02请画出分层验证平台结构图


03代码覆盖率和功能覆盖率的关系是怎么样的?

功能覆盖率主要是针对spec文档中功能点的覆盖检测 ,而code覆盖率主要是针对RTL设计代码的运行完备度的体现,

其包括行覆盖率、条件覆盖率、FSM覆盖率、跳转覆盖率、分支覆盖率(只要仿真就可以,看看DUT的哪些代码没有动,如果有一部分代码一直没动,看一下是不是case没写到)。

功能覆盖率和代码覆盖率两者缺一不可,功能覆盖率表示着代设计是否具备这些功能,代码覆盖率表示我们的测试是否完备,代码是否冗余。

当功能覆盖率高而代码覆盖率低时,表示covergroup是不是写少了,case写少了;或者代码冗余。

当功能覆盖率很低而代码覆盖率高时,表示代码设计是不是全面,功能点遗漏;covergroup写的是不是冗余了。只有当两者覆盖率都高的时候才表明我们验证的大部分是可靠的。

代码覆盖率很难达到100%,一般情况下达到90%多已经非常不错了,如果有一部分代码没有被触动到,需要有经验的验证工程师去分析,如果确实没啥问题,就可以签字通过了。


04task和function的异同点有哪些?

task可有多个输入和输出,function中只有一个输出,且必须有一个返回值;

task中可包含时序逻辑,耗时;function不可以耗时;

task中可包含task和function,function中不能包含task。


05'include和import有什么差别?

`include将文件中所有文本原样插入包含的文件中。这是一个预处理语句,`include在import之前执行。

import不会复制文本内容。但是import可package中内容引入import语句所在的作用域。


06什么是静态变量?什么是动态变量?

静态变量:通常上需要保存的值需要被定义为静态变量。

动态变量:变量的存储区在需要时由软件工具动态地分配,在不需要时被释放。

由static和autostatic决定定义。


07各列举4个二值逻辑和四值逻辑,各列举4个有符号类型和无符号类型

二值逻辑:byte,shortint,int,bit,longint等

四值逻辑:integer,reg,logic,net_type(wire,tri)等

有符号类型:byte,int,longint,shortint等

无符号类型:bit,logic,reg,net_type(wire,tri)等



7天训练营作业


01此次实训营中老师用到了哪些软件工具?

答案:VCS是Synopsys公司的软件,是编译型verilog模拟器。Verdi是Synopsys公司的软件,但是属于收购过来的,用于打开仿真后产生的FSDB波形文件,用于看信号的波形,调试。


02此次实训营中你们是否收集了代码覆盖率,通过什么收集的,代码覆盖率包含哪些部分?


答案:此次收集了代码覆盖率,通过Makefile脚本中第30行代码收集的代码覆盖率,代码覆盖率包含了line,toggle,condition,fsm,branch这5种覆盖率综合得分得到的百分比覆盖率。


03在systemverilog语言中task和function的最明显差异?

答案:最明显差异是task可以耗时可以不耗时,而function必须不耗时间。


04老师在收集覆盖率时加了-full64这个的意义什么?

答案:-full64是支持64位模式运行,若运行平台为64位x86,加上这个选项。


05此次训练营老师介绍了rtl级前仿真的流程,大概流程是什么样勒?

答案:理解DUT→制定验证策略方法→提取验证点/搭建平台→据验证点编写测试用例进行验证跑用例进行验证→检查覆盖率评估验证效果。


06在Makefile脚本中,是否支持systemverilog语言的?

答案:不支持


07在Makefile脚本中,tb.f和rtl.f是什么作用

答案:.f<filename>指定文件列表的文件名,rtl.f文件中可包括设计代码文件(.v文件)的路径名称,和编译选项参数;tb.f文件中包含环境代码文件(.sv文件)的路径名称。



公司总部

电话:199 2141 1380
地址:上海市浦东区碧波路690号张江微电子港7号楼

合肥分站

电话:199 2141 1380
地址:安徽省合肥市高新区创新大道2800号创新产业园二期E1栋

产品链接

移知官网:www.eeeknow.com
教育培训:edu.eeeknow.com
求职招聘:job.eeeknow.com

友情链接

Arm
  • 在线客服
  • 就业老师