数字IC笔试千题解--单选题篇(一)

 前言

出笔试题汇总,是为了总结秋招可能遇到的问题,做题不是目的,在做题的过程中发现自己的漏洞,巩固基础才是目的。

所有题目结果和解释由笔者给出,答案主观性较强,若有错误欢迎评论区指出,资料整理来自于“数字IC打工人”等数字IC相关公众号,牛客网等网站真题、网络笔试真题及面经抄录。

        保持更新(2023.9.25)文章内含 单选题270道、多选题106道、填空题16道、判断题17道、简答题72道、逻辑推理题3道、C语言 python 脚本编程题8道
在本文中笔者提供的所有代码,都写成了API,可直接copy到软件编译、运行、给出结果。  

        题目较多,即使有前人解析和强大的ChatGPT,也难免出错,若发现错误,欢迎评论区讨论。

        另外夹带一点私货~: 这一刻,我感觉一定要给.....
数字IC笔试千题解总字数已到达15w+,网页码字卡顿情况严重,故将其分割成多个部分以方便维护,链接如下:
数字IC笔试千题解--单选题篇(一)
数字IC笔试千题解--单选题篇(二)
​​​​​​数字IC笔试千题解--多选题篇(三)​​​​​​
数字IC笔试千题解--填空题篇(四)
数字IC笔试千题解--判断题篇(五)
数字IC笔试千题解--简答题篇(六)
数字IC笔试千题解--逻辑推理篇(七)
​​​​​​​​​​​​​​ 数字IC笔试千题解--编程&&脚本篇(八)


 单选题

1.以下关于 System Verilog 的描述, 正确的是

A.sv 中可以用 logic 代替 Verilog 中的 wire 和 reg 类型
B.sv 中, 定义成 reg 的信号会被综合成触发器
C.sv 中的 function 语言不可被综合
D.其他都不正确
E.sv 是提供给验证使用的, 因此其不能被综合

答案:A,定义成组合逻辑的reg不会综合成触发器;funciton 可以被综合。


2.UVM 层次化结构中, 最顶层的部件类型是

A. uvm_test
B. uvm_root
C. uvm_top
D. uvm_component

答案:B,uvm_root是验证平台中所有UVM components的“隐含”的top-level和phase控制器。用户不需要直接实例化uvm_root,UVM会自动创建uvm_root单一实例,用户可以使用全局变量(uvm_pkg范围内)uvm_top来访问uvm_root,可参考下图左上角红色部分注解。


3.数字信号上采样时, 一般需要添加什么样的滤波器, 完成功能为?

A. 高通, 抗混叠滤波
B. 低通, 抗周期延拓
C. 低通, 抗混叠滤波
D. 高通, 抗周期延拓

答案:B,上采样时,会出现很多高频噪声,需要对其进行低通滤波,也因为上采样的原理是在原来序列两个点之间插入L个0,最后上采样后周期是变短了,所以是抗周期延拓。如果是下采样,那也是添加低通滤波器,下采样过后,周期被延拓了,导致信号在频谱上有交叠,所以就需要滤波将混叠部分去除,若题目为下采样,则选C。

参考内容:数字信号上下采样对频谱影响,以及如何添加相应滤波器_信号重采样对频域估计的影响_ddatalent的博客-CSDN博客 和 数字信号中的上采样和下采样_信号上采样和下采样_ReCclay的博客-CSDN博客


4.下列属于异步总线的是?

A. SPI
B. USB
C. UART
D. IIC

普及一点概念:

同步通信:一方发送,另一方应答,否则不进行下一次传输(带时钟信号传输)。

异步通信:一方发送,不考虑另一方是否收到,直接进行下一次传输(不带时钟同步信号)。

单工:单向通信,只能由一方发送数据,另一方接收。

半双工:双方都可发送数据,但同一时刻只能一方发送,一方接收。

全双工:双方都可发送数据,并且可同时发送数据。

(1) SPI——同步通信;串行通信;全双工;主从通信(某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机)。

(2) USB——同步通信;通用串行总线。

(3) UART——Universal Asynchronous Receiver/Transmitter,通用异步收发器;异步通信;串行通信;全双工; 对等总线,没有仲裁机制,所以只能挂载两个同时收发数据的设备,双方都可以发送和接收。

(4) I2C——同步通信;串行通信;半双工;主从通信(总线上支持多个主机和多个从机,总线上任何能够进行发送/接收数据的设备都可以占领总线。当然,任意时间点上只能存在一个主控。多主控,主器件同时争夺总线控制权时,可仲裁)。

答案:C


5.() 电路的逻辑功能特点是, 任意时刻的输出仅仅取决于该时刻的输入, 与电路原来的状态无关

A. 静态逻辑
B. 组合逻辑
C. 动态逻辑
D. 时序逻辑

答案:B

A:静态逻辑电路中靠稳定的输入信号使MOS晶体管保持导通或截止状态,从而维持稳定的输出状态。输入信号存在,对应的输出状态存在;只要不断电,输出信息可以长久保持;

C:动态逻辑电路中利用电容的存储效应来保存信息,即使输入信号不存在,输出状态也可以保持,但由于泄漏电流的存在,信息不能长期保持;

D:时序逻辑电路由存储电路和组合逻辑电路两部分组成,任何一个时刻的输出状态由当时的输入信号和电路原来的状态共同决定。


6.在芯片设计流程当中, 通常会进行后仿真(post-simulation) ,关于后仿的作用, 以下说法不正确的是

A. 抽检 netlist 是否和 RTL 功能一致
B. 抽检电路中是否出现有害的 glitch
C. 抽检时序是否有违规
D. 抽检电路中是否存在亚稳态

答案:后仿,是指综合后仿真,综合后用DC导出门级网表,网表Netlist带有时延信息,将网表和verilog文件结合在一起,用VCS编译仿真,就能得到带有时延的波形信息。所以A当然是后仿的作用,后仿主要是检查电路考虑时延后的各种时序是否出现违例,所以CD也正确,选B。


7.以下关于异步处理正确的是

A 信号经过两级触发器即可完成异步信号的传递‘
B 只要信号传递的两端时钟频率不相等, 即认为是异步信号
C 异步复位信号需要经过同步处理后再使用是安全的
D 异步 FIFO 中使用格雷码传递异步计数器可以保证每一拍传递的数据都是准确的

答案:C

A:信号分为单bit和多bits信号,若是多bits信号,就不能通过两级触发器传递;

B:错误的原因是不是没有考虑整数倍频率且相位差为0的两种时钟;

C:异步复位信号需要经过同步处理后再使用是安全的 (异步复位,同步释放)

D:使用格雷码如果出错只会有一位数据跟上一次数据不一样,应该不能保证每一拍都是正确的


8.关于跨时钟域电路的设计, 以下说法不正确的是

A 单 bit 信号经两级 D 触发器同步后即可进行跨时钟域传递
B 采用单一时钟的电路不会产生亚稳态
C 异步 FIFO 的两个时钟频率相同也可以正常工作
D 跨时钟域电路当中的亚稳态无法消除

答案:B,单一时钟电路,时钟频率高了也会出现时序违例,导致亚稳态发生。

4 种方法跨时钟域处理方法

(1)打两拍,两级触发器同步—单bit数据跨时钟域处理,适用于慢时钟域数据到快时钟域;

(2)异步FIFO—多bit数据跨时钟域处理;

(3)格雷码转换;

(4)加握手信号。


9.衡量数字通信系统传输质量的指标是

A 信噪比
B 噪声功率
C 语音清晰度
D 误码率

答案:D,衡量数字通信系统传输质量的指标分为两种:可靠性和有效性指标,有效性主要指标为传输速率,可靠性主要指标误码率或者说是误信率


10.以下代码片段实现的电路功能是

Input [3:0] in;
output [3:0] out;
wire [3:0] a,b;
assign a=in<<1;
assign b=in>>3;
assign out=a|b;
A 对输入信号 in 先右移 3 位, 再左移 1 位
B 对输入信号 in 循环左移 1 位
C 对输入信号 in 循环右移 3 位
D 对输入信号 in 先左移 1 位,再右移 3 位

答案:B

假设4bit输入信号in为[A,B,C,D],那么A=in<<1=[B,C,D,0],B=in>>3=[0,0,0,A];out=a|b,符号“|”是按位或,0||X=X,从而有out=[B,C,D,A],和输入相比循环左移了1位,选择B。


11. 当一个乘法器需要10个cycle才能完成计算任务,对其需要设置multicycle,setup会设置为10,hold设置为()

A.9
B.不需要设置
C.10
D.1

答案:A,在多周期设置中,Setup的周期是X,设置Hold周期为X-1。具体STA知识可以查看笔者其他文章 静态时序分析(STA)附秋招面试提问


12. 以下工艺器件中,电阻值的最大的是()

A. AA
B. Contact
C. Poly
D. VIA

答案:C,

1.AA(Active Area):活性区域,指用于制作晶体管等器件的区域,通常由氧化物和硅等材料组成。

2.Contact:接触,指将金属或其他导电材料与晶体管或其他器件的材料(如硅)相连接的结构。

3.Via:过孔,指用于连接不同层次(如金属层和多晶硅层)的导线的孔洞结构。

4.Poly(Polysilicon):多晶硅,指用于制作栅极等器件的材料,通常具有良好的导电性能和机械强度。

这些工艺结构中,电阻阻值最大的一般是多晶硅(poly),因为多晶硅的电阻率比金属和硅等材料高得多,通常在半导体器件中用作电阻器等元件。而其他结构(如AA、contact和Via)通常是用于连接和控制器件的,电阻阻值较小。


13. 当clock的周期是10ns,对于模块的input需要添加input delay,假设外部延迟是6ns,内部延迟是4ns,那模块的input delay需要设置为()

A. 5ns
B. 6ns
C. 4ns
D. 10ns

input_delay 下的是外部信号的delay,内部还有的裕量是clock_period - input_delay,一般在逻辑的顶层,下的外部逻辑的delay。比如:set_input_delay -clock CLK $dly [get_ports D]

答案:B,6ns。


14. 以下叙述中,不正确的是()

A. N MOS位于PWELL中
B. P MOS的substrate是N参杂
C. POLY的电阻值比Metal高
D. P WELL的参杂浓度比P Sub高

答案:A,N MOS位于P substrate中,即我们熟知的NMOS导电是在P型衬底中,加正向电压,栅极附近吸收电子形成N型导电沟道,所以N MOS位于P 衬底中。P MOS 则相反。


15. 以下对于MOORE/MEALY状态机的特点描述正确的是()

A. Moore状态机的输出仅与当前状态值相关,Mealy状态机的输出不仅与当前状态有关,也与当前输入值有关
B. Mealy状态机更容易出现错误
C. Moore状态机可以没有default状态
D. Mealy状态机的输出仅与当前状态值相关,Moore状态机的输出不仅与当前状态有关,也与当前输入值有关

答案:A,A是正确的,B选项,只要设计正确,两者都不会出问题。C选项,需要有default状态。D结论与A相反错误。


16. 已知Y=A(~B)+B+(~A)B,下列结果中正确的是()

A. Y=B
B. Y=A
C. Y=(~A)+(~B)
D. Y=A+B

答案:D。最暴力的方法就是画出真值表然后试答案,简单的方法就是化简表达式:

Y=A(~B)+B+(~A)B=A(~B)+(1+(~A))B=A(~B)+B=A+B,选D


17. 关于同步复位和异步复位说法错误的是()

A.异步复位在使用时,复位信号仍旧需要先经过同步后才能使用
B.同步复位在复位时会产生大的瞬态power
C.异步复位容易在输出产生毛利,从而影响后续电路工作
D.在大fanout时,异步复位时序更容易满足

答案:D。

A正确。

B选项,同步复位在复位时通常会产生较大的瞬态功率。这是因为在复位时,所有需要复位的寄存器都会被同时清零或设置为一个特定值,这会导致大量的开关操作和电荷移动,从而产生较大的瞬态电流和功率,正确。

C选项说的正是异步复位的缺点,正确。

D选项错误,在异步复位时序设计中,扇出较小时,由于电路的传输延迟较小,复位信号能够更快地传播到各个部分,因此容易满足时序要求。反之,扇出较大时,由于电路的传输延迟增大,可能会导致复位信号的传播速度变慢,从而导致时序不满足。


18. 16进制有符号数0×C6的十进制数是()

A.-57
B.-56
C.-59
D.-58

答案:D。0xC6 = 0b1100_0110;最高位是1,即符号位为1,是负数,在verilog中用补码表示,换算回来按位取反+1得到十进制数值,0b0011_1010=-(32+16+8+2)=-58,


19. 0×6F5A的十进制数是()

A.28510
B.其他均不正确
C.67532
D.28506

答案:D。


20. 16进制有符号数0×A7,其中低4bit为尾数,截掉后4bit,四舍五入后是()

A.0×9
B.0×8
C.0×A
D.0×B

答案:C。0xA7=0b1010_0111,低4bit四舍五入,当低4bit>=8时进位,当低4bit<=7时不进位。0111=7,不进,选C。


21. 异步FIFO中,指针编码应该使用什么编码方式()

A、One-hot
B、One-cold
C、Binary
D、Gray

答案:D。格雷码,处理跨时钟域问题。Gray编码相邻的两个数之间只有一位二进制数不同。在异步FIFO中,使用Gray编码来表示指针,可以避免读取指针值时出现的不稳定状态和错误读取问题。


22. 摩尔定律中写道,IC上可容纳晶体管数量约每多少个月增加一倍?()

A、10个月
B、12个月
C、18个月
D、24个月

答案:C,18个月,记住即可。


23. 在工作过程中,如果芯片过热,需要动态降低功耗开销,下面哪个方法不能实现这个功能()

A、降低芯片工作电压
B、降低芯片工作频率
C、增加低功耗cell比率
D、能芯片时钟门控

答案:C。动态功耗计算公式:CV^2f。A降低电压、B降低频率都能减少动态功耗。D是低功耗设计clock gating方法,可以降低功耗。C选项确实可以降低功耗,但是审题“工作过程中,芯片过热”,这种情况下,没法直接增加低功耗cell比率降低功耗,选C。


24. 对于32K个MAC,工作在1GHz时钟,满载情况下的峰值性能为多少OPS()

A、8 Tops
B、16Tops
C、32Tops
D、64 Tops

答案:一个MAC(Multiply-Accumulate)指的是一种基本的计算单元,可以进行乘加运算,可用于数字信号处理(DSP)中。32K个MAC的峰值性能取决于时钟频率,即32K * 1GHz = 32 Tops(Tera Operations per Second),因此选项 C 的答案是32Tops。1Tera = 1000G=10^12


25. 组合逻辑电路的逻辑冒险现象是由于( )引起的

A、电路有多个输出
B、逻辑门类型不同
C、电路未达到最简
D、电路中存在延时

答案:D。逻辑冒险(Hazard)是指由于在组合逻辑电路中信号传输延迟引起的问题,可能导致输出信号产生错误或不稳定的情况。


26. 若要将异或门当作反相器(非门)使用,则输入端A B的连接方式是( )

A、A或B中有一个接“0”
B、A和B并联使用
C、A或B中有一个接“1”
D、不能实现

答案:C。异或门,两端输入相反时,输出1。如果A或B中有一个为 1,则异或门的输出为另一个输入端的反相值,即反相器。


27. 下面那个功能不是在综合过程中实现的( )

A、translate
B、DFX insert
C、retiming
D、mapping

答案:B。

A、translate:将高级描述语言代码(如 Verilog、VHDL)转换为中间表示(如 RTL、gate-level netlist)的过程,也可以称为解析、语法分析、建立语法树。

B、DFX insert:指在通过对RTL代码的修改,增加一些附加电路或修改原有电路,以实现某些特定设计目标的操作。例如可靠性(Design for Reliability)、测试性(Design for Testability)、可维护性(Design for Maintainability)等,与综合过程无关。

C、retiming:通过重新安排寄存器的时钟边沿,改变数据通路中组合逻辑和寄存器之间的时序关系,以优化时序和减少功耗的技术。

D、mapping:将门级网表中的逻辑元件映射到目标芯片的逻辑单元(如查找表、寄存器)上,以满足特定的约束条件,如时序约束、面积约束、功耗约束等。


28. 下面哪个FP32数据格式是对的(符号位指数位小数位)( )

A、1.8.23
B、1.5.26
C、2.8.22
D、2.5.25

答案:A。在IEEE 754标准中,单精度浮点数(FP32)格式总共占用32位,由三部分组成:符号位、指数位和小数位。其中符号位占1位,指数位占8位,小数位占23位,在表示格式时,通常使用“符号位.指数位.小数位”的形式进行表示。


29. 下列不属于验证方法学的是( )

A、UVM
B、OVM
C、DVM
D、VMM

答案:C。UVM: Universal Verification Methodology。OVM: Open Verification Methodology。。VMM: Verification Methodology Manual。C不知道指啥,动态电压管理(Dynamic Voltage Management)、分布式虚拟内存(istributed Virtual Memory)?


30. 半导体工艺制程中的7nm,5nm对应的是( )

A、晶体管宽度
B、栅极宽度
C、源极宽度
D、金属线宽度

答案:B。半导体工艺制程中,7nm和5nm是指芯片制造工艺的特征尺寸。特征尺寸指的是芯片上最小的物理结构尺寸,低尺寸工艺中通常指晶体管的栅极宽度,但目前高尺寸工艺通常都采用三维晶体管,即在垂直方向上做多个晶体管,用低工艺的水平堆叠晶体管来达到高工艺的性能,进而自称是高工艺。对于这道单选题来说,硬选的话,选B,答案有些不妥。


31. 一个八位D/A转换器最小电压增量为0.01V,当输10011100时,输出电压为( )V

A 1.28
B 1.45
C 1.54
D 1.56

答案:D。10011100 = 156


32. 下述概念中不属于面向对象这种编程范畴的是()

A对象、消息
B继承、多态
C类、封装
D过程调用

答案:D。面向对象编程的核心概念包括对象、类、封装、继承、多态和消息。过程调用是指调用一个已定义的过程或函数来执行一段特定的操作,不是面向对象编程的概念。


33. 组合逻辑电路通常由( )组合而成

A记忆元件
B门电路
C计数器
D以上都正确

答案:B。


34. 三极管作为开关时工作在什么区域()

A饱和区+放大区
B击穿区+截止区
C放大区+击穿区
D饱和区+截止区

答案:D。在饱和状态下,三极管导通。在截止状态下,三极管截止。


35. 在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为()

A char B char=int C char D char=int=long int<=float

答案:A。 在16位的PC机中,char占1个字节,int占2个字节,long int占4个字节,float占4个字节,double占8个字节。


36. 下面表达式计算结果为4的是()

A 11/3
B 11.0/3
C (float)11/3
D (int)(11.0/3+0.5)

答案:D。A选项=3,C语言中整型的除法会直接截去小数。B选项=3.67。C选项=3.0。


37. 关于this指针使用做法正确的是()

A 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
B 保证基类私有成员在子类中可以被访问
C 保证基类保护成员在子类中可以被访问
D 保证基类公有成员在子类中可以被访问

答案:A。this指针是一个指向当前对象的指针,它是在类的内部使用的。this指针的作用是保证每个对象拥有自己的数据成员,但共享处理这些数据的代码。当一个成员函数被调用时,this指针指向调用该函数的对象。通过this指针可以访问对象的数据成员和成员函数。


38. 在timescale 1ns/10ps的条件下,仿真器在6125ps时的打印时间格式为()

A 6
B 61
C 613
D 6125

答案:A。因为$time系统函数返回的是当前仿真时间,而不是当前的时间单位或最小时间精度。timescale 1ns/10ps中:

要计算实际时间,就用$time*时间单位得到实际时间。

1.时间单位为1纳秒(ns),即1个时间单位代表1纳秒。

2.时间精度为10皮秒(ps),即仿真器的最小时间精度为10皮秒,表示的最小时间间隔为10皮秒。


39. 下列描述中采用时钟正沿触发且reset异步下降沿复位的代码描述是()

A always@(posedge clk or negedge reset) if(!reset)
B always@(posedge clk or reset) if(!reset)
C always@(posedge clk or negedge reset) if(reset)
D always@(negedge clk or posedge reset) if(!reset)

答案:A。时钟正边沿触发,排除D。异步下降沿复位,排除B。reset下降沿后reset=0,判断复位if条件应该为if(!reset),排除C,选A。


40. 一个数组元素a[1]与下面哪个表示等价()

A *a+1
B a+1
C *(a+1)
D &a+1

答案:C。摘抄自紫光笔试题,IC相关选择题中间突然来一道考察C语言的选择题,有点猝不及防。这是考察指针和数组的关系,a[1]指数组第二个元素的元素值,不是数组的地址。A选项,是a数组第一个元素值+1。B选项,数组第二个元素的元素地址。C选项,正确,括号内为第二个数组元素的地址,外面再加一个指针解码符号,得到第二个元素的值。D选项,和A选项一样。


41. 在systemverilog中声明随机变量的关键词为()

A randa
B randc
C randomize
D urandom_range

答案:B。randc声明随机变量。随机变量只能在class中声明,SV中,rand和randc都只能修饰类的成员变量。

1.rand,表示每次随机化这个类时,这些变量都会赋一个值,每次随机的概率都是一样的

2.randc,周期随机性,即所有可能出现的值都赋过值后随机值才可能重复


42. 在设计中出现端口和驱动该端口位宽不匹配的情况,verilog/systemverilog默认处理方法错误的是()

A如果端口的位宽和驱动该端口的信号位宽相同,则该值可以无变化的通过该端口
B如果驱动端口比端口的接收端的位宽多,则驱动信号的高位bit会被截断
C如果驱动端口比端口的接收端的位宽多,则驱动信号的低位bit会被载断
D如果驱动端口比端口的接收端的位宽少,则依据verilog的赋值规则进行高比特位扩展

答案:C。高bit会被截断。ABD都对。


43. linux下,删除文件命令是()

A mkdir
B rm
C mv
D del

答案:B。A选项,创建文件夹make direction缩写。B选项,删除文件remove缩写。C选项,移动文件move缩写。D选项,delete是windows系统删除文件的命令。


44.


timescale 1ns/1ps
fork
    begin #1;end
    begin #2;end
join_none
$display($time);

上述代码中需要等待多长时间?()

A 1ns
B 2ns
C 0ns
D 3ns

答案:C。考察对fork join的理解。

1. fork-join语句会等待所有子程序都执行完毕后再继续执行后续代码。当所有子程序都完成后,join语句才会返回。

2. fork-join_any语句会等待至少有一个子程序执行完毕后就会继续执行后续代码。当有一个子程序完成后,join语句就会返回。

3. fork-join_none语句不会等待子程序执行完毕,而是直接继续执行后续代码。这种语句常用于一些无需等待子程序执行完毕的情况。


45.构成C语言程序的基本单位是()

A 函数
B 过程
C子程序
D 子例程

答案:A,函数。


46. 在veriliog HDL的always块语句中的语句是如何执行的

A 顺序
B 并行
C 顺序或并行
D 不一定

答案:C。描述组合逻辑时,always 语句块里面都用阻塞赋值,就是顺序执行的。描述时序逻辑时,always 语句块里都用非阻塞赋值,并行执行。


47. 在C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为

A 0~255
B 0~32767
C 0~65535
D 0~2147483647

答案:C。2^16=65536


48. 循环体至少被执行1次的语句是()

A for循环
B while循环
C do-while循环
D 任何一种循环

答案:C。


49. Verilog HDL中信号没有定义数据类型时,缺省为什么数据类型()

A reg
B wire
C tri
D z

答案:B,wire。module中输入输出端口没有定义数据类型的,都默认为线网wire类型。


50.状态机的编码风格包括一段式、两段式和三段式,下列描述正确的是( )

A一段式寄存器输出,易产生毛刺,不利于时序约束;
B二段式组合逻辑输出,不产生毛刺,有利于时序约束;
C三段式寄存器输出,不产生毛刺,有利于时序约束;
D所有描述风格都是寄存器输出,易产生毛刺,有利于时序约束。

答案:C。

  1. 一段式:一个always块,既描述状态转移,又描述状态的输入输出,当前状态用寄存器输出;

2. 二段式:两个always块,时序逻辑与组合逻辑分开,一个always块采用同步时序描述状态转移;另一个always块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出,当前状态用组合逻辑输出,可能出现竞争冒险,产生毛刺,而且不利于约束,不利于综合器和布局布线器实现高性能的设计;

3. 三段式:三个always块,一个always模块采用同步时序描述状态转移;一个always采用组合逻辑判断状态转移条件,描述状态转移规律;第三个always块使用同步时序描述状态输出,寄存器输出。

三段式与二段式相比,关键在于根据状态转移规律,在上一状态根据输入条件判断出当前状态的输出,从而在不插入额外时钟节拍的前提下,实现了寄存器输出。


51. 线网中的值被解释为无符号数。在连续赋值语句中,assign addr[3:0]=-3;addr被赋予的值是( )

A 4'b1101
B 4' b0011
C 4' bxx11
D 4' bzz11

答案:A。-3 = 4'b1101,补码形式。


52. "a=4' b1100,b=4' bx110" 选出正确的运算结果( )

A a&b=0
B a&&b= 1
C b&a=x
D b&&a=x

答案:B。A选项,a&b=4'bx100;

参考笔者其他博客:Verilog 逻辑与(&&)、按位与(&)、逻辑或(||)、按位或(|)、等于(==)、全等(===)的区别_不吃葱的酸菜鱼的博客-CSDN博客


53. 下列描述代码可综合的是( )

A fork... join
B assign/deassign
C if ... else和case
D repeat和forever

答案:C。fork join是并行语句,不可综合。deassign是取消赋值,不可综合。forever不可综合。


54. reg[255:0] mem[7:0]正确的赋值是( )

A mem[5]==3' d0;
B mem[10]=8' d1;
C mem=0;
D mem[5][3:0]=4' d1;

答案:D。这句话的意思是,mem的深度是8,位宽是256。所以赋值应该是mem[10] = 256'd1。形如D选项,选中addr = 5空间的[3:0]bit赋值4'd1也是可以的。


reg [255:0] mem [7:0];
wire [3:0] mem_3_0;

initial begin
    mem[5][3:0]=4'd1;
end

assign mem_3_0 = mem[5][3:0];


55. 以下关于逻辑综合中解决congestion问题描述不正确的是( )

A禁用多引脚标准单元,例如4输入引脚以上的标准单元
B使用partial blockage以降低congestion区域的cell density
C过多使用MUX单元不利于congestion的优化,因此MUX单元要尽可能禁用
D尽可能使用DCG做逻辑综合

答案:C。

congestion(拥塞)是指在电路布局中一些特定的区域出现了密度过高、资源使用过多的情况,导致该区域的布局难度增加或无法满足设计要求的问题。

A选项,在芯片布局中,较大的标准单元往往需要更多的空间和资源来放置,因此在一些资源受限的区域,使用大型标准单元可能会导致congestion问题。因此,在这种情况下,可以考虑禁用一些多引脚的标准单元,或者采用小型的标准单元来替代大型标准单元,以达到优化congestion的目的。

B选项,Partial blockage是一种在芯片布局过程中对某些区域进行限制的技术,通过对布局规则的设定来限制某些区域的使用。在congestion区域中,可以通过采用partial blockage的方式来降低该区域中的单元密度,以达到优化congestion的目的。

C选项,MUX单元的作用是将多个输入信号按照选择信号的值进行复用,从而实现多路选择。在电路中使用MUX单元可以减少电路的面积和功耗,因此在合理使用的情况下,MUX单元可以用来优化congestion问题。选项C描述不正确。

D选项,DCG(Design Constraints Guide)是一种设计约束,可以在综合过程中对电路进行限制和指导,以优化电路的性能和功耗等参数。使用DCG可以帮助优化congestion问题,因为DCG可以指导综合工具在布局时遵循一些约束条件,从而避免出现congestion问题。


56. 综合不包括下面哪一个过程( )

A Translation
B Routing
C Mapping
D Logic Optimization

答案:B。routing是在布局布线阶段,综合是将RTL代码转换成门级网表阶段,没进行布局布线。


57. 下面关于FIFO的描述不正确的是()

A FIFO的读写必须属于同一时钟域
B FIFO是先进先出的存储器
C外部不可以直接操作FIFO的读写地址
D FIFO的空信号在写时钟域产生,满信号在读时钟域产生

答案: A选项,异步FIFO读写不是同一时钟域。


58. Verilog语言中,下列哪些语句不可以被综合( )

A generate语句块
B for语句块
C function语句块
D force语句

答案:D。前三个选项在一定情况下都可以综合。


59. 下面表达式中结果位1' b1的是( )

A 4' b1010&4' b1101
B !4' b1001 || !4' b0000
C &4' b1101
D ~4' b1100

答案:B。A选项,4'b1000。C选项,1'b0。D选项,4'b0011。


60.关于正则匹配,描述错误的是()

A、\w可以匹配a-z、A-Z以及0-9,无法匹配下划线
B、\s可以匹配任意空白符,包括换行符
C、^表示一行的开头
D、\d可以匹配0-9

答案:A。

. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字 等价于 ‘[^A-Za-z0-9_]’。
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\w能不能匹配汉字要视你的操作系统和你的应用环境而定

61. 下列关于stuck-at故障模型描述错误的一个是()

A.组合逻辑上的Fault点可以做故障合并
B.用于覆盖内部得时序故障
C.正常Capture阶段只有1个Pulse
D.对于Full-scan设计可以达成很高得故障覆盖率

答案:B。

Stuck-at故障模型是在数字电路测试中最广泛使用的一种故障模型,它是一种假设在电路中的信号线上“卡住”(永远保持高电平或低电平)的故障。

选项A, 组合逻辑上的Fault点可以做故障合并:在一个组合逻辑电路中,可以将多个故障合并成一个,以提高测试效率。

选项B,用于覆盖内部得时序故障:stuck-at故障模型主要用于检测组合逻辑电路中的故障,不用于检测时序故障。

选项C,正常Capture阶段只有1个Pulse:在正常情况下,capture阶段只有一个时钟脉冲用于将电路中的数据存储到寄存器中。

选项D, 对于Full-scan设计可以达成很高得故障覆盖率:使用Full-scan技术可以提高stuck-at故障的覆盖率,因为它可以将所有的内部节点都扫描出来,从而使得测试覆盖率更高。


62. 下列关于芯片中电迁移的描述错误的一个是:()

A.用电迁移会降低芯片寿命
B.电迁移会使芯片性能退化
C.增加导线宽度可以修复电迁移违例
D.增加导线间距可以修复电迁移违例

答案:B。

电迁移EM(Electron Migration)是由于电流通过导线时引起的电荷堆积和电场强度变化,导致导线材料的移动和损耗,进而影响芯片性能和寿命。C选项,增加导线宽度可以减少电流密度,从而减少电场强度变化和电荷堆积,降低电迁移的风险。D选项,增加导线间距可以减少导线之间的相互作用和耦合,从而降低电迁移的风险。


63. 下列会直接影响到芯片工作频率的一个违例是:()

A.建立时间违例
B.保持间距违例
C.最大转换时间违例
D.最大扇出违例

答案:A。setup time slack 中有clock cycle这一项,setup violation会直接影响到时钟频率。


64. 从奈奎斯特采样定理得出,要使实信号采样后能够不失真还原,采样频率f与信号最高频率fs的关系时( )

A.f大于等于2fs
B.f小于等于2fs
C.f大于等于fs
D.f小于等于fs

答案:A。奈奎斯特采样定理指出,如果要对一个带宽有限的信号进行采样,那么采样频率必须高于信号最高频率的两倍,否则信号将无法完整地还原出来,产生混叠现象。


65. 以下是对Cache-主存-辅存三级存储系统中各级存储器的作用,速度,容量的描述,其中完全正确的是

A.主存用于存放CPU正在执行的程序,速度慢,容量较大
B.Cache用于存放CPU当前访问频繁的程序和数据、速度快、容量小
C.辅存用于存放需要联机保存但暂不执行的程序和数据,速度快,容量极大
D.加大Cache的容量可以使主存能够存放更多的程序和数据

答案:B。A选项,主存不存CPU执行程序。C选项,辅存速度快、容量极大不合理。D选项,Cache容量增加和主存容量无关。


66. 关于linux命令,下面说法错误的是:

A.find.-name,“*.next”命令会列出当前目录及子目录下所有以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就不会执行

答案:B。B选项错误,应该用cp master.map master1.map。mv master.map master1.map是重命名操作。


67. 关于综合工具,以下说法正确的是:

A.一般为了综合效率,综合工具使用越新越好
B.综合工具越来越强大,所以对于一些不可综合的逻辑也没有问题
C.综合工具一般需要和Formal工具配套使用
D.综合工具使用一个固定版本效果最好

答案:C。选项A,新版本可能会有bug和兼容性问题。C选项,Formal工具一般和综合工具配套使用,可以对综合后的结果进行验证,确保电路的正确性,选项正确。D选项,不同版本可能处理小问题的细节不同,应选择合适的版本,而不是固定一个版本。


68. 运行以下程序输出的值是


int           addr     = 32'ha;
bit           is_legal = 1;
bit  [33:0]   info0;
initial begin 
  if(addr[0])
    is_legal = 0;
  else 
    is_legal = 1;
  info0 = ~is_legal;
  info0 = {info0,addr};
  info0 = {info0,1'b0};
  $display(“0x%0h”,info0);
end

A.0x1_0000_0000

B.0x2_0000_0000

C.0x14

D.0x2_0000_0014

答案:D。十六进制a=4'b1010。所以addr[0] = 0。is_legal = 0。仿真结果如下:


  info0 = ~is_legal;      // info0 = 34'h3_ffff_ffff
  info0 = {info0,addr};   // info0 = 34'h3_0000_000a
  info0 = {info0,1'b0};   // info0 = 34'h2_0000_0014

69. 假设:

class trans_ext extends trans_base;

int a = 0;

endclass,

以下代码可以正确打印出a的选项是:

A.trans_ext tr_el;
trans_ext tr_e2;
trans_base tr_b;
tr_el = new();
tr_b = tr_el;
$cast(tr_e2,tr_b);
$display(''a is %0d'',tr_b.a);

B.trans_ext tr_el;
trans_ext tr_e2;
trans_base tr_b;
tr_el = new();
tr_b = tr_el;
$cast(tr_b,tr_e2);
$display(''a is %0d'',tr_b.a);

C.trans_ext tr_el;
trans_ext tr_e2;
trans_base tr_b;
tr_el = new();
tr_b = tr_el;
$cast(tr_e2,tr_e1);
$display(''a is% 0d'',tr_b.a);

D.trans_ext tr_el;
trans_ext tr_e2;
trans_base tr_b;
tr_el = new();
tr_b = tr_el;
$cast(tr_e1,tr_e2);
$display(''a is%60d'',tr_b.a);

答案:A。这主要考察的是SV中,系统函数 $cast(tgt,src) 可以做动态转换。把右侧的变量转换成左侧的变量类型。

从父类句柄转换为子类句柄时,需要使用 $cast( ) 函数进行转换,否则会出现编译错误,把父类句柄转换成子类句柄只有这一种方法,一般是在父类句柄指向子类对象的时候,又想要访问子类的成员变量时,使用cast函数转换。如果父类句柄指向的是父类对象,那么不能用cast函数转换,哪怕转换了也会转换失败,即函数返回0。

这里使用父类句柄方位子类成员变量,首先声明两个子类句柄tr_e1,tr_e2和一个父类句柄tr_b;然后创建一个子类的对象tr_el = new();再将父类句柄指向子类对象tr_b = tr_el;因为要通过父类访问子类的成员变量,所以需要进行cast转换,$cast(tr_e2,tr_b)。最后再display。所以选择A。

具体可以参考笔者其他博客:验证基础-类型转换、虚方法、回调函数、对象拷贝_显示转换 静态转换_不吃葱的酸菜鱼的博客-CSDN博客


70. 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];

答案:选A。B选项,arr[0]被赋值了new[4],但arr[1]没有,所以arr[1][0]就会报错。C选项,动态数组赋值不带[]。D选项,new函数只能给动态数组赋值,不能指定到数组的某个元素。


71. 下列电路中属于时序逻辑电路的是( )

A.编码器
B.计数器
C.数据选择器
D.译码器

答案: B。ACD都可以用组合逻辑实现,B计数器要用时钟上升沿触发、计数。


72. 关于同步设计描述正确的是( )

A.时钟上未叠加任何用户功能逻辑
B.所有寄存器的异步置位及异步复位端口上未叠加任何用户功能逻辑
C.同步设计便于静态时序分析
D.所有寄存器均采用同一时钟

答案:C。选项A,低功耗设计clock gating就在时钟上添加逻辑了。选项B,同步复位异步释放。选项D,分频器,也是同步电路。


73. 下面哪种措施不能减少亚稳态影响( )

A.用反应更快的FF
B.引入同步机制,防止亚稳态传播
C.改善时钟质量,用边沿变化平缓的时钟信号
D.提高系统时钟频率

答案:D。


74. 下列关于实现不符合低功耗设计规范要求的是( )

A.在不进行算术、逻辑运算的时候,使这些模块的输入保持“0”,不让操作数进来,输出结果不会翻转;而如果进行这方面的运算时,再将它们打开
B.FPGA全功能版本在产品适用温度范围内,结温不超过阀值的90%
C.接口电平如果可选,选择高电平模式
D.在满足性能要求时,尽量采用低的系统时钟

答案:C。无论是动态功耗还是静态功耗,增加电平,都会增加功耗。


75. 下列说法错误的是( )

A.两个向量进行比较操作或加减操作或赋值操作时,两个向量的位宽要相等,避免隐式扩展;
B.if/else语句配对使用,case语句加default项;组合逻辑中在所有条件下都要对信号赋值,如果要保持不变用a=a的方式赋值;
C.可综合代码中,除了for语句中的循环变量可以定义为integer型外,所有变量和信号都只能为wire或reg型,不能定义为整型、实数型、无符号型、realtime型和time型;
D.条件语句,如果无优先级关系,尽量采用case,避免多级else if影响时序;

答案:B、C。选项B,用a=a会综合出latch。选项C,整形、无符号型可综合。


76. 下列说法正确的是( )

A.在always语句中赋值的变量,可以是wire也可以是reg
B.reg变量一定被综合为寄存器
C.always块只能用来描述组合逻辑
D.在assign语句中赋值的变量要定义为wire

答案:D。A选项,只能是reg。B选项,组合逻辑的always用reg不会综合出寄存器。C选项,always可以描述时序逻辑。


77. 我们通常所说的时序逻辑电路是指( )

A.锁存器
B.D触发器
C.RS触发器
D.触发器

答案:B。触发器分为边沿触发和电平触发,我们通常所说的触发器,一般指D触发器,上升沿触发。


78. 对于信号定义语句:reg[0:4] always,a;说法正确的是:( )

A.bit定义顺序应该从高到低;
B.信号定义为reg型,只能使用在时序电路的赋值中;
C.每个信号应单独用一行来声明;
D.不能使用关键字定义信号名;

答案:D。A选项,大小端可以高到低或者低到高。B选项,定义成reg可以在组合逻辑always语句块中使用。C选项,多信号可以放在一行声明。


79. 格雷码(gray code)比二进制码(binary code)有什么优势?( )

A.编码实现电路更小;
B.实现电路速度更快;
C.更容易判断不同的编码是否相等
D.相邻的两个编码只有一比特发生跳变;

答案:D。格雷码特点。


80. 以下哪个阶段的仿真可以真实的模拟实际的环境( )

A.综合后仿真
B.布局布线后仿真
C.编译后仿真
D.综合前仿真

答案:B。


81. 形式验证可以判断( )

A.两个设计是否等价
B.设计时序是否满足
C.其他均不能保证
D.设计功能是否正确

答案:A。

形式验证技术:等价性检查和属性检查。


82. 哪些情况下不会产生latch电路?( )

A.使用if选择语句的组合逻辑没有else部分表达;
B.使用case选择语句的组合逻辑没有default表达
C.时序逻辑中if选择语句,没有else部分表达。
D.组合逻辑中条件不全的case语句没有default赋值;

答案:C。C选项不会综合出latch


83. SystemVerilog中,下面那种数组在使用前需要先执行new操作。( )

A.动态数组
B.联合数组
C.多维数组
D.压缩数组

答案:A。SV基础。


84. 下面两端代码中in,q1、q2和q3的初值分别为0,1,2,3,那么经过1个时钟周期后,左侧q3的值和右侧q3的值分别变成了( )


always @(posedge clk)
begin 
    q1=in;
    q2=q1;
    q3=q2;
end 
always @(posedge clk) begin 
    q1<=in;
    q2<=q1;
    q3<=q2;
end
A.0,0
B.0,2
C.0,3
D.2,0

答案:B。阻塞性赋值串行、非阻塞性赋值并行。


85. 下面那些模块划分方式是不合理的( )

A.将不同优化目标的逻辑分开
B.模块划分根据开发人员的个数进行
C.将存储逻辑独立划分
D.将相关的逻辑或者可以复用的逻辑划分在同一个模块内

答案:B。


86. 如下图,对时钟到输出时间分析正确的是( )

A.tCo = Data Delay-clock Delay+Micro Tco
B.tCo = Data Delay+Clock Delay-Micro Tco
C.tCo = Clock Delay-Data Delay+Micro tCo
D.tCo = Data Delay+Clock Delay+Micro Tco

答案:D。


87. 关于verilog代码风格,以下说法错误的有:( )

A.每个文件只能定义一个模块
B.Verilog区分大小写,所有信号命名能以大小写来区分不同信号
C.多个reg变量赋值,如果赋值条件完全相同,可以放在同一个always块内
D.每行只能有一个Verilog语句

答案:B。

从规则角度分析,选项A,每个文件可以定义多个模块,且能编译通过,但就代码风格而言,每个文件只定义一个模块。

选项B,虽然这是合法的,但是变量Ready和ready容易出现歧义,就代码风格而言,不允许。

选项C,正确。

选项D,每行可以有多个verilog语句,但就代码风格而言,B的风格最差。


88. 完全消除亚稳态的方法正确的是( )

A.降低时钟频率
B.使用寄存器打拍同步
C.其他均不正确
D.使用异步fifo传递异步信号

答案:C。亚稳态只能降低其影响,不可完全消除。


89. 下列不属于异步时序电路设计特征的是:()

A.容易组织流水,提升芯片速率
B.不利于时序分析
C.依赖逻辑时延,时延不好控制
D.容易产生毛刺

答案:A。在跨时钟域信号处理的时候,都要对信号进行打拍、同步,之后才能进行流水。要考虑数据打拍延迟,流水组织并不容易,但确实可以提升芯片速率。


90. 以下哪一项对于提高系统处理能力没有帮助( )

A.减少寄存器翻转率
B.扩大数据位宽
C.缩短处理流水
D.提升系统工作频率

答案:A。减少寄存器翻转率可以降低功耗,不能提升性能。


91. 同步电路设计中出现setup time不满足、不可以采样下面哪种措施解决( )

A.降低时钟频率
B.pipeline
C.增加时钟频率
D.减小信号延迟

答案:C。


92. 对于initial语句,说法错误的是:( )

A.在模拟的0时刻开始执行;
B.这是一种过程结构语句
C.可用于给实际电路赋初值
D.在仿真过程中只执行一次;

答案:C。initial语句快不可综合。


93. 异步时钟数据采样的方法错误的是( )

A.使用fifo隔离进行多bit的采样;
B.握手信号后再采样;
C.高频时钟直接采样低频时钟的多bit数据;
D.单bit高频时钟脉冲展宽后给低频时钟进行采样

答案:C。不可直接采样,需要进行信号同步。


94. Verilog语言的层次高低对应( )

A.系统级,行为级,功能级,寄存器传输级,门级
B.系统级,行为级,寄存器传输级,功能级,门级
C.系统级,功能级,寄存器传输级,行为级,门级
D.系统级,功能级,行为级,寄存器传输级,门级

答案:A。

Verilog语言是一种多层次的硬件描述语言,不同层次的描述方式对应着不同的抽象程度和实现方法。以下是从高到低的五个层次及其含义:

1. 系统级(System Level):该层次主要描述系统的高层次抽象,例如输入输出接口、处理器、内存等。在该层次下,主要是通过函数调用等方式描述系统的功能和数据流,并且常常使用高级编程语言进行描述,例如C++、Python等。

2. 行为级(Behavioral Level):该层次主要描述模块的行为,例如模块如何响应输入、产生输出以及模块之间的数据传输等。在该层次下,主要是使用语句和操作符等方式描述模块的行为,例如if-else、for、assign等。

3. 功能级(Functional Level):该层次主要描述模块的功能,例如模块的输入输出接口、操作和算法等。在该层次下,主要是使用模块实例化和信号连接等方式描述模块的功能,例如module、input、output等。

4. 寄存器传输级(Register Transfer Level,RTL):该层次主要描述模块的数据流和状态转移,例如模块内部的寄存器、时序逻辑等。在该层次下,主要是使用寄存器和时序逻辑描述模块的状态转移,例如always @(posedge clk)、reg、wire等。

5. 门级(Gate Level):该层次主要描述模块的硬件实现方式,例如使用哪些逻辑门、多路器等。在该层次下,主要是使用逻辑门和时钟触发器等基本电路组件描述模块的硬件实现,例如and、or、not、dff等。


95. 表示任意两位无符号十进制数需要( )位二进制数

A.7
B.8
C.9
D.6

答案:A。表示0-99,用7bit二进制数,可以表示0-127。


96. 模块端口的输入信号,如果没有进行赋值,其值是( )。

A.1
B.X
C.Z
D.0

答案:C。高阻态。


97. 常说的7nm工艺,7nm指的是晶体管的( )

A.漏极宽度
B.栅极宽度
C.整体宽度
D.源极宽度

答案:B。前面出现过类似的题。


98. Verilog语言与C语言的区别,不正确的描述是( )

A.Verilog语言可实现并行计算,C语言只是串行计算;
B.Verilog语言可以描述电路结构,C语言仅仅描述算法;
C.Verilog语言源于C语言,包括它的逻辑和延迟;
D. Verilog语言可以编写测试向量进行仿真和测试。

答案:C。verilog不源于C语言,逻辑和延时更不必说了。


99. 数据位宽8bit,地址位宽13bit的RAM,其大小为多少?

A.4KB
B.8KB
C.16KB
D.32KB

答案:B。13bit的地址代表有2^13=1024*8的元素个数,8bit*1024*8/1024/8=8KB。1Byte=8bit,1KB=1024Byte。


100. 在verilog中,以下不属于分支语句的是( )

A.case
B.if-else
C.repeat
D.casez

答案:C。repeat是重复语句。既然题目出现了casez,那我们聊一下case和casez的区别。

casecasez 的主要区别在于匹配的精度。case 可以精确匹配表达式的值,而 casez 则允许对表达式的值进行模糊匹配。

case 用于对表达式的值进行精确匹配,它将表达式的值与各个 case 语句的值逐一比较,当找到与表达式值相等的 case 时,就执行相应的代码。

casez 则允许对表达式的值进行模糊匹配,它将表达式的值转换为二进制,并将高阻态 (Z) 和无法识别的状态 (X) 视为通配符。例如用casez来实现一个3-8译码器


module decoder(input [2:0] in, output [7:0] out);

always @(*)
begin
  casez(in)
    3'b0???: out = 8'b00000001;
    3'b1???: out = 8'b00000010;
    3'b?0??: out = 8'b00000100;
    3'b?1??: out = 8'b00001000;
    3'b??0?: out = 8'b00010000;
    3'b??1?: out = 8'b00100000;
    3'b???0: out = 8'b01000000;
    3'b???1: out = 8'b10000000;
    default: out = 8'b00000000;
  endcase
end

endmodule

101. 一个八位D/A转换器最小电压增最为0.01V,当输入10011100时,输出电压为( )V。

A.1.28
B.1.45
C.1.54
D.1.56

答案:D。2^7+2^4+2^3+2^2=128+16+8+4=156;156*0.01=1.56。


102. 在verilog HDL的always块语句中的语句是如何执行的( )

A.顺序
B.并行
C.顺序或并行
D.不一定

答案:C。组合逻辑always 语句块中用阻塞性赋值,串行执行。时序逻辑always语句块中用非阻塞赋值,并行执行。(要非说,硬要在时序逻辑always块里交叉用阻塞和非阻塞赋值那也可以选D)


103. 以下哪个不是异步处理的通用方法( )

A.synchronizer
B.fifo
C.handshake protocol
D.sampling by DFF

答案:D。A选项同步器是处理异步的方法;B选项,fifo先进先出缓存,用于解决不同速度的数据处理之间的数据缓存和调度问题,异步fifo可以解决跨时钟域问题;C选项,握手protocol当然是处理异步的办法。D选项,用寄存器直接采样不正确,需先进行同步。


104. Verilog HDL中信号没有定义数据类型时,缺省为什么数据类型

A.reg
B.wire
C.tri
D.Z

答案:B。verilog基础题。隐式定义。


105. 项目后仿阶段,不需要哪个文件?

A.标准单元库
B.网表
C.SDF
D.RTL

答案:D。后仿需要四个文件:综合生成的网表.v文件、.sdf文件,标准单元库.v文件和前仿时的tb文件。

后仿步骤可参考博客: 使用VCS对电路进行后仿真_早睡身体好~的博客-CSDN博客


106. How many logic gates(only NAND and NOT gate)used in a D latch?( )

A.4
B.5
C.6
D.7

答案:B。电路如下:

参考博客:触发器(SR锁存器、SR触发器、JK触发器、D触发器、T触发器)_Jobs-Wang的博客-CSDN博客


107. 以下对hold timing有帮助的是

A.提高时钟频率
B.降低时钟频率
C.提高工作电压
D.降低工作电压

答案:D。改变时钟频率对改善hold violation没有帮助,C,提高工作电压,会增加电容充放电速度,会让hold violation更容易发生。选项D,降低工作电压可以增加ck_to_Q的时间,有利于避免hold violation。


108. 以下哪项工作需要手工进行门级设计?( )

A.行为级描述
B.综合
C.ECO
D.验证

答案:C。

需要手工进行门级设计的工作是C.ECO。ECO指Engineering Change Order,即工程变更单,通常在产品设计过程中,当需要对设计进行更改时,需要手动修改网表中的逻辑门,并进行后续仿真验证。因此,ECO工作需要手工进行门级设计。而行为级描述、综合和验证这些工作一般可以通过EDA工具自动完成,不需要手工门级设计。


109. At which level is STA usually done?( )

A.Behavior Level
B.Register Transfer Level
C.Gate Level
D.System level

答案:C。STA (Static Timing Analysis)是分析调试一个门级系统时序性能的方法。门级电路表示逻辑门和连线的实际物理结构,这是数字电路中的最低级别。在门级电路中,时序分析需要考虑延迟和时钟等因素,以确保电路的时序满足设计要求。在行为级描述、寄存器传输级别(Register Transfer Level)和系统级别中,时序分析更关注的是功能和性能等方面的设计,而不涉及时序的具体细节。因此,STA通常在门级电路中进行。


110. In Verilog_hdl,a=4'b1011,so &a=?

A.4'b1011
B.4'B1111
C.1'b1
D.1'b0

答案:D。位与运算,有0出0,选D。


111. 下列语句( )不能在module中独立存在

A.task
B.initial
C.always
D.forever

答案:D。forever必须在过程语句块中。


112. CMOS工艺中,PMOS的衬底连接;

A.VDD
B.GND
C.Source
D.Drain

答案:A。模拟电路基础。我们对NMOS熟悉一些,对于NMOS来说,栅极接高电压,形成电子导通沟道,NMOS是P型衬底,接地。所以在NMOS的栅极接高电压时与衬底形成电压差,在NMOS栅极附近形成导电沟道。那么PMOS就反过来,N型衬底,接VDD。


113. A=(0.8125)10,十进制转二进制,则A=

A(0.1101)2
B.(0.0101)2
C.(0.1011)2
D.(0.1111)2

答案:A。

0.8125*2=1.625,取整数部分1。

0.625*2=1.25,取整数部分1。

0.25*2=0.5,取整数部分0。

0.5*2=1,取整数部分1。

参考博客:小数十进制转二进制-CSDN博客


114. 运算assign SUM=a[7:0]+b[7:0] +c[7:0] +d[7:0]+e[8:0],为了SUM没有溢出,SUM的位宽最小为多少

A.10
B.11
C.12
D.13

答案: B。相当于三个9bit数相加,sum位宽取11bit。


115. 下列描述中采用时钟正沿触发reset异步下降沿复位的代码描述是

A.always@(posedge clk or negedge reset) if(reset)
B.always@(posedge clk or reset) if(!reset)
C.always@(posedge clk or negedge reset) if(!reset)
D.always@(negedge clk or posedge reset) if(reset)

答案:C。


116. 组合逻辑电路通常由( )组合而成

A.记忆元件
B.门电路
C.计数器
D.以上都对

答案:B。


117. 以下哪个不是Verilog的keyword?

A.input
B.assign
C.write
D.module

答案:C。关键字。

参考博客:Verilog的关键字_verilog关键字_小默haa的博客-CSDN博客


118. APR最终输出什么数据给Foundary?

A.GDS
B.DEF
C.Verilog
D.SPEF

答案:A。APR(Automatic Place and Route,自动布局布线)工具最终会输出GDSII文件,即刻度数据格式文件,用于制造芯片。GDSII文件包含了所有物理层面的信息,包括了芯片的几何形状、连线等细节信息。Foundry(晶圆代工厂)会使用GDSII文件来制造芯片。


119. 假设在CRC校验中使用的生成多项式是G(X)=X^3+X+1,4位的原始报文为1010,求编码后的报文

A.1010 011
B.1010 000
C.1011 011
D.1011 000

答案:A。CRC校验数字通信系统中的一种检错方法,主要利用除法和余数的原理来进行错误检测。多项式X^3+X+1的二进制bit串为:1011。原始报文为1010,在后面添加3个0,即添加(多项式最高次数的“0”),得到1010000。用二进制除法规则,用1010000除以1011,计算余数:

得到1010000÷1011=0111……011,余数位宽为多项式最高次数,接着拼接输入原始报文和余数结果,得到1010 011,选A。CRC校验的时候,发送和接收方要确定一个共同的生成多项式,这样发送方发送原始报文+CRC编码余数。接收方将原始报文与生成多项式做除法,看最后的余数和发送发计算的余数是否一致。如果一致,则数据传输没出错,如果不一致,则数据传输出错。


120. AX14不包括下面哪个接口信号

A.AWID
B.ARID
C.WID
D.RID

答案:C。AXI总线基础。


121. In ARM AMBA AHB protocol, which of following responses is ONE cycle response? ()

A.OKAY
B.ERROR
C.RETRY
D.SPLIT

答案:A。protocal原文如下:


122. What is the major goal of the scan-reorder? ( )

A.Maximum coverage
B.Minimum IR Drop
C.Minimum wire length
D.Minimum Slack

答案:A。

scan-reorder是一种设计优化技术,其主要目标是通过重新排列设计中寄存器的扫描链路(scan chain),从而提高测试质量和效率。它的主要优点包括:

  1. 提高测试质量:通过重新排列扫描链路中的寄存器,可以更好地控制测试数据的传播路径,从而提高测试覆盖率和故障检测能力。

  1. 提高测试效率:通过优化扫描链路,可以减少测试数据的存储和传输时间,从而加快测试速度和降低测试成本。

  1. 减少功耗:通过合理排列寄存器,可以减少测试时的功耗,从而提高芯片的可靠性和稳定性。

  1. 提高可维护性:通过优化扫描链路,可以更好地控制设计中寄存器的访问顺序,从而更容易进行硬件调试和验证。


123. In following circuit, which pattern could detect the “SAP1” fault on the input of AND gate? ( )

A.a:0, b:0, c:1
B.a:0, b:1, c:0
C.a:1, b:0, c:1
D.a:0, b:0, c:0

答案:B。c=0时,与门的另一端为1,如果总输出为1则SAP1=1,否则SAP1=0。当a=0,b=1时,SAP1=0,总输出为0,所以SAP1=0即fault。


124. Choose the right descriptions of the difference between latch and flip-flop listed below ( )

A.flip-flop saves area
B.latch can’t avoid glitch
C.flip-flop is easier for timing closure
D.latch runs slower than flip-flop

答案:C。一个FF是两个latch拼起来的,所以FF面积会比latch大,延迟会比latch高,排除AD。选项B,latch是可以避免glitch的,在clock gating中,通常会使用厂商包装好的,用latch实现的clock gating,厂商通过调整器件延时,使得latch实现的clock gating一定不出现glitch,那么在大量使用latch clock gating的时候,就会比使用FF做clock gating的面积&功耗小很多。


125. Which of the following regular expressions (in Perl flavor) could match any of the empty lines (i.e., no character or only with one or more space/TAB character in a line) ( )

A.^\s*S
B.^[^\S]*S
C.^\S*S
D.^\S+S

答案:A。正则表达式,s表示空格字符,包括空格、制表符、换行符等。\s*表示匹配0到任意个空格字符;\S表示匹配非空格字符。^表示行首,^\s*S表示以一个空格字符打头,后面又跟着0到任意个空格字符,再以一个非空格字符结尾的行。


126. Which of the following are LVS(Layout Versus Schematic) check items?( )

A. Shorts
B. Opens
C. Minimum width rules
D. Spacing rules

答案:A,B。后端知识,如果网表节点数目比原理图多,可能会有open;反之可能会存在short。C,D一般包含在LEF中


127. What’s the main usage of Scan shift registers? ( )

A.Provide Control & Observe capacity
B.Provide Lock and un-lock statement
C.Provide Control & stability check
D.Provide clock observation

答案:A。Scan Shift Register(也称为扫描链)的主要用途是为了提供芯片测试时的控制和观察(C&O)能力。扫描链是一系列连接在移位寄存器配置中的触发器,允许芯片的内部状态被捕获并通过专用引脚进行移位以进行测试。这使得可以全面测试芯片内的逻辑路径,并提供观察内部节点输出的手段。


128. What kind of MBIST logic can improve memory yield? ( )

A.Redundancy
B.ECC
C.Read Margin block
D.Fuse Bank

答案:A。冗余逻辑(Redundancy)可以提高存储器的良率,是一种常见的MBIST逻辑实现方式。通过向存储器添加冗余列或行,可以在存储器出现故障时重新映射正常单元的地址,从而提高存储器的可靠性。选项B,ECC(Error Correction Code)是一种检测和纠正单个位错误的技术,虽然可以提高存储器的可靠性,但不会直接提高存储器的良率。选项C,Read Margin Block(RMB)是一种通过向MBIST添加读取修饰器来提高读取边际的技术,可以提高存储器的可靠性,但不会直接提高存储器的良率。选项D,Fuse Bank通常用于存储和控制存储器的配置和测试数据,与MBIST逻辑的良率没有直接关系。


129. 以下verilog变量名合法的是( )

A. 3sum
B. a/b
C. ab@cd
D. subSme_

答案:D。verilog命名以字母或者下划线打头,可以出现字母、数字、下划线和钱字符“$”。


130. 如下对于procedural block说法错误的是( )

A.代码中的procedural block是同时执行的
B. initial和always procedural block可以嵌套
C. initial procedural block只执行一次
D. always procedural block可以循环执行

答案:B。不可嵌套。


131. 下面那个不是IC设计前端的FLOW( )

A.RTL设计
B.综合
C.门级验证
D.布局布线

答案:D。布局布线是后端的FLOW。


132. 下面哪种不属于Vim编辑器的工作模式( )

A.命令模式
B.插入模式
C.底行模式
D.列操作模式

答案:D。VIM的工作模式有命令、插入、底行、可视化、普通、替换模式等。


133. 下面哪个是最简单的逻辑门( )

A.与门
B.或门
C.非门
D.与非门

答案:C。非门,由一个CMOS组成。


134. 如下的几个Verilog描述层次中,我们常用的是哪个层次( )

A. Gate Level
B. Algorithmic
C. Register Transfer Level
D. Switch Level

答案:C。我们通常都是在寄存器传输级进行coding,


135. 在systemverilog中声明随机变量的关键词为( )

A. randa
B. randc
C. tandomize
D. urandom_range

答案:B。SV基础。


136. linux常用命令中,下列哪个命令用于修改文件的所属群组( )

A. cat
B. chgrp
C. chown
D. chmod

答案:B。change group。


137. 在systemverilog中,可以在哪里定义类( )

A. program
B. module
C. package
D.以上都可以

答案:D。SV基础。


138. 正确描述FIFO特性的为( )

A.将满信号(almost_full)和将空信号(almost_empty)是必须使用的
B.FIFO可以作为数据缓冲模块
C.满信号在读时钟域产生
D.FIFO可以通过写入地址直接访问

答案:B。满信号在写时钟域产生。FIFO读写要求先进先出,不可通过地址直接访问。


139. 以下哪个不属于面向对象编程(OOP)特性( )

A.封装
B.继承
C.多态
D.重载

答案:D。SV基础。


140. systemverilog中以下语句中哪一个表示等待至少一个进程完成,然后再执行后继的语句( )

A. fork_join
B. fork_join_none
C. fork_join_any
D. fork_join_one

答案:C。考察fork join的用法。

1. fork-join语句会等待所有子程序都执行完毕后再继续执行后续代码。当所有子程序都完成后,join语句才会返回。

2. fork-join_any语句会等待至少有一个子程序执行完毕后就会继续执行后续代码。当有一个子程序完成后,join语句就会返回。

3. fork-join_none语句不会等待子程序执行完毕,而是直接继续执行后续代码。这种语句常用于一些无需等待子程序执行完毕的情况。


141. systemverilog中能够从当前for循环或者while程序块中跳出并运行下一段程序的语句是( )

A. continue
B. break
C. stop
D. finish

答案:B。SV&&C语言基础。


142. 用补码方式表示的有符号二进制数1011.10换算成十进制为多少( )

A.-4.5
B.4.5
C.-5.5
D.5.5

答案:A。最高位为1,是负数。带小数的补码容易给人搞蒙,以后遇到带小数的东西,什么都别管,先把小数去了,把数值求出来之后,再通过移位把小数点加上。

101110 去掉符号位 = 01110,把补码转化为原码=10010 = 18。所以有符号数101110=-18,算完这个再把小数点加上,定点小数是2位,-18右移2bit=-18>>2=-18/4=-4.5,选A。


143. 下列哪种常用电平标准是单端的( )

A.PECL
B.LVDS
C.RS485
D.RS232

答案:D。

A. PECL (Positive ECL)是一种差分信号电平标准,其主要应用于高速数字信号传输和时钟信号传输。PECL工作电压范围广,通常为3.3V或5V,具有高速、低噪声、低功耗等优点。

B. LVDS (Low Voltage Differential Signaling)是一种差分信号电平标准,其主要应用于高速数字信号传输,工作电压通常为1.2V至3.6V之间,具有高速、低功耗、抗干扰能力强等优点。

C. RS485是一种标准的串行通信接口标准,其主要应用于工业自动化和控制领域。RS485采用差分信号传输,支持多节点、远距离通信、抗干扰能力强等特点。

D. RS232是一种标准的串行通信接口标准,其主要应用于计算机和通信设备之间的数据传输。RS232通信采用单端传输,使用标准的DB9接口,通信距离较短,通常在15米以内,通信速率较低,但具有易于实现、使用方便等优点。


144. 以下的哪个timescale directive定义下,#1.23表示1.23ps( )

A. timescale1ps/10fs
B. timescale 1ps/100fs
C. timescale 1ns/1ps
D. timescale 1ns/1ops

答案:A。


145. 修改文件夹"test"以及其下面的所有文件权限为User自己可读可写可执行,Group和Other设定为仅仅可读( )

A. chmod-R 755 test
B. chmod-R 744 test
C. chmod-R 722 test
D. chmod 755 test

答案:B。可以使用数字来表示权限。每个权限都对应一个三位数字,分别对应 User、Group 和 Other,数字分别为 4、2、1,分别表示读、写、执行的权限,三个数字相加就是总权限。因此User=4+2+1=7; Group=Other=4。选B。


146. 下面哪个phase在UVM tree中是按照自上而下的顺序执行( )

A. build_ phase
B. connect_ phase
C. end_ of_ elaboration_ phase
D. start_ of_ simulation_ phase

答案:A。

在UVM中,build_phase是自上而下执行的,也就是说,它会从UVM test中的build_phase开始执行,然后逐步向下执行,直到达到了UVM testbench中的最底层组件。

这是因为,UVM中的build_phase是用来建立UVM组件之间的连接关系的,而这些组件之间的连接关系是自下而上建立的。也就是说,组件的实例化顺序是自下而上的,即最底层的组件最先实例化,然后向上逐层实例化,最终到达UVM test。

因此,为了建立正确的连接关系,UVM中的build_phase需要从UVM test开始执行,逐层向下执行,以便正确地建立组件之间的连接关系。


147. 下面那些systemverilog数据类型不是双状态数据类型( )

A. bit
B. integer
C. real
D. byte

答案:找四值逻辑,选B。


148. 下列关于mbist测试描述正确的一个是:( )

A、mbist测试实现没有面积开销
B、mbist测试频率和mem工作频率不一致
C、mem repair可以提高良率
D、mbist测试对mem性能没有影响

答案:C。

选项A,mbist测试需要在mem中添加一些测试电路,会有面积开销。选项B,测试频率可以和mem工作频率不一致也可以一致。选项C,在MEM Repair阶段,根据故障映射表,可以通过不同的方法来修复故障单元。例如,可以将故障单元替换为备用单元,或者通过将存储器单元的地址重新映射到备用存储器单元来修复故障单元。选项D,mbist测试在一定程度上可以提升mem的可靠性和性能。


149. 下列关于芯片中信号串扰描述错误的一个量:( )

A、串扰会导致信号延迟和毛刺
B、增强侵害网络单元驱动能力可以减小串扰影响
C、在受害网络上插入缓冲器可以减小串扰影响
D、增加导线间距可以减小串扰影响

答案:B。选项B说反了,应该在受害网络上增强驱动能力。选项C,在受害网络上插入缓冲器就是一种增强驱动能力减少串扰影响的方法。

芯片上的串扰(Crosstalk)串扰是由互连线之间的寄生耦合引起的噪声,这种耦合反映了物理世界非理想化的特性。随着芯片特征尺寸的细化,互连线的物理尺寸以及间距变小,从而导致互连线之间的耦合效应增大,,串扰随之产生并增强。

侵害网络(aggressor net或attacker):产生串扰信号源的网络。

受害网络(victom net):收到串扰的网络。


150. 关于异步复位,以下说法正确是:( )

A、奇存器的时钟状态对是否能复位没有影响
B、奇存器的时钟状态对是否能解复位没有影响
C、复位信号上是否有毛刺没有影响
D、异步复位信号不需要同步到对应的时钟域上

答案:不确定。复位信号一般是时序逻辑,能否复位必须要让目的寄存器采集到复位信号,如果复位信号没在目的时钟的有效期内触发,也不会产生复位。C,复位信号上有毛刺会有影响,所以一般异步复位信号都要有对应的滤毛刺电路。 D选项,需要同步,否则解复位的时候会出问题,所以异步复位都要进行异步复位同步释放。


151. 1个16Kx 8位的存储器,其地址线和数据线总和是( )

A、48
B、46
C、17
D、22

答案:D。地址线=4+10=14位,数据线=8,总和=14+8=22.


152. 下列关于多sit数据跨时钟域的处理思路,错误的有( )

A、发送方给出数据,发送方给出握手请求,接收方收到后回复,发送方撤销数据。
B、发送方给出数据,接收方用本地时钟同步两拍再使用;
C、发送方把数据写到异步fifo,接收方从异步fifo里读出;
D、对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制。

答案:B。多bit跨时钟域不能用两级同步。


153. 用于下载编程文件/调试物理FPGA器件的通信技术名称是什么?( )

A、HDMI
B、USV
C、JTAG
D、JPEG

答案:C。


154. 某嵌入式设备包含linux内核,bootrom,bootioader,文件系统镜像system.img,则它们在嵌入式设备开机时的启动加载顺序为?( )

A、linux-> bootrom->bootioader->system.img
B、bootrom->bootioader-> linux-> system.img
C、bootioader->system.img-> linux-> bootrom
D、linux-> system.img->bootrom-> bootioader

答案:B。

一般情况下,嵌入式设备的启动加载顺序如下:

  1. BootROM:芯片上的一段固化的ROM程序,负责在设备上电后最先启动。它会初始化芯片和系统总线,检查并加载BootLoader(引导加载程序)。

  1. BootLoader:是一段独立的程序,负责在启动过程中完成对系统硬件和内核的初始化。它的作用是将内核镜像从外部存储器(如Flash)中加载到系统内存中,并启动内核。

  1. Linux内核:是系统的核心,负责管理系统资源、进程调度、设备驱动等。

  1. 文件系统镜像system.img:是一个包含文件和目录的映像文件,包括应用程序、库文件、配置文件等系统文件,用于支持设备的各种功能。


155. 预设clk为周期为10ns的时钟,以下选项中能正确将clk延时8ns的clk_dly信号是:( )

A、assign #8ns clk_dly = clk;
B、assign #8ns clk_dly <= clk;
C、always@(clk) begin clk_dly = #8ns clk; end
D、always@(clk) begin clk_dly <= #8ns clk; end

答案:

选项A,连续赋值过程定义延迟。右侧更新数据后等待期间如果发生了数据改变,则刷新等待时间,即只有持续延时时间的信号会被延时赋值给左侧。周期为5ns,所以这句的结果是clk_dly一直保持。

选项B,没有这种用法,语法错误。

选项C,阻塞赋值,always语句块里是组合逻辑触发,clk一变就触发阻塞性延迟8ns刷新,而clk 5ns一变,导致clk_dly一直保持,和A一样。

选项D, 非阻塞过程性延迟赋值。


156. 32bit位宽的异步fifo,写时钟1000M,读时钟续率800M,在数据包大小为4KB,包间隔足够大时,fifo的最小深度为( )

A、158
B、205
C、638
D、820

答案:B。

数据包大小为4KB,FIFO数据位宽为32bit即4Byte。故传输数据共4KB/4B=4096个数据。写数据速度是读数据的5/4倍,即每写入5个数据,被读出了4个数据,当写入4096个数据时,读出了4096/5*4个数据,还有1/5的数据没被读出。4096*1/5取上整=205。


157. According to the timing report information given below, the clock period value in constraints should be?


startpoint: din_reg  (rising edge-triggered flip-flop clocked by CLK),
Endpoint: dout_ reg (rising edge-triggered flip-flop clocked by CLK).
Path troup: CLK.
Path Type: max
Point    Incr    Path
clock CLK (rise edge)    0.00    0.00.
clock network delay(idea1)    0.00    0.00
din_reg/CK (DFFX1)    0.00    0.00
din_reg/Q (DFFX1)    24.86    24.86
U3/X(BUFX1)    7.46    32.31
dout_reg/D (OFFX1)    0.00    32.31
data arrival time        32.31
clock CLK (rise edge)    50.00    50.00
clock network delay (ideal)    0.00    50.00
clock uncertainty    -5.00    45.00
dout_reg/CK (DFFX1)    0.00    45.00
library setup time    7.90    37.10
data required time        37.10
data required time        37.10
data arrival time        -32.31
slack (MET)        4.78
A. 32.31
B. 50
C. 37.10
D. 4.78

答案:B。两个clock CLK (rise edge) 的间隔为50ns,即时钟周期为50ns。


158. Which statement is NOT correct?( )

A. A static method has no access to non-static members (class properties or methods).
B. A static method can directly access static class properties or call static methods of the s
C. Static methods can be virtual
D. The static class properties can be used without creating an object of that pe.

答案:

方法可以声明为静态。

静态方法受所有类作用域和访问规则的约束,但其行为类似于可以在类外调用的常规子程序,即使没有类的实例化。

静态方法不能访问非静态成员(类属性或方法),但可以直接访问静态类属性或调用同一类的静态方法。

在静态方法主体中访问非静态成员或特殊this句柄是非法的,会导致编译器错误。

静态方法不能是虚的。


159. The logic module composed of two flip-flops. The delay value of each part: the output delay of the D flip-flop: Tco: setup time: Tsu; hold time: Thold; the clock period: T; the delay from the clock to the first-stage clock terminal: T1, to the clock delay of the second stage is T2; the delay of the combinational logic between the two flip-flops is Tcomb. Given T, the maximum Tcomb is______.

A. T-Tco- Tsu- Thold -(T1-T2)
B. T-Tco- Tsu +Thold -(T1-T2)
C. T-Tco- Tsu -(T1-T2)
D. T-Tco- Thold -(T1-T2)

答案:C。

setup : T1 + Tco + Tcomb + Tsu < T2 + T

hold : T1 + Tco + Tcomb > T2 +Thold

Tcomb > T2-T1+Thold-Tco;

Tcomb < T -Tco-Tsu-(T1-T2);

求Tcomb最大值,所以选C。


160. In SDC clock constraint definition, if master clock MST_CLK is 1000ps, what's the clock period or generation clock GEN_CLK?( )


create_ clock [get_ ports MST_CLK_PORT] -name MST_CLK-period 1000 -waveform {0 5000}
create_ generated _clock [get ports GEN_CLK _PORT] -name GEN_CLK -source [MST_ CLK_ PORT] –master_ clock MST _CLK -edges {1 3 5}
A. 1000ps
B. 2000ps
C. 3000ps
D. 5000ps

答案:B。

MST_CLK 的周期是 1000ps。

-edge:作为一个对应源时钟边沿的整数列表,表明从哪个沿产生生成时钟的边沿。时钟沿的个数为奇数个,至少3个。由1开始计数,表示第一个上升沿。

-edges {1 3 5} 则表示主时钟的第 1,3,5个边沿对应生成时钟的边沿。也就是二分频,选B。


161. Which statement is correct?( )

A. UVM test termination is using raise/drop uvm_object
B. When we set the verbosity to UVM_ LOW, the message with UVM_NONE cannot be issued.
C. If we set the configuration object in test layer, both subcomponents and sequences can retrieve its handle.
D. In SV language, It fails to cast a null pointer to an object. “$(abc, null);”

答案:A。

选项A,UVM1.1之后,结束仿真的机制有且仅有一种,就是利用objection挂起机制来控制仿真结束。uvm_objection类提供了一种所有component和sequence共享的计数器。如果有组件来挂起objection,那么它还应该记得落下objection。这个objection机制非常重要,在仿真的过程中,至少要有一个component挂起objection来防止仿真结束,这是UVM的范式。

选项B,错误,UVM_NONE的重要程度高于UVM_LOW,哪怕设置了UVM_LOW,UVM_NONE还是可以被报告。

选项C,不确定

选项D,可以将一个空指针给一个对象。


162. Which of the following descriptions of code coverage are incorrect?

A. A code coverage rate of 100 percent indicates that code bugs have been eliminated
B. Code coverage includes functional coverage
C. Code coverage includes conditional coverage
D. Code coverage includes statement coverage

答案:A。选项A,代码覆盖率到100%不代表没bug了,错误。B也错误,代码覆盖率和功能覆盖率是独立的两个覆盖率

代码覆盖率常用的指标:

语句覆盖(statement coverage),决策覆盖(decision coverage)也叫分支覆盖(branch coverage),条件覆盖(condition coverage)多重条件覆盖(multiple condition coverage)条件/决策覆盖(condition/decision coverage),改进的条件/决策覆盖(modified condition/decision coverage),路径覆盖(path coverage),函数覆盖率(function coverage);调用覆盖率(call coverage);循环覆盖率(loop coverage)等等。


163. The time required for an input data to settle_______ the triggering edge of clock is known as “Setup Time”.( )

A. Before
B. During
C. After
D. All of the above

答案:A。建立时间概念。


164. The difference in the clock latency between two sink pins is called.

A. Clock transition
B. Clock skew
C. Clock network delay
D. Clock jitter

答案:B。

Clock transition是时钟0-1翻转时间。

Clock skew是一个信号时钟沿着同一个时钟网络到达源寄存器和目标寄存器的时间差。

Clock network delay是时钟从时钟源到目的寄存器的时间。

Clock jitter是由于晶振不稳定导致的时钟抖动,不可避免。


165. Suppose metal min width is 3x and metal min-space is 5x, the metal pitch is: ( )

A. 4x
B. 5x
C. 6x
D. 8x

答案:D。

Metal pitch是指金属层上相邻两个电路线之间的距离,也可以理解为金属层的线宽和线间距之和。


166. What is the advantage of the cells with high threshold voltage?

A. High speed
B. Low leakage current
C. Small cell size
D. None of above

答案:B。

低阈值标准逻辑单元速度快、漏电流大。

高阈值标准逻辑单元速度慢、漏电流小。


167.为了避免50Hz电网电压的干扰进入放大器,应选用哪种滤波器?

A. 带通
B. 带阻
C. 低通
D. 高通

答案:B。

带通滤波器(Band-pass filter):只允许一定频率范围内的信号通过,其他频率的信号被滤除。它可以用于信号的频率分析和滤波,例如在调制解调、通信系统和音频信号处理等领域中。

带阻滤波器(Band-stop filter):只允许一定频率范围之外的信号通过,其他频率范围内的信号被滤除。它也被称为陷波器或拒频器,可以用于去除特定频率的干扰信号。

低通滤波器(Low-pass filter):只允许低于截止频率的信号通过,高于截止频率的信号被滤除。它可以用于去除高频噪声或者只保留低频信号的应用,例如音频信号处理中的低音增强。

高通滤波器(High-pass filter):只允许高于截止频率的信号通过,低于截止频率的信号被滤除。它可以用于去除低频噪声或者只保留高频信号的应用,例如音频信号处理中的高音增强。


168. Which of the following memories needs to keep refreshing? ( )

A. DRAM
B. SRAM
C. Flash
D. ROM

答案:A。


169. 单稳态触发器的输出状态有( )

A.一个稳态、一个暂态
B.两个稳态
C.只有一个稳态
D.没有稳态

答案:A。

一、单稳态触发电路:其工作特性具备如下三个特点。因此被广泛用于脉冲整形、延时(产生滞后于触发脉冲的输出脉冲)以及定时(产生固定时间宽度的脉冲信号)等。

(1)、它有稳态和暂稳态两个不同的工作状态。

(2)、在外界触发脉冲的作用下,能从稳态翻转到暂稳态,在暂稳态维持一段时间后,再自动返回稳态。

(3)、暂稳态维持时间的长短取决于电路本身的参数,与触发脉冲的宽度和幅度无关。

参考博客: 单稳态触发电路_单稳态电路_大不列颠小小咸鱼的博客-CSDN博客


170. 下列关于FTL, CMOS, ECE电路描述不正确的是( )

A. CMOS电路的输入端不用的话不能悬空,TTL的输入端不用的时候可以悬空。
B. CMOS输出可以直接驱动TTL输入,反之亦然。
C. ECL电路工作在截止区或线性区。
D. ECL集成电路的开关管具有很高的输入阻抗和低的输出阻抗,所以带负载能力强

答案:B。

TTL: 晶体管-晶体管逻辑(Transistor-Transistor-Logic )电路。

CMOS:互补型金属氧化物半导体(Complementary Metal-Oxide-Semiconductor)电路。

ECL:发射极耦合逻辑(emitter coupled logic)电路。

A: CMOS 电路不使用的输入端不能悬空,会造成逻辑混乱。因为CMOS电路输入阻抗非常高,很容易收到干扰,必须将不用的输入端接地。TTL电路不使用的输入端悬空为高电平。

B: TTL与CMOS电平、驱动能力不匹配,需要接口转换电路。

C: ECL电路(即发射极耦合逻辑电路Emitter-Couple Logic)是一种非饱和型的数字逻辑电路,电路内晶体管工作在线性区或截止区,速度不受少数载流子的存储时间的限制,所以它是现有各种逻辑电路中速度最快的一种, 能满足高达10Gbps工作速率

D: 由于 ECL 门电路的射极耦合电阻较集电极电阻大得多,因而输入阻抗高;输出电路是工作在放大状态的射极跟随器,其输出阻抗很低,因而 ECL 门电路带负载能力强。


171.如图所示的P型半导体MIS结构的C-V特性图中,AB段表示多子积累,CD段表示( )

A.平带状态
B.多子耗尽
C.少子反型
D.多子积累

答案:B。


172. 下列说法错误的是( )

A.为了节省功耗,多电压域设计中,电压域的划分越多越好
B. level shifter一般放在receiving domain
C.为了降低功耗,可以将大块的SRAM分割成多个小快
D.隔离单元在power down的情况下,一般将信号固定在高阻态

答案:A。

选项A.电压域划分越多,需要的level shifter数量就越多,设计复杂度也就越高,同时level shifter也会占用芯片面积和功耗,因此需要在电压域划分和level shifter的数量之间做出平衡。

选项B. level shifter通常被放在receiving domain中,因为其主要作用是将发送端和接收端之间的电压差转换为接收端可接受的电压范围内的信号,从而实现数据传输。

选项C.将大块的SRAM分割成多个小块可以降低功耗,因为小块SRAM的读写操作速度更快,访问时不需要同时打开所有SRAM单元,也可以避免因为大块SRAM同时访问时引起的功耗过大的问题。

选项D.隔离单元在power down的情况下,通常将信号固定在高阻态,避免漏电流导致的功耗和干扰。


173. 下列关于同步时序逻辑电路和异步时序逻辑电路中说法正确的是( )

A.异步时序逻辑电路有统一的时钟信号
B.异步时序逻辑电路的状态只有在时钟信号到来的时候才会发生变化
C.同步逻辑电路输出状态与时钟信号无关
D.同步时序逻辑电路有统一的时钟信号

答案:D。选项B,复位信号。


174.以下关于数字集成电路功耗的叙述中,不正确的是:( )

A.翻转功耗和短路功耗都属于动态功耗
B.翻转功耗是逻辑转换中对负载电容充放电产生的
C.翻转功耗的大小和电路时钟频率无关
D.可以通过降低电源电压来减小电路总功耗
E.在电路中多采用低阈值晶体管(LVT)可以减小静态功耗

答案:C


175.以下verilog代码中,clk,rst_n分别为时钟和复位信号,叙述不正确的有:( )


input clk, rst_n;
reg [3:0] counter;
reg out1;
reg out2;

always @(posedge clk or negedge rst_n)
begin
    if(~rst_n) 
        counter <= 4'b0;
    else 
        counter <= counter + 1;
end

always @(posedge clk or negedge rst_ n)
begin
    if(~rst_n) 
        out1 <= 1'b0;
    else if(counter[1:0] == 0) 
        out1 <= 1'b1;
    else if(counter[1:0] == 3) 
        out1<= 1'b0;
end
always@(*)
    out2 = counter[0] & counter[2];
A.counter [0]和counter[2]都来自寄存器,所以out2不会产生glitch
B.这段代码综合出的电路中,共有6个寄存器
C.out1可以认为是占空比为50%的时钟
D.out1的频率 是clk的1/4

答案:D。选项AB错误,out2是组合逻辑,不会综合出寄存器,组合逻辑可能产生glitch,C占空比为75%。


176.以下对计算机体系结构的叙述中,不正确的是:( )

A.CPU可以访问系统中所定义的所有地址空间
B.存储器分级的目的是解决存储容量与速度之间的矛盾
C.处理器采用流水线设计是为了提高时钟频率
D. write-through和write -back都属于cache的写策略

答案:A。CPU只能访问它所连接到的总线的地址空间,它不能访问不属于它所连接的总线的地址空间。

选项D正确,写策略是指当CPU要写入数据到Cache时,该数据是直接写入主存,还是先写入Cache,在一定条件下再写入主存。Write-through指的是数据写入Cache的同时也写入主存,Write-back指的是只有当该数据被替换出Cache时,才会写回主存。这两种写策略在实现上有所不同,但都可以用于Cache的设计。


177.下图所示的电路中,下列时序约束正确的是( )

时钟频率SCLK为200M

A. set_output_delay -min 1.9 -clock SCLK [get_ ports RDY]
B. set_output_delay -max 2.2 -clock SCLK [get_ports RDY]
C. set_output_delay -max 3.1 -clock SCLK [get_ ports RDY]
D. set_output_delay -min 1.0 -clock SCLK [get_ports RDY]

答案:C。

set_output_delay -min 2.2 -clock SCLK [get_ ports RDY]

set_output_delay -max 3.1 -clock SCLK [get_ ports RDY]


178.以下关于AMBA总线的叙述中,正确的是:( )

A. AHB支持burst传输
B.位宽为32 bit的BUS,每一笔读或写操作的数据都是32 bit
C. APB中可以有多个 master
D.时钟频率和数据位宽相同的情况下,APB的理论最大带宽是AHB的2倍

答案:A。选线B,可以小端少bit。选项C,APB是一主多从总线。选项D,理论最大带宽是AHB的1/2。


179.以下关于综合的叙述中,不正确的是:( )

A. clock uncertainty包括clock jitter和clock skew
B.对芯片中的子模块,综合阶轻set_input_delay设置的编入delay是不精确的
C.时序约束越紧越好,以给后端留出足够的余量
D.综合会把RTL代码最终转换为由工艺库中的逻辑单元组成的网表

答案:C。约束越紧,可能资源效果越多,功耗也会随之增加。


180.以下关于复位的叙述,错误的是:( )

A.相比同步复位,异步复位不需要时钟沿,所以对毛刺敏感
B.大多数工艺库中的触发器都有异步复位端,使用异步复位不需要额外组合逻辑
C.异步复位,同步释放可以防止复位释放时出现亚稳态
D.异步复位不需要进行recovery time和removal time检查

答案:D。异步复位同样需要进行recovery time和removal time检查,以确保复位信号在被释放之后芯片能够正常工作。


190.针对以下verilog代码的叙述,正确的是:( )


input clk, rst_n;
input [1:0] be;
input [1:0] data_in;
reg [1:0] data_out;
always@(posedge clk or negedge rst_n)
    if(~rst_n)
        data_out <= 2’ b00;
    else if(wen)
        data out <= (data_out & ~be) | (data_in & be);
A. wen=1'b1, be=2'b10时,data_out[1:0]=data_in[1:0]
B.代码中没有与第二个if匹配的else,判断条件不全,会导致综合出锁存器
C. wen=1'b1时,be的作用是控制data_out的各bit是否被写入为data_in对应bit的值
D. wen=1'b1,be=2'b00,data_in=2'b11时,data_out = 2'b00

答案:C。be的作用是控制data_out的各bit是否被写入为data_in对应bit的值。

若be=2'b10,~be=2'b01,data_out = {data_in[1], data_out[0]}


191.下列关于电路中锁相环的说法正确的是:( )

A.典型的锁相环由三个基本的部件构成,高通滤波器是其中一个
B.数字锁相环的英文缩写为APLL
C.锁相环可以用于信号相位和幅度的锁定
D.锁相环的输出电压可以和目标电压相位不同

答案:D。选项A,典型的锁相环由三个基本的部件构成为相位比较器、环形滤波器和电压控制振荡器。选项B,DPLL。选项C,锁相环主要用于相位和频率的锁定。


192.下列说法关于电路分析的方法错误的是:( )

A.频域分析方法可以用于研究信号幅度和相位随频率的变化规律
B.时域分析方法将激励与响应的电压、电流都表示为时间的函数
C.叠加定理可以用于线性电路的功耗计算,但不适用于非线性电路
D.瞬态分析常用非正弦信号作为电路的激励

答案:C。叠加定理只适用于线性电路,用于功率计算。


193. 下列关于全通系统的滤波器的零极点分布情况正确的是( )

A.极点在单位圆内,零点在单位圆外
B.极点在单位圆内,零点在单位圆内
C.极点在单位圆外,零点在单位圆内
D.极点在单位圆外,零点在单位圆外

答案:A。

参考博客: 数字滤波器(二)--最小相位延时系统和全通系统_爱吃骨头的猫、的博客-CSDN博客


194.下列关于CMOS器件特性说法正确的是:( )

A.一般而言,随着温度的升高,器件的动态功耗会大幅度增加。
B.一般而言,随着温度的升高,器件的静态功耗会减少。
C. NLDM与CCS都是延时计算模型,更小的工艺节点一般采用NLDM模型
D.同一电压下,HVT的leakage要比SVT的leakage要小。

答案:C。选项A,动态功耗公式为:P_dynamic=1/2CV^2f,温度升高,动态功耗不会大幅度增加。选项B,温度升高,电流增大,静态功耗会增加。

选项C,NLDM模型:精度较高,能够准确地计算各种情况下的延时时间。CCS模型:精度相对较低,但是计算速度快,适合大规模的电路设计和仿真。

选项D:HVT的leakage要比SVT的leakage大。这是因为HVT工艺使用的晶体管的漏电流比SVT工艺的晶体管漏电流大,而漏电流与晶体管的体积和电压有关。HVT工艺使用的晶体管相对于SVT工艺的晶体管来说,体积更大,而电压相同,漏电流就更大。


195.在多时钟域数字电路中,经常存在从一个clock domain(Clock A)到另一个clock domain (Clock B)的信号传输,这种传输路径称为CDC path。关于CDC以下哪个说法是对的?( )

A.只要Clock B快于Clock A,FB就不会有问题
B、只要Clock A的latency小于Clock B的latency,FB就不会有问题
C、FB会出现亚稳态(meta-stability)
D、FB在任何情况下都没有问题

答案:C,FB出现亚稳态。


196.电路如图所示,其中A,B,C,D分别是4个输入管脚,Z是输出管脚。假设某一个颗芯片由于生产缺陷造成内部节点E与地短路(其值始终保持为0),通过下面那种输入管脚激励的组合,可以通过在输出管脚观测的方法判断E点是否有制造缺陷?( )

A、ABCD=0111
B、ABCD=0011
C、ABCD=0001
D、ABCD=1011

答案:C。缺陷使得E为零,检测有无缺陷就让C为0,D为1,这样F为0。再让AB=0,使得Z为1。若Z不为1,则E有缺陷,故ABCD=0001。


197. Memory内部存储单元的耦合故障是指某个单元存储值的改变会使相邻存储单元变成相同的值。下面哪种测试算法可以将存在这种故障的芯片筛选出来?( )

A、往相邻的存储单元写入相同的值,然后读出比较是否符合预期
B、往相邻的存储单元写入不同的值,然后读出比较是否符合预期
C、往相间隔的存储单元写入相同的值,然后读出比较是否符合预期
D、往相间隔的存储单元写入不同的值,然后读出比较是否符合预期

答案:B。故障使相邻存储值一样,我们就存入不同的值。


198.OCV (on chip variation)是指工艺等因素导致的同一芯片上不同位置的MOS晶体管的性能会有一些差异。在静态时序分析中,下面哪项属于模拟OCV而做出的设置?( )

A、设置时钟uncertainty
B、设置timing derate
C、设置多个library覆盖不同corner,不同温度,不同电压
D、设置线与线之间的干扰

答案:D。STA不能设置线之间的干扰。


199.以下verilog语句:


always @(mem_array[addr])
    data = mem_array[addr);

其中,data的取值有哪些取值敏感?( )

A、addr的值
B、mem_array[addr]的值
C、mem_array[addr]的值以及addr的值
D、都不敏感

答案:C。使用了always块来定义一个组合逻辑电路,当mem_array[addr]的值发生变化时,会根据新的mem_array[addr]的值来计算data的值,并且这个过程是立即发生的。


200.可以正确表述以下fork join_any语句的是( )


initial begin
    fork 
        进程a
        进程b
        进程c
    join_any
    进程d
end
A、进程启动先后顺序从先到后:a,b,c,d
B、进程a,b,c同时启动,a,b,c有一个进程结束,进程d就可以启动
C、进程a.b,c,d同时启动
D、进程a,b,c同时启动,a,b,c进程都结束后,进程d再启动

答案:B。

1. fork-join语句会等待所有子程序都执行完毕后再继续执行后续代码。当所有子程序都完成后,join语句才会返回。

2. fork-join_any语句会等待至少有一个子程序执行完毕后就会继续执行后续代码。当有一个子程序完成后,join语句就会返回。

3. fork-join_none语句不会等待子程序执行完毕,而是直接继续执行后续代码。这种语句常用于一些无需等待子程序执行完毕的情况。

你可能感兴趣的:(数字IC设计基础及进阶知识,verilog,秋招笔试题,数字IC)