数字IC验证高频面试问题整理附答案(二)

近日后台有同学私信还想要验证的面试题目,这不就来了~

Q16.权重约束中”:=”和”: /”的区别

: =操作符表示值范围内的每一个值的权重是相同的,比如[1:3]:=40,表示1,2,3取到的概率为40/120;

:/操作符表示权重要平均分到值范围内的每一个值,比如[1:3]:/60,表示1,2,3取到的概率为20/60。

Q17.rand和randc区别

rand: 表示随机,比如有56个数,每次的随机概率都是1/56;
randc: 表示周期性随机,比如56个数,第一次随机的概率为1/56,第二次随机的概率为1/55,以此类推。

Q18.break、continue和returen的含义用法

break 语句结束整个循环。
continue 立即结束本次循环,继续执行下一次循环。
return 语句会终止函数的执行并返回函数的值(如果有返回值的话)。

Q19.function中return语句执行之后,function里剩下的代码语句还会执行吗

return之后,function里剩下的语句不能执行,其是终止函数的执行,并返回函数的值。

Q20.触发器和锁存器的区别

触发器: 时钟触发,受时钟控制,只有在时钟触发时才采样当前的输入,产生输出。

锁存器: 由电平触发,非同步控制。在使能信号有效时锁存器相当于通路,在使能信号无效时锁存器保持输出状态。触发器由时钟沿触发,同步控制。

锁存器对输入电平敏感,受布线延迟影响较大,很难保证输出没有毛刺产生;触发器则不易产生毛刺。

Q21.为什么要使用两级触发器进行同步

使用二级触发器进行同步可以极大的避免亚稳态的出现:

至于为什么“打两拍”可以减少亚稳态,我觉得根本原因是在于寄存器是一个双稳态器件,只有0和1两种稳定的状态。在绝大多数时候,第一级Flop的Q端,即使出现亚稳态,也会在一个时钟周期内稳定下来,这样第二级Flop所采到的就是一个稳定的值。“打两拍”就是利用这一点,切断了亚稳态的传播。

Q22.setup和hold违例分别是什么

setup time是指在时钟有效沿之前,数据输入端信号必须保持稳定的最短时间。
hold time是指在时钟有效沿之后,数据输入端信号必须保持稳定的最短时间。

hold time时序检查确保新数据不会在触发器稳定输出初始数据之前过早到达D端而覆盖其初始数据。
[图片]

总结为一句话:当前待传输的数据,相对于Capture edge来说,必须早来(setup time)晚走(hold time)。

Q23.SVA中and、intersect、or、throughout、$past如何使用

and:可以按照逻辑与的方式组合两个序列,当两个序列都匹配时,整个属性成功。

示例:
property p;
sequence_a and sequence_b;
endproperty
注意】sequence_a和sequence_b的检查起始点必须一样,但是两者结束的结束点可以不一样,整个属性的成功点以两个sequence中最后一个成功的sequence的匹配点为属性的成功点。
or:可以按照逻辑或的方式组合两个序列,当两个序列有一个匹配时,整个属性成功。
示例:
property p;
sequence_a or sequence_b;
endproperty
注意】sequence_a和sequence_b的检查起始点必须一样,但是两者结束的结束点可以不一样,整个属性的成功点取决于最早匹配成功的sequence,只要两个序列有一个匹配成功,整个属性就认为匹配。

intersect两侧的表达式都是sequence,不能是property,使用intersect时需要确保其两侧的sequence必须同时开始,且当两个sequence最终同时匹配时才认为两个序列的intersect匹配,即两个sequence匹配的长度必须相同,intersect操作符和and操作符很相似,但是and没有要求两个序列最终匹配时同时匹配。

在SVA中有时需要某些信号在一个序列的检查过程中一直保持一个状态,此时就可以使用throughout操作符,当这些信号的状态发生不期望的变化时,序列的检查即认为失败。

past主要用于检查当前表达式前一个时钟周期(如果不指定number_of_ticks,默认指向前一个时钟周期)值是否为真,如果位真则$past返回为真。其格式如下:
past(expression[,number_of_ticks]);
其中number_of_ticks可以指定检查当前时刻之前number_of_ticks个周期的采样值.

Q24.SVA中”->”和”=>”区别

@ (posedge clk) a |-> b 断定clk上升沿后,a事件"开始发生",同时,b事件发生
@ (posedge clk) a |=> b 断定clk上升沿后,a事件开始发生,下一个时钟沿后,b事件开始发生。

Q25.如何关闭约束

根据不同需要,来选择使能哪些约束块,禁止哪些约束块的要求,可以使用内建的constrai nt_mode()函数打开或者关闭多个约束块;rand_mode()函数打开或者关闭随机变量。

Q26.deep copy和shallow copy区别

如果拷贝的对象里的元素只有值,没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不会影响原有对象,新对象和原对象完全分离开。

如果拷贝的对象里的元素包含引用(像一个列表里储存着另一个列表,存的就是另一个列表的引用),那浅拷贝和深拷贝是不同的,浅拷贝虽然将原有对象复制一份,但是依然保存的是引用,所以对新对象里的引用里的值进行修改,依然会改变原对象里的列表的值,新对象和原对象完全分离开并没有完全分离开。而深拷贝则不同,它会将原对象里的引用也新创建一个,即新建一个列表,然后放的是新列表的引用,这样就可以将新对象和原对象完全分离开。

Q27.队列常用的方法有哪些

队列常用的使用方法:insert,delete, push_back和pop_front
Push插入,pop取出
Front前边,back后边

Q28.local和protected区别

类中如果没有指明访问类型,那么成员的默认类型是public,子类和外部均可以访问成员。
如果指明了访问类型是protected,那么只有该类或者子类可以访问成员,而外部无法访问。
如果指明了访问类型是local,那么只有该类可以访问成员,子类和外部均无法访问。

Q29.常用的debug方法有哪些

1.打印显示
2.设置断点
3.波形分析

Q30.亚稳态的危害

亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。
亚稳态违背了时序,无法在规定的时间内达到稳定,且亚稳态具有传输功能,会传递给后一级的触发器,从而导致电路出错。亚稳态最后会稳定下来,但是所需的时间较长。

共150道验证高频面试题整理(含答案)
在这里插入图片描述

篇幅限制,IC验证面试题目就不一一罗列了,大家如果需要面试题目,以及想了解简历上需要注意的问题,或者面试前需要准备的东西,都可以跟工程师先了解一下(所有面试题目可领)

这里放个入口:IC验证面试题目

猜你喜欢

转载自blog.csdn.net/coachip/article/details/132025886