FPGA学员3
通信工程转验证,咱俩背景差不多。笔试里SystemVerilog确实考得细,UVM是框架,但SV是地基。除了你已经提到的随机约束(constraint)、覆盖率(covergroup)和进程同步(fork...join),我根据去年秋招和今年提前批的笔试经验,给你列几个高频且容易掉坑的点:
1. 线程通信和事件:event的触发(->)和等待(@ 或 wait),特别是event被多次触发后的行为,以及wait_order的用法。经常出选择题或判断对错。
2. 随机化:不光是写constraint,重点考rand、randc的区别,pre_randomize和post_randomize的用法,还有randomize() with 内联约束的优先级。有时候会给你一段有冲突约束的代码,问随机化是否成功、值是多少。
3. 覆盖率:covergroup的采样触发方式(sample() 或 event),option.per_instance的含义,还有交叉覆盖率(cross)的写法,如何避免冗余的交叉bin。
4. 数组和队列:动态数组([])、队列([$])、关联数组([type])的方法,比如delete、size、find_index with。喜欢考数组遍历的效率和正确写法。
5. 接口(interface)和时钟块(clocking):这个和验证强相关,笔试里常考modport的用法,clocking块里input/output的skew,以及如何避免竞争。
复习建议:别只看书,去刷一下牛客网或CSDN上那些大厂的真题,很多题就是直接考语法细节。比如“在SV中,下面哪个选项不能用于进程同步?”这种。把绿皮《SystemVerilog验证》第2、5、6、7章再过一遍,重点看例子和练习题。
