华为海思 2021数字芯片/IC 笔试题+解析

题目来源于众多网友对笔试的记录、回忆。

理解不到位,难免出错,解析仅为个人看法,有不同意见请留言指教,谢谢!

题型:

        30个单选+10个多选

单选

1.影响芯片成本的主要因素是die size和封装,但电源、时钟等因素,特别是功耗对解决方案的成本影响较大,因此低成本设计需要兼顾低功耗设计:

A.错误                                 B.正确

解析:B
常识题,低成本设计要兼顾低功耗设计,需要注意记住他的前半句,
影响芯片成本的主要因素是die size 与封装。

2.reg[31:0] big_vect;big_vect[0+:8]是多少?

A.big_vect[0:7]                 B.big_vect[7:0]

解析:B
要看data是从高位向低位定义还是低位向高位定义,表达式的位顺序取决于此。

data[0+:8]
代表从0bit开始,向上加8bit的数,也就是0:7。
data定义如果是高位到低位(reg[127:0] data),那这个数就代表data[7:0],
反之(reg[0:127] data)则代表data[0:7];

data[127-:8]
代表从127bit开始,向下减8bit的数,也就是127:120。
data定义如果是高位到低位,那这个数就代表data[127:120],反之则代表data[120:127];

3.generate语句中的循环控制变量应该定义为integer类型。

A.错误                               B.正确

解析:A
generate语句中的循环控制变量应该定义为genvar.
以下是generate的用法实例:
通过generate可以产生一个对象的多次例化,减少代码量。      
      // Generate block
      genvar i;
     generate
         for(i=0; i<8; i=i+1) begin:BLOCK1
             buffer_1 buffer_1_1(.in(din[i]), .out(dout[i]));
        end
     endgenerate

4.o10换算成十进制是多少?

A.8                 B.16                 C.10                 D.2

解析:A
o10表示8进制的10,换算成十进制=1*8^1+0*8^0=8

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

A.组合逻辑中条件不全的case语句没有default赋值

B.时序逻辑中if选择语句,没有else部分表达

C.使用if选择语句的组合逻辑没有else部分表达

D.使用case选择语句的组合逻辑没有else表达

解析:B
时序电路有记忆功能,不会产生锁存器,锁存器一般在组合逻辑中case写不全,
else写不全,或者敏感列表写不全。

6.关于类的构造函数,以下说法中正确的有

A.函数体中必须有new语句

B.返回类型是void类型

C.函数名与齐类名完全相同

D.不能有形参

解析:C
类可以认为是用户定义的一种数据类型
类的显式定义有new(),隐式定义无,new()的作用是进行初始化,没有new()时,类默认为null,A错;
构造类可以没有返回值,也没有返回值类型,但是可以有参数(包括形参int a),D错;
类名与函数名一样,C对;
返回值类型不一定是void,void用于有返回值的数据类型,用来取消返回值,B错
类的显式定义如下:
class Packet;
  bit [31:0] addr;
  function new ();//显示定义构造方法,并在方法中对addr进行初始化
    addr = 32'hfade_cafe;
  endfunction
Endclass

类的隐式定义如下:
class Packet;//没有显示定义构造方法
  bit [31:0] addr;
endclass

7.中断指示寄存器由实时告警的状态触发,是只读寄存器。

A.错误                         B.正确

解析:B
中断寄存器是只读的,当发生中断时,硬件会自动将该寄存器对应位置置1.

8.下面的选项中关于宏定义的说法不正确的是?

A.宏定义文件最好放在一个文件中集中管理,防止出现不同项目需要修改为不同的宏定义值,但是却漏改了某些地方的情况出现。

B.综合的时候,define可以跨文件列表生效

C.如果模块中有很多宏定义,在模块的文件列表最后需要undef掉使用的宏,防止和其他模块的宏定义冲突。

D.仿真时如果出现宏定义冲突,后面的define值会覆盖前面的define值。

解析:C
A对。宏定义最好放到同一个文件中集中管理,比如放到para.v中,使用的时候
include “para.v”调用即可。
B对.define可以跨文件使用,parameter可以跨module使用,localparam只能在本module使用。
C错,把不希望下面使用的宏undef掉。
D对,后面的宏会覆盖前面的宏。

9.在systemverilog中,函数(task)可以调用函数任务(function)。

A.错误                                 B.正确

解析:
Btask与function
Function不能有延时,不能有调用,不能事件触发,相当于一块组合逻辑;
task可以有延时,可以调用,可以事件触发。
Function只能与主模块用同一个仿真时间单位,task可以有自己的单位。
Function不能调用function和task,task可以调用function和task。
Function至少一个输入变量,task可以没有或者有多个输入值。
Function返回一个值,task则不返回值。

10.假设输入信号X位宽为12bitinA位宽为6bit,inB位宽为17bit,实现Y = X*inA+inB功能,并要求不损失精度,呢么输出信号Y位宽应不小于()?

A.17bit                 B.12bit                 C.18bit                 D.19bi

解析:D
[11:0]*[5:0]=[17:0]  [17:0]+[16:0] = [18:0]

11.reg[7:0] mem[1:256];initial $readmemh(“mem.data”,mem,128,1);对于mem行为正确的描述是()?

A.从地址128开始,写到地址1

B.从地址128开始,写1个地址

C.从地址1开始,写128个地址

解析:A
$readmemh(“mem.data”,mem,128,1) 表示从mem.data中读取数据写进mem寄存器,
从地址128开始写到地址1

12.九进制数16与九进制数27相加的结果用九进制表示为()?

A.45.0                 B.46.0                 C.43.0                 D.44.0

解析:D
九进制16表示的十进制数=1*9^1+6*9^0=15,九进制27表示的十进制数=2*9^1+7*9^0=25
十进制的40= 4*9^1+4*9^0=九进制的44

13.有关DFT,以下说法不正确的是()?

A.scan的设计规则,需保证时钟复位可控             B.ECO时无须关注DFT网表

C.主流的scan方式采用MUX-DFF                         D.MBIST指的是对memory的BIST测试

解析:B
ECO表示工程改动要求,就是代码不能修改之后,工程有问题,再对设计进行的手工门级修改,
这一步必定要关注DFT网表,DFT表示可测性设计,用来测试芯片加工过程中出现的问题。
Scan中要保证时钟复位可控,是对的;主流的scan方式采用Mux-DFF,就是在dff的输入端加入mux,
这是对的;bist在设计时在电路中植入相关功能电路用于提供自我测试功能的技术,
以此降低器件测试对自动测试设备(ATE)的依赖程度。
包括LBIST和MBIST,前者用于测试随机逻辑电路,后者用于测试存储器。

14.对芯片性能影响最大的三个因素是PVT,分别是指?

A.package,voltage,temperature

B.process,voltage,temperature

C.process,verification,temperature

D.process,voltage,test

解析:B
影响芯片性能的三大因素-PVT
1)Process:考虑制造工艺不定因素,提供制程因子
2)voltage:工作电压,电压越高,延时越小
3)temperature:工作温度,温度越高,延时越大

15.下面这段代码,说法错误的是()?

always @posedge clkbegin

        din_dly <= din;

end

A.din_dly 用来当控制信号是安全的

B.din_dly不受复位影响

C.数据寄存推荐这样的写法

D.din的不定态会传递到din_dly

解析:A
din_dly不能当控制信号,因为没有进行打拍处理,可能将din的不定态传递出去,
影响系统稳定,A错,D对;
触发条件没有复位信号,故din_dly不受复位信号影响,B对;
数据寄存推荐这样写法,因为数据寄存不需要复位,C对。

16.下列不属于动态数组内建函数的是()?

A.delete                 B.new[]                 C.size()                 D.length()

解析:A
动态数组内建函数
Size:用来约束动态数组元素的个数;
length:防止数据越界,即控制数据的位宽;
new是构造函数,创造对象空间;
Delete用于给队列删除元素,A错;

17.关于功耗,以下描述不正确的是():

A.改变芯片的供电电业和时钟频率都会对芯片功耗产生影响

B.设计者需要关注平均功耗、峰值功耗和功耗跳变

C.芯片的功耗会受实际信号的影响,所以功耗测试需要结合业务来开展

D.对于可关断的模块,使用时钟门控即可降低功耗

解析:C/B
我认为这个题四个选项都对,但是非要选一个的话,我觉得B\C之间二选一,个人倾向C,
我认为芯片功耗测试的时候,是在芯片上跑最大业务来测功耗,
选项C的意思是说要结合实际的各种业务来测,说的不准确,因此这里C错。
其实本题B选项中的功耗跳变是什么我也没看懂,可能B也有问题。

18.为实现占空比50%三分频时钟,下面描述的电路,正确的是()?

A.用待分频时钟上升沿采样计数,产生占空比1/3的分频时钟A;用待分频时钟上升沿采样计数,产生1个占空比2/3的分频时钟;把A与B相或得到50%占空比时钟。

B.用待分频时钟上升沿采样计数,产生占空比1/3的分频时钟A;用待分频时钟下降沿采样计数,产生1个占空比1/3的分频时钟;把A与B相与得到50%占空比时钟。

C.用待分频时钟上升沿采样计数,产生占空比1/3的分频时钟A;用待分频时钟下降沿采样计数,产生1个占空比1/3的分频时钟;把A与B相或得到50%占空比时钟。

D.用待分频时钟上升沿采样计数,产生占空比1/3的分频时钟A;用待分频时钟上升沿采样计数,产生1个占空比2/3的分频时钟;把A与B相与得到50%占空比时钟。

解析:B
三分频占空比50%的时钟,先采上升沿实现占空比1/3的分频时钟A,
再采下降沿实现占空比1/3的分频时钟B,两者相与即可。

19.关于冯诺依曼结构和哈佛结构的描述中,错误的是()?

A.冯诺依曼接口中程序计数器负责提供程序执行所需要的地址

B.哈佛结构中取指令和执行不能完全重叠

C.冯诺依曼结构的计算机中数据和程序共用一个存储空间

D.哈佛结构的计算机在一个机器周期内科同时获得指令和操作数

解析:B
哈佛结构由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠
哈佛结构与冯诺依曼结构的区别就是哈佛结构中数据与指令分开存储,可以同时获取。

20.状态机必须有1个缺省状态?

A.正确                                B.错误

解析:A
状态机必须要有一个缺省状态,相当于case必须要有default,防止生成锁存器,
使电路更加简洁,也防止电路进入未知状态。

21.a1a2的检查效果完全一样?

property p1;

@(posedge clk) a|=>b|=>c;

endproperty

a1:assert property(p1);

property p2;

@(posedge clk) a##1 b##1 |->c;

endproperty

a2: assert property(p2);

A.正确                                B.错误

解析:A
断言检测:a1与a2的检查效果一样。
(|->)表示交叠蕴含,指左边条件发生时,立即在同一个上升沿检测右边。
(|=>)表示非交叠蕴含。指左边条件发生时,在下一个周期检测右边。
本题a1表示上升沿到来之后检测到a=1,下一个周期b=1,再下一个周期c=1;
A2表示上升沿到来之后检测到a=1,延时一个周期b=1,再延时一个周期立即检测c=1;

22.以下关于flase-path,正确的是()?

A.一般模拟IP和系统的互联接口都可以设置为flase-path。

B.一般异步电路可以设置为flase-path。

C.一般异步复位可以设置为flase-path。

D.两个不同频率之间的接口一定可以设置为flase-path。

解析:A
A是正确的。模拟ip的时钟频率一般远小于数字电路,因此对数字电路的时序不敏感,
互联接口可以设置false path。

B是错误的。设置false path的原因是该路径没必要满足特定时序(比如
setup/hold,recovery/removal,clock gating,max delay等特定时序)。
虽然异步电路时钟之间没有固定的相位关系,工具没法直接做reg-reg的setup/hold检查,
但是可以设置max delay等特殊约束对需要满足一定时序关系的异步电路做检查,需要看具体的场景。

C是错误的。对于异步复位,指的只是寄存器使用了异步复位端口async_reset,
在复位的时候复位信号可以是异步的。但它在释放的时候是需要满足recovery-removal时序检查的,
需要做同步释放,因为做了同步,所以STA工具有能力做检查。所以异步复位不能设为false path,
需要检查recovery-removal时序。

D是错误的。频率不同和false path没有任何关系。而异步电路的频率可能不同,
但是频率不同不等于异步电路,异步电路的本质是来自不同晶振的时钟源驱动的电路,
他们频率甚至也可以相同。


23.在verilog中,比算数运算符+优先级高的是?

A.&                         B.%                         C.>                         D.!==

解析:B
B 表中可以看出取反乘除取余加减这种运算符优先级高,接下来是移位,再接下来是等价判断符,
最后是逻辑运算符。

 24.有关功耗,以下说法不正确的是()?

A.电压越大,工作频率越高,其动态功耗越高

B.低功耗设计的目标就是采用各种优化技术和方法,在各个设计目标之间找到最佳的结合点

C.设计层次越高,功耗优化所能达到的效果越好

D.芯片单位面积的动态功耗和静态功耗随着工艺的发展呈下降趋势

解析:D
随着工艺的上升,晶体管阈值降低,漏电流变大,静态功耗变大。

25.generate for 循环语句中使用的标尺变量可定义为integer?

A.错误                                 B.正确

解析:A
generate for中使用的标尺变量是genvar

26.在时钟上升沿时采样到start有效开始,两个时钟周期后,信号“a”连续或者间断地出现3次为高电平,紧接着信号“stop”在下一周期为高的是哪个?

A.property p0;

@(posedge clk)$rose(start1) |-> ##2(a[=>3]) ##1 stop;

endproperty

a0:assert property(p0);

B. property p0;

@(posedge clk)$rose(start1) |-> ##2(a[*3]) ##1 stop;

endproperty

a0:assert property(p0);

C. property p0;

@(posedge clk)$rose(start1) |-> ##2(a[->3]) ##1 stop;

endproperty

a0:assert property(p0);

D. property p0;

@(posedge clk)$rose(start1) |-> ##2(a[=3]) ##1 stop;

endproperty

a0:assert property(p0);

解析:C
a[->3] ## 1stop表示a要连续或者间断的在三个上升沿为高,且第三次为高的下一个时钟
周期stop为高。符合题目所说。
其中要说明下的是D选项a[=3] ## 1stop,他表示a要连续或者间断的在三个上升沿为高后
stop可以立即为高也可以过几个周期为高。

27.ASIC开发流程中,如下环节的先后顺序是?

A.synthesis->P&R->RTL

B.RTL-> P&R-> synthesis

C.RTL-> synthesis-> P&R

D. synthesis-> RTL-> P&R

解析:C
先rtl设计,然后synthesis(综合),再布局布线(P&R)

28.以下关于flase-path,正确的是()?

A.一般模拟IP和系统的互联接口都可以设置为flase-path。

B.一般异步电路可以设置为flase-path。

C.一般异步复位可以设置为flase-path。

D.两个不同频率之间的接口一定可以设置为flase-path。

解析:A
A是正确的。模拟ip的时钟频率一般远小于数字电路,因此对数字电路的时序不敏感,
互联接口可以设置false path。

B是错误的。设置false path的原因是该路径没必要满足特定时序(比如
setup/hold,recovery/removal,clock gating,max delay等特定时序)。
虽然异步电路时钟之间没有固定的相位关系,工具没法直接做reg-reg的setup/hold检查,
但是可以设置max delay等特殊约束对需要满足一定时序关系的异步电路做检查,需要看具体的场景。

D是错误的。频率不同和false path没有任何关系。而异步电路的频率可能不同,
但是频率不同不等于异步电路,异步电路的本质是来自不同晶振的时钟源驱动的电路,
他们频率甚至也可以相同。

C是错误的。对于异步复位,指的只是寄存器使用了异步复位端口async_reset,
在复位的时候复位信号可以是异步的。但它在释放的时候是需要满足recovery-removal时序
检查的,需要做同步释放,因为做了同步,所以STA工具有能力做检查。所以异步复位
不能设为false path,需要检查recovery-removal时序。

29.有关综合的说法,一下哪个选项是错误的?

A.综合网表可用于EDA功能仿真

B.时序逻辑always语句中,if-else如果else的分支缺乏,会综合成latch

C.casez是不可综合的

D.相同的RTL代码,每次综合出来的网表可能是不一样的

解析:B
casez属于有些工具可综合,有些工具不可综合,这里不一定对错;
B肯定不对,因为时序逻辑有记忆功能,不会产生锁存器。

30.下面是一个什么电路()?

Always @(posedge clk)begin

        If(rst_n == 1’b0)

                a<=2’b0;

        else if (b>2’b0)

                a<= b;

        end

A.综合成latch                                B.带异步复位的D触发器

C.组合逻辑                                    D.带同步复位的D触发器

解析:D
同步复位的D触发器,没啥可说的。

多选题:

31.添加断言(SVA)的作用主要包含以下哪些方面()?

A.增加覆盖率的检查,保证自己希望冲击的场景都被冲击到。

B.部分bug需要积累效应才会暴露,验证环境难以构造足够长时间的用例用冲击出来,通过断言可以有效解决。

C.复杂逻辑中添加assertion,增加微观检查,做补充验证,相当于验证的白盒检查。

D.关键节点添加assertion,帮助设计人员迅速找出代码出错点,提高问题定位的效率。

解析:ABCD 
没啥问题,应该都对,仅仅觉得B可能有点问题,但是没查到。

32.多bit信号跨时钟域同步常用的方式有()?

A.DMUX                 B.打三拍                 C.乒乓buffer                 D.异步fifo

解析:ABD
乒乓Buffer是用于提高数据吞吐率的,这里需要解释一下的是DMUX,
DMUX相当于一个D触发器+一个多路选择器,MUX充当的作用就是触发器的一个使能信号。
判断源时钟域的单比特信号是否在目的时钟域成功同步,
如果是,那么这个时间长度下多比特信号也可以同步过来,而不违背建立时间。

33.Formality是由synopsys公司开发的一种形式验证(Formal verification)工具,用于两个design之间的等价性验证,它可以支持如下哪些等价性验证()?

A.RTL级对RTL级                 B.RTL级对门级网表                 C.门级网表对门级网表

解析:ABC
Formality 可以实现对RTL、门级网表之间任意两者之间的等价性验证。

34.下列表达式中,哪些可以使用一个或多个二输入与非门器件实现?

A.A&B                 B.常数1                 C.~A                 D.A+B

解析:ABCD 
与非门是通用门,可以实现任何组合逻辑。

35.DFT设计增加的电路一般包括()?

A.SCAN                 B.JTAG                 C.BIST                 D.MBIST

解析:ACD 
A是边界扫描,C是自建内测试,D是存储器自建内测试,
B是下载通道,在dft里面的边界扫描大多是通过这个实现的。他是芯片自带的,不是DFT额外加的。

36.在STA分析中,下列选项中哪些属于时钟的时序特性()?

A.时钟频率                B.时钟占空比

C.时钟抖动                D.时钟偏移

解析:ABCD
时钟的时序特性包括时钟周期、时钟占空比、时钟转换时间、时钟延迟、时钟偏斜和时钟抖动。

37.不满足下列哪些时间要求,会产生时序问题()?

A.hold时间                 B.recovery时间                 C.setup时间

解析:ABC
B是复位信号要进行检查的

38.verilog语法关于任务和函数,描述正确的有()?

A.任务可以调用函数(function)                B.函数可以调用任务

C.函数可以调用函数                                    D.任务(task)可以调用任务

解析:AD
函数(function)就是块组合逻辑,任务(task)是个事件,函数不能调用函数和任务,
任务可以调用函数和任务,函数要有一个或多个输入且要有返回值,
任务可以有输入也可以没有输入,也没有返回值,函数不能有延时、事件触发,任务可以。

39.对于设计中所使用的的pipelin,说法正确的有()?

A.使用pipeline一定可以减少面积

B.使用pipeline可能会导致面积增大

C.使用pipeline会对时序有好处,STA更容易通过

D.使用pipeline会导致数据延时增加,但如果工作频率不变,系统的吞吐量不会改变

解析:BC
需要注意的是D选项,工作频率不变,系统的吞吐量也会变大。

40.下列说法不正确的是()?

A.设计异步FIFO时采用格雷码的原因主要是为了省功耗

B.对单比特控制信号采用双寄存器法打拍就可以消除亚稳态

C.异步处理需要考虑发送和接收时钟之间的频率关系

D.尽量将异步逻辑和同步逻辑剥离开,分别在不同的模块中实现

解析:AB
A,是为了防止亚稳态 B单比特信号快到慢打拍没用。

真正的强大不是不软弱,而是能接受自己的软弱,能接纳真实的自己才是强大。--阿然

  • 72
    点赞
  • 560
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
### 回答1: 华为海思2021数字芯片IC笔试题目主要分为两部分,一部分是单选题和多选题,另一部分则是编程题。 单选题和多选题主要考察对数字电路和计算机原理的理解,题目涵盖了数字信号处理、数制转换、寄存器、存储器、逻辑门电路等方面的知识。需要注意的是,有些题目看似简单但是需要注意细节,例如计算机的存储空间测量单位是字节而不是位。 编程题则需要根据题目要求编写相应的程序。一般来说,编程题比较难,需要对编程语言和算法都有比较深的理解。此次考试的编程题主要考查了对链表的理解和程序设计能力。 通过本次考试,可以看出华为海思2021数字芯片IC笔试题目难度较大,需要对相关领域有深入的掌握和理解。在备考期间,应该多加练习和思考,增加对基础知识的掌握和应用能力。 ### 回答2: 华为海思2021数字芯片IC笔试题主要考察了应聘者对于数字电路设计的相关知识点的理解和应用能力。测试题分为两部分,一部分是基础知识选择题,另一部分是设计题。 基础知识选择题主要考察了应聘者对于数字电路、布尔代数、时序分析等基础知识点的了解。比如,有一道题目是让应聘者判断一段代码是否可以正确地实现计数器功能。这需要应聘者对计数器的基本组成原理和实现方法有充分的了解。 设计题则更加考验应聘者的应用能力。其中,一道题目要求应聘者根据给定的电路输入、输出和时钟信号,设计出一个可靠稳定的时序电路。这需要应聘者对时序电路的编程能力、逻辑设计和时序分析能力有较高的掌握。 对于应聘者而言,需要提前充分准备,熟悉数字电路设计相关知识点,深入理解数字电路的实现原理和设计方法。同时,要注重考虑实际应用需求和技术实现可行性,保证设计方案的有效性。只有全面掌握相关知识和技能,才能在笔试中取得更好的成绩,从而在海思数字芯片IC设计岗位中取得更好的工作机会。 ### 回答3: 华为海思2021数字芯片IC笔试题主要考察了应聘者在数字电路设计Verilog语言、RTL综合等方面的知识掌握程度和综合应用能力。试题设计难度适中,较为贴近实际工作中的应用场景。 第一题是给定一组规定的时序图,要求设计Verilog代码和RTL电路图,实现一个4位带使能端的同步锁存器。此题考查了对时序逻辑电路的理解,需要应聘者能够将时序图抽象成基本的组合逻辑与时序逻辑模块,结合Verilog语言编写可合成的Verilog代码和RTL电路图。 第二题是仿真题目,要求给定Verilog代码进行仿真,并观测输出信号,分析仿真结论。此题考查了对数字电路仿真的能力和Verilog语言的掌握程度,需要应聘者熟悉Verilog仿真工具的使用方法,能够正确编写测试代码,并对仿真结果进行分析。 第三题是RTL综合题目,给定Verilog代码,要求进行RTL综合并生成门级网表文件。此题考查了对数字电路综合的理解和工具使用能力,需要应聘者熟悉数字电路综合的各项规则,能够正确地进行综合操作,并生成准确的门级网表文件。 总体来说,华为海思2021数字芯片IC笔试题考查了应聘者的数字电路设计和RTL综合等方面的综合应用能力,较为贴近实际工作。应聘者可以通过思考、练习和掌握基本的数字电路设计和RTL综合知识,提升答题能力和应用水平,更好地应对类似的笔试题目。
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值