SV刷题Day 11

689 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路!


  1. 对于systemverilog,下面正确的是: enum {A, B, C, D=5, E, F} list;
  • //A=0,B=1,C=2,D=5,E=6,F=7 枚举类型值在没有显示指定时,默认int从0自加。且label的值也要唯一(value唯一)

image.png 2. Verilog和OOP都具有例化的概念,但是在细节方面却存在一些区别。下面的选项中关于Verilog和OOP中例化的概念说法错误的是()?

A. Verilog中的模块,是在代码被编译的时候例化的
B. System Verilog中的类,是在运行中测试平台需要的时候才被创建
C. System Verilog中的例化是静态的
D. Verilog的顶层模块是不会被显式地例化的

本题答案选C,System Verilog中的例化是动态的。因为在System Verilog中,激励对象不断地被创建并用来驱动DUT,检查结果。最后这些对象所占用地内存可以被释放,以供新的对象使用。

  1. 对于systemverilog 接口interface,描述不正确的是
A. 简化了模块之间的连接
B. 写在块语句中
C. 可以用于实现类和模块之间的通信
D. 可以用 modport 将接口中的信号分组

System Verilog 中引入了接口定义,接口与 module 等价的定义,是要在其他的接口、module 中直接定义,不能写在块语句中,跟 class 是不同的。 接口是将一组线捆绑起来,可以将接口传递给 module。

  • 块语句指把两条以上的语句组合在一起,begin end 和fork join
  1. 对于任何一种新型的验证方法学来讲,分层的测试平台是一个关键的概念。虽然分层似乎会使测试平台变得更加复杂,但它能够把代码分而治之,确实有助于减轻工作负担。下面选项中,关于检验器的定义正确的是?
  • 负责比较来自监视器和记分板的命令 // 检验器checker B. 用于预测事务结果 // scoreboard 计分板
    C. 穿过命令层和信号层,负责监视独立的信号以寻找穿越整个命令的信号变化 // 断言
    D. 负责检测信号的变化,并把这些变化按照命令分组 // 监测器 \
  1. System Verilog中有四个主要的调度区域,分别是:active、observed、reactive、postponed。请问下面哪个选项是observed的行为?
A. 仿真模块中的设计代码
B. 执行System Verilog断言
C. 执行程序中的测试平台部分
D. 为测试平台的输入采样信号

本题答案选B
下面的表格是System Verilog主要的调度区域:

区域名行为
active仿真模块中的设计代码
observed执行System Verilog断言
reactive执行程序中的测试平台部分
postponed为测试平台的输入采样信号
  • 非合并数组初始化是单引号加大括号,合并数组只有大括号 eg:int bb [5]; bb = '{5{8}};

image.png b=0的概率是2/5, n=0的概率是5/8

考察知识点:solve before 的有无对约束概率的影响

  1. 没有solve before 操作符时,所有可能的结果概率都一样

a = 0, b = 0, 1 / 5;

a = 0, b = 1, 1 / 5;

a = 0, b = 2, 1 / 5;

a = 0, b = 3, 1 / 5;

a = 1, b = 0, 1 / 5;

  1. 有solve before 操作符时,有先后顺序

a = 0, b = 0, 1 / 2 * 1 / 4 = 1 / 8;

a = 0, b = 1, 1 / 2 * 1 / 4 = 1 / 8;

a = 0, b = 2, 1 / 2 * 1 / 4 = 1 / 8;

a = 0, b = 3, 1 / 2 * 1 / 4 = 1 / 8;

a = 1, b = 0, 1 / 2 * 1 = 1 / 2;

在有 solve m before n的情况下,先求解m,m取1的概率是1/2,此时n一定是0.