您当前的位置: 首页 > 

lu-ming.xyz

暂无认证

  • 0浏览

    0关注

    115博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

lu-ming.xyz 发布时间:2022-06-11 22:34:05 ,浏览量:0

为了能够在做题目的过程中学习到需要的知识,对每道题知识参考或者知识详情都做了详细的说明。方便后续复习。欢迎对文中的解答批评指正。

Rivision 时间修改内容2023.01.27修改 单选3 题中保持关系的错误

文章目录
  • Rivision
  • 单选题(共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:《SOC设计方法与实现(第3版)》10.4.3 有说明的,采样周期为一个或多个周期。 而《高级ASIC芯片综合》8.2.1 移位周期和捕获周期 说:需要一个时钟周期执行捕获操作。

D: 扫描方式:

  • 全扫描:在设计中的每个寄存器都用具有扫描功能的寄存器代替。
  • 部分扫描:电路中一部分采用了扫描测试结构,而一部分没有。

DFT没有经验,答案不确定,但我倾向于选B

2.下列关于芯片中电迁移的描述错误的一个是:
  • A.用电迁移会降低芯片寿命
  • B.电迁移会使芯片性能退化
  • C.增加导线宽度可以修复电迁移违例
  • B.增加导线间距可以修复电迁移违例

不会做

3.下列会直接影响到芯片工作频率的一个违例是:
  • A.建立时间违例
  • 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​ 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的关系时( )
  • A.f大于等于2fs
  • 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结尾的文件
  • B.mv master.map master1.map命今的作用是把master.map文件复制成master1.map
  • 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.综合工具越来越强大,所以对于一些不可综合的逻辑也没有问题
  • C.综合工具一般需要和Formal工具配套使用
  • 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);
end
endmodule
  • A.0x1_0000_0000
  • B.0x2_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。

info0 = ~is_legal; 主语逻辑非是!,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;
end
assign info0 = ~is_legal;
assign info1 = ~is_legal1;

结果确实得到了info0 = 16’hfff8; info1 = 16’h0000;也就是说,取反之前确实会有类似符号位拓展的操作。当为无符号数时补0,当为有符号数时补符号位。is_legal1 = 3’b111;取反之前补1,再取反就得到16’h0000。

info0 = {info0, addr}; 这个没什么好说的,{info0, addr}为66位,取低34位得到 34’h20000000a。

info0 = {info0, 0}; 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采用格雷码的原因是为了提高电路速度
  • D.单比特信号打两拍后可以避免亚稳态的发生

A:静态配置信号初始化时配置,不需要跨时钟域。 B:需要的,快到慢和慢到快处理不一样。不同频率比处理也不一样。 C:异步FIFO格雷码,相邻数值只有1位发生翻转,引起亚稳态的概率更小。 D:亚稳态无法消除,只能降低发生概率。

5.以下哪一种门电路属于通用逻辑门(可以组合搭建出任何逻辑电路)
  • A.AND
  • B.NAND
  • C.OR
  • D.NOR
  • E.XOR

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

关注
打赏
1655639048
查看更多评论
立即登录/注册

微信扫码登录

0.0382s