为了在做题题的过程中学习所需的知识,详细说明了每个问题的知识参考或知识细节。后续复习。欢迎批评和纠正文章中的答案。
文章目录
- 单选题(共11题)
-
-
-
- 1.下列关于stuck-at故障模型描述的错误之一是:
- 2.下列关于芯片中电迁移的描述错误的一个是:
- 3.一个直接影响芯片工作频率的违规行为是:
- 4.从奈奎斯特的采样定理可以看出,实信号采样后可以不失真还原,采样频率f最高频率的信号fs( )
- 5.以下是对Cache-主存-辅存三级存储系统中各级存储器的功能、速度和容量描述是完全正确的
- 6.关于linux命令,以下说法是错误的:
- 7.关于综合工具,以下说法是正确的:
- 8.以下程序输出值为
- 9.DUT有一个寄存器"DJI_ID_HEAD",该DUT通过APB总线端口与SoC互联,"DJI_ID_HEAD"寄存器的描述如下:请问DUT的APB有多少有效的数据传输可以在总线端口看到?
- 10.假设:
- 11.systemverilog句子,已知:int arr[2][ ][ ];arr[0] = new[4];以下操作合法: ( )
-
-
- 多选题(共5道,每道5分,共25分)
-
-
-
- 1.下列属于DFT故障模型为:
- 2.芯片中时钟树综合质量评价指标如下:
- 3.以下是降低芯片静态压降的方法:
- 4.关于异步处理,以下说法是正确的
- 5.以下哪一种门电路属于通用逻辑门(可以组合搭建出任何逻辑电路)
-
-
题目来源网络地址。
单选题(共11题)
1.下列关于stuck-at故障模型描述的错误之一是:
- A.逻辑上的组合Fault点可以合并故障
- B.用于覆盖内部时序故障
- C.正常Capture阶段只有1个Pulse
- D.对于Full-scan设计可以达到很高的故障覆盖率
A:可测性设计学习笔记 2.3 常见的故障模型有哪些?有记录:不同端口的故障可能等效,测试矢量集时可以合并故障。
B:组合逻辑是基于故障模型的测试分析。时间电路测试可以通过扫描测试来解决。选项模糊。
C:《SOC10设计方法与实现(第3版).4.3 如有说明,采样周期为一个或多个周期。 而《高级ASIC芯片综合》8.2. 移位周期和捕获周期 说:捕获操作需要一个时钟周期。
D: 扫描方
- 全扫描:设计中的每个寄存器都被具有扫描功能的寄存器所取代。
- 部分扫描:部分电路采用扫描测试结构,部分没有。
DFT没有经验,答案不确定,但我倾向于选择B
2.芯片中电迁移的以下错误描述之一是:
- A.电迁会降低芯片的使用寿命
- B.迁移会退化芯片的性能
- C.增加导线宽度可修复电迁移违规
- B.增加导线间距可修复电迁移违规
不会做
3.一个直接影响芯片工作频率的违规行为是:
- B.保持间距违规
- C.违反最大转换时间
- D.最大限度规行为
A: 我们知道建立关系: t l a u n c h t c l k 2 q t l o g i c t s e t u p < t c a p t u r e t c y c l e t_{launch} t_{clk2q} t_{logic} t_{setup}< t_{capture} t_{cycle} tlaunch+tclk2q+tlogic+tsetup<tcapture+tcycle B: 保持关系:与工作频率无关 t l a u n c h + t c l k 2 q + t l o g i c < t c a p t u r e + t h o l d t_{launch} + t_{clk2q} + t_{logic} < t_{capture} + t_{hold} tlaunch+tclk2q+tlogic<tcapture+thold
设计规则检查约束(set_max_transition、set_max_capacitance)
C: 转换时间就是电路的阻容模型充放电的时间,会导致时序的建立时间不满足从而影响时钟,不是直接原因。 D: 最大扇出是直接作用与 Synthesis 的约束,直接影响到芯片工作频率。
4.从奈奎斯特采样定理得出,要使实信号采样后能够不失真还原,采样频率f与信号最高频率fs的关系时( )
- B.f小于等于2fs
- C.f大于等于fs
- D.f小于等于fs
奈奎斯特采样定理:采样频率大于等于两倍信号最高频率。
5.以下是对Cache-主存-辅存三级存储系统中各级存储器的作用,速度,容量的描述,其中完全正确的是
A.主存用于存放CPU正在执行的程序,速度慢,容量较大
B.Cache于存放CPU当前访问频繁的程序和数据、速度快、容量小
C.辅存用于存放需要联机保存但暂不执行的程序和数据,速度快,容量极大
D.加大Cache的容量可以使主存能够存放更多的程序和数据
参考资料:计算机组成原理与系统结构 第2版_包健 计算机系统中存储器设计的目标:以较小成本使存储器容量尽可能大,且与 CPU 速度匹配。
三级存储系统:(寄存器)- Cache - 主存 - 辅助存储器
Cache:容量级别为 几兆,访问时间是寄存器访问时间的几倍。Cache 中存储频繁使用的指令和数据。
主存:即内存,存储当前正在执行的程序和处理的数据。
辅助存储器:即硬盘,容量大速度慢。
A:有点不严谨,快慢是相对的。 C:辅助存储器速度慢。 D:略
6.关于linux命令,下面说法错误的是:
- A.find . -name “*.txt”命令会列出当前目录及子目录下所有以txt结尾的文件
- C.要解压缩一个名字为test.tar.gz的文件可以使用命令tar-xzvf test.tar.gz
- D.linux令行中输入cmd1&&cmd2(其中cmd1及cmd2是两个命令),如果cmd1执行失败了,cmd2就不会执行
A:find命令 B:move 命令(mv) C:tape archive命令(tar) D:命令执行顺序 cmd1 && cmd2 :cmd1成功(返回0)后cmd2才能被执行。cmd1 || cmd2 :cmd1失败(返回1)就执行cmd2。(cmd1;cmd2;…):执行多个命令。
7.关于综合工具,以下说法正确的是:
- A.一般为了综合效率,综合工具使用越新越好
- B.综合工具越来越强大,所以对于一些不可综合的逻辑也没有问题
- D.综合工具使用一个固定版本效果最好
答案不确定 个人理解,综合、实现和后端不能分割来,综合工具的版本需要配合其他条件选择。
形式验证的目标是验证 RTL与RTL、门级网表与RTL、两个门级网表之间的对应关系是否正确。综合是将RTL转换成门级网表的过程。
8.运行以下程序输出的值是
int addr = 32'ha;bit is_legal;bit [33:0] info0;initial begin if (addr[0]) is_legal = 0; else is_legal = 1; info0 = ~is_legal; info0 = {
info0, addr}; info0 = {
info0, 0}; $display("0x%0h", info0);endendmodule
- A.0x1_0000_0000
- C.0x14
网上的资料把{}写成(),怀疑自己 😃
这题考的是位宽拓展。Verilog-2005 3.5.1 Integer constants 中就有提到 Automatic left padding 问题,总结起来也很简单:
- 大位宽给小位宽赋值,将高位截断只取低位。
- 小位宽给大位宽赋值,无符号数补0,有符号数符号位拓展,不定值拓展x或z。
至于 SystemVerilog 的数据类型 SystemVerilog-2005 4.3.3 Signed and unsigned data types中就有说:byte, shortint, int, integer, 和 longint 默认为 signed。bit, reg,和 logic 默认 unsigned。
主语逻辑非是!,Bitwise 一元运算符是~。答案的关键点就在这,很有意思的是,info0 = ~is_legal,得到info0 = 34’h3fffffffe。而info0 = !is_legal,得到info0 = 34’h0。
按正常理解,bit is_legal 作为无符号数,不应该拓展0吗?
再进行其他实验,换成无符号的 reg 类型,结果也是如此。而且 is_legal = 0;info0 = ~is_legal,得到 info0 = 34’h3ffffffff。info0 = ~1’b1,依然得到info0 = 34’h3fffffffe。
猜想:Verilog-2005 标准上并没提到这个点。猜想是 bitwise 取反底层逻辑先进行符号位拓展后的32bit进行取反,然后截取?
仿真:
reg [2:0] is_legal;reg signed [2:0] is_legal1;wire [15:0] info0; wire [15:0] info1;initial begin is_legal = 3'b111; is_legal1 = 3'b111;endassign info0 = ~is_legal;assign info1 = ~is_legal1;
结果确实得到了info0 = 16’hfff8; info1 = 16’h0000;也就是说,取反之前确实会有类似符号位拓展的操作。当为无符号数时补0,当为有符号数时补符号位。is_legal1 = 3’b111;取反之前补1,再取反就得到16’h0000。
这个没什么好说的,{info0, addr}为66位,取低34位得到 34’h20000000a。
Illegal concatenation of an unsized constant. Will treat it as a 32-bit value. {info0, 0}为66位,取低34位得到 34’h200000000。
%0h:Verilog-2005 17.1.1.3 Size of displayed data 说:可以通过在%字符和表示基数的字母之间插入一个零来重写显示数据的自动大小。即省略前面无效的0
9.DUT中有一个寄存器"DJI_ID_HEAD",该DUT通过APB总线端口与SoC互联,"DJI_ID_HEAD"寄存器的描述如下:请问在DUT的APB总线端口上能看到多少笔有效的数据传输?
Name:DJI_ID_HEAD Address Offset:0x0 |—bits—|—Name—|—R/W—|—Reset Value—| |[31:16] | dji_id | RO |0xA55A | |[15:00] | data | RW |0x0 | 通过寄存器模型对“DJI_ID_HEAD”寄存器进⾏如下程序所⽰的读写访问: uvm_status_e status; uvm_reg_data_t rvalue; RGM.DJI_ID_HEAD.read(status,rvalue,UVM_FRONTDOOR); RGM.DJI_ID_HEAD.write(status,16’hFFAA,UVM_FRONTDOOR); RGM.DJI_ID_HEAD.data.get(); RGM.DJI_ID_HEAD.data.set(16’hFFAA); RGM.DJI_ID_HEAD.update(status); RGM.DJI_ID_HEAD.reset(); RGM.DJI_ID_HEAD.data.set(16’hFFAA); RGM.DJI_ID_HEAD.update(status); RGM.DJI_ID_HEAD.read(status,rvalue,UVM_FRONTDOOR); RGM.DJI_ID_HEAD.mirror(status);
请问在DUT的APB总线端口上能看到多少笔有效的数据传输?
- A.6
- B.7
- C.8
- D.9
验证还不会,以后再说吧
10.假设:
class trans_ext extends trans_base; int a = 0;endclass
以下代码可以正确打印出a值的选项是:
- A.
trans_ext tr_e1; trans_ext tr_e2; trans_base tr_b; tr_e1 = new();tr_b = tr_e1;$cast(tr_e2, tr_b); $display("a is %0d", tr_e2.a);
- B.
trans_ext tr_e1; trans_ext tr_e2; trans_base tr_b; tr_e1 = new();tr_b = tr_e1;$cast(tr_b, tr_e2); $display("a is %0d", tr_e2.a);
- C.
trans_ext tr_e1; trans_ext tr_e2; trans_base tr_b; tr_e1 = new();tr_b = tr_e1;$cast(tr_e2, tr_e1); $display("a is% 0d", tr_e2.a);
- D.
trans_ext tr_e1; trans_ext tr_e2; trans_base tr_b; tr_e1 = new();tr_b = tr_e1;$cast(tr_e1, tr_e2); $display("a is%60d", tr_e2.a);
知识点:动态转换函数 $cast SystemVerilog-2005 7.Classes 说明了:
- 将子类(subclass)变量赋值给继承树中更高级别类的变量总是合法的。
- 直接将超类(superclass)变量赋值给其子类的变量是不合法的。
- 但是,如果指向给定子类的对象,则将父类句柄赋给子类变量是合法的。
为了检查赋值是否合法,使用了动态强制转换函数 c a s t ( ) 。 当 与 对 象 句 柄 一 起 使 用 时 , cast()。当与对象句柄一起使用时, cast()。当与对象句柄一起使用时,cast()检查source_expr的层次结构树(父类和子类),看看它是否包含了dest_handle的类。如果是,则$cast()执行赋值操作。
$cast( singular dest_handle, singular source_handle );
tr_b = tr_e1; // 子对象给父类赋值。
A:$cast(tr_e2,tr_b); // tr_b已经没有 a 属性了。 B:tr_e2 没有初始化空间。 C:先将tr_e1 赋值给 tr_e2,就可以输出tr_e2.a了。 D:tr_e2 没有初始化空间。
11.systemverilog语句,已知:int arr[2][ ][ ];arr[0] = new[4];以下哪个操作是合法的: ( )
- A. arr[0][0] = new[2];
- B. arr[1][0] = new[2];
- C. arr[0][ ] = new[2];
- D. arr[0][1][1] = new[2];
知识点是多维数组的索引。 参考:SystemVerilog-2005 5.6.1 New[]:内建(built-in)函数new分配存储空间,并将新分配的数组元素初始化为默认值或可选参数提供的值。 new [ expression ] [ ( expression ) ]
:[ expression ]内是数组的元素个数。
arr[0] = new[4]; 为第二维分配元素数为4。
B:arr[1]未分配存储空间。不能直接使用。 C:语法错误,声明的时候才可以这样写int arr[][] = new[2];
D:arr[0][1][1] 是一个确切的元素,New表达式只能分配给类/covergroup句柄/动态数组。
多选题(共5道,每道5分,共25分)
1.下列属于DFT故障模型的是:
- A.stuck-at
- B.transition-delay
- C.brige
- D.IDDQ
可测性设计学习笔记 2.3 常见的故障模型有哪些?
A:固定型故障(Stuck At Fault,SAF)。假设电路或系统某个信号永久固定为逻辑0或逻辑1,简记为SA0(Stuck At 0)和SA1(Stuck At 1) B:跳变延迟故障(Transition Delay Fault,TF)指电路无法在规定时间内由 0 跳变到 1 或从 1 跳变到 0 的故障。 C:桥接故障(Bridging Faults)桥接故障指的是节点间电路的短路故障。 D:基于静态电流(IDDQ)的测试??? IDDT测试是一种从供电回路,通过观察被测电路所吸取的瞬间动态电流来检测故障的一种方法,被认为可以检测出一些经电压测试和IDDQ测试所不能检测的故障(像开路故障(stuck-open fault)、冗余故障(redundant fault)和时延故障(delay fault)等)。
2.下列属于芯片中时钟树综合质量评价指标的有:
- [] A.时钟网络延时
- B.时钟信息偏差
- C.时钟周期
- D.时钟树功耗
后端不会写
3.下列属于降低芯片静态压降的方法有:
- A.增大电源网络密度
- B.减小封装电感
- C.增加芯片内电容
- D.降低工作效率
不会写
4.关于异步处理,以下说法正确的是
A:静态配置信号初始化时配置,不需要跨时钟域。 B:需要的,快到慢和慢到快处理不一样。不同频率比处理也不一样。 C:异步FIFO格雷码,相邻数值只有1位发生翻转,引起亚稳态的概率更小。 D:亚稳态无法消除,只能降低发生概率。
5.以下哪一种门电路属于通用逻辑门(可以组合搭建出任何逻辑电路)
- A.AND
- B.NAND
- C.OR
- D.NOR
- E.XOR
用与非门和或非门可以实现其他基本门电路。进而实现任何逻辑电路。