SystemVerilog学习指南

SystemVerilog学习指南

社蕙 67 2023-12-08

SystemVerilog 学习

小寄巧

并发启动多个索引进程

为了避免枚举列出所有线程,然后再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?)相关的知识
  • 功耗包括什么,如何节省功耗
  • 跨时钟域设计相关知识,面临的问题

在自己的项目上,必须认真准备一套回答,最显然的是“你做了什么优化?”,如果是去面试设计岗,那么很明显,讲解自己在嵌入式那边做了什么,意义是不大的,必须不要脸地将硬件部分占为己有。

要脸是活不下去的,在这个世界上。