好久没更新面试题目了,不少同学在后台催更,这不就来了~
共150道验证高频面试题整理~含答案(文末可领取全部题目)
Q1.illegal_bins和ignore_bins命中分别会怎么样?命中是否会计入覆盖率统计
illegal_bins 表示非法的bin,如果采样命中会报错;
ignore_bins 表示忽略的bin,如果采样命中直接忽略,并不计入覆盖率统计。
Q2.负数采用二进制如何表示
负数采用二进制的补码形式表示,最高位的0表示正,1表示负;
例如-1,1的原码为0001,反码为1110,补码为1111,,1111表示-1.
Q3.4值逻辑变量赋值给二值逻辑变量时,x和z对应什么值
对应0
Q4.类中this是什么
this表示指向本身的指针,通过this可以绑定方法和对象,可以区分方法体的形参和对象成员,this只能作为实参传递,this的生命周期从调用方法开始存在,当方法结束生命周期也随之结束,this只能应用于动态生命周期,不能应用于static中。
Q5.子类中super是什么?
super主要用于在子类中访问父类的属性和方法。
Q6.在IC验证中,我们一般对哪些内容进行随机化
器件配置:通过寄存器和系统信号;
环境配置:随机化验证环境,例如:合理的时钟和外部反馈信号;
原始输入数据:例如数据包的长度,宽度,数据发送的顺序;
延时:握手信号之间的时序关系,例如:vaild和ready,req和ack之间的时序关系;
异常协议
Q7.通过函数返回数组有哪些方法
可以通过for/foreach遍历数组的方法打印返回
Q8.什么是clocking block的skew
在clocking block中,实际上指定了默认的input偏差和output偏差,只不过这个偏差在宏观的时间刻度上观察不到,对输入性质的信号指定的默认采样时间是1step,对于输出性质的信号指定的默认驱动时间为0,其中1step是一个较为特殊的时间单位,一般指输入信号在采样信号事件发生之前的输入信号的稳定值。
可以认为1step实际采样时刻发生在上一时间槽的最后时刻,1step不像ns、ps等之类可以用来设置设计的时间精度和时间单位,它指定了当前采样值来自于当前时间槽的pre-pone区,0则表示在采样事件发生后立刻将对应的值驱动到输出端口,与1step不同的是,该时刻的采样发生在采样事件发生的当前时间槽的Observed Region。
另外,也可以自定义,例如:default input 1ns output 1ns
Q9.并发断言的主要组成有哪些
并发断言的用法的话,主要是有三个层次:
第一是布尔表达式,布尔表达式是组成断言的最小单元,断言可以由多个逻辑事件组成,这些逻辑事件可以是简单的布尔表达式.在SVA中,信号或事件可以使用常用的操作符,如:&&, ||, !, ^,&等;
第二个序列sequence编写,sequence是布尔表达式更高一层的单元,一个sequence中可以包含若干个布尔表达式,同时在sequence中可以使用一些新的操作符,如 ## 、重复操作符、序列操作符;
第三个是属性property的编写,property是比sequence更高一层的单元,也是构成断言最常用的模块,其中最重要的性质是可以在property中使用蕴含操作符(|-> |=>);
Q10.如何检查随机化是否成功
可以通过立即断言检查随机化是否成功
例如 assert(p.randomize()) 来检查p句柄指向的实例是否实例化成功;
Q11.什么时候randomize()失败
1.变量对象没有声明rand或randc;
2.constraint 有冲突,无法随机出值;
Q12.黑盒验证、灰盒验证、白盒验证
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
Q13.竞争与冒险是什么
竞争: 信号由于不同路径传输到达某一汇合点的时间有先有后的现象。(当一个门的输入有两个或两个以上的变量发生改变时,由于这些变量是经过不同路径产生的,使得他们的状态改变的时刻有先有后,这种时差引起的现象称为竞争。)
冒险: 由于竞争现象所引起的电路输出发生瞬间错误(产生干扰脉冲)的现象。
Q14.虚接口有什么好处
interface是连接硬件的,其是硬件语言;但对于验证来说,其描述语言往往是软件语言,interface无法在基于OOP的测试平台中实例化,因此我们无法通过interface把激励传送到DUT中;为了解决这个问题,引入了virtual interface,使得基于OOP的验证环境可以通过虚接口把激励传送给DUT。
Q15.接口的使用有什么优势
将有关信号封装在同一个接口中, 对于设计和验证环境都便于维护和使用。 如果你需要新添加信号, 只需要在接口中定义这个信号, 而在使用这个接口的模块或者验证环境中做出相应修改。
由于接口既可以在硬件世界(module)中使用,又可以在软件世界(class)中使用,interface作为SV中唯—的硬件和软件环境的媒介交互,它的地位不可取代。
接口由于可以例化的特性, 使得对于多组相同的总线, 在例化和使用时变得更加灵活,不仅使得代码变得简洁, 也更易于验证环境的管理和维护。
篇幅限制,IC验证面试题目就不一一罗列了,大家如果需要面试题目,以及想了解简历上需要注意的问题,都可以跟工程师先了解一下(所有面试题目可领)
这里放个入口:IC验证面试题目