资讯详情

【题目精刷】2022校招大疆创新-数字芯片开发工程师A卷

为了在做题题的过程中学习所需的知识,详细说明了每个问题的知识参考或知识细节。后续复习。欢迎批评和纠正文章中的答案。

文章目录

  • 单选题(共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

用与非门和或非门可以实现其他基本门电路。进而实现任何逻辑电路。


标签: 电容放电快慢与什么有关

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台