SystemVerilog 学习
- 目前来看最好的学习SV知识的网站是ChipVerify。
- 一个14年的老网站,意外的代码非常全面https://www.asic-world.com/systemverilog/coverage4.html
- 一个VLSI设计的网站,更适合搜索一些帖子https://vlsi.pro/sva-basics-bind/
小寄巧
并发启动多个索引进程
为了避免枚举列出所有线程,然后再fork...join
起来,可以采用fork...join_none
然后wait fork
。
int lst[5] = '{1,2,3,4,5};
for(int i=0; i < 5; i++ ) begin
fork
automatic int j = i;
begin
$display ("%t ps, start thread %d", $time, j);
#lst[j];
$display("%t ps, end of thread %d", $time,j);
end
join_none
end
wait fork;
最重要的一行是automatic int j=i
,这样在每一个线程被启动之前,都有一个自动变量保存for循环里的一个值。
在网站https://dvtalk.me/2020/12/06/about-systemverilog-process-and-fork/给出了更多的情况,能适应更多的任务。
覆盖率
覆盖率介绍:SystemVerilog(7):覆盖率 - 博客园
之前没有完全理解代码覆盖率和功能覆盖率的含义,现在理解一点了。
被问到的问题!
在这里放一下24年1月在英伟达面试实习生的时候还记得的一些问题,不全都是验证,但是,总结起来看,必须完整的去复习相关领域的知识,如果是设计,那么电路底层原理也是很重要的,代码同样重要,必须做到的是完全熟悉,依赖IDE这种事情还是等到了工作再说,面试的时候有问必答,不会就必须说不会。
- clock gating
- glitch,时钟毛刺怎么消除
- 门电路的底层原理,FlipFlop、Latch等
- 从器件角度解释Tsu、Thold
- 同步复位和异步复位的区别,利弊
- Coverage相关知识
- python正则表达式
- tcl(好像是读tickle?)相关的知识
- 功耗包括什么,如何节省功耗
- 跨时钟域设计相关知识,面临的问题
在自己的项目上,必须认真准备一套回答,最显然的是“你做了什么优化?”,如果是去面试设计岗,那么很明显,讲解自己在嵌入式那边做了什么,意义是不大的,必须不要脸地将硬件部分占为己有。
要脸是活不下去的,在这个世界上。