Bootstrap

华为海思招聘-芯片与器件设计工程师-数字芯片- 秋招/实习机试题——共九套

华为海思招聘-芯片与器件设计工程师-数字芯片方向- 机试题-题目分享——共九套(每套四十题)

岗位——芯片与器件设计工程师

岗位意向——数字芯片

真题题目分享,完整版带答案(有答案和解析,答案非官方,未仔细校正,仅供参考)(共9套)

实习岗位和秋招的题目是一样的

didadidadidida313

华为海思校园招聘-芯片-数字 IC 方向
(第九套)
单选
1 .以下低功耗措施中,哪种不是降低电路翻转率的方法
A. 在不进行算术运算的时候,使这些模块的输入保持不变,不让新的操作数进来
B. 采用 Gray 码或 One‐hot 码作为状态机编码
C. 减少电路中的 glitch 
D. 重新安排 “if‐else” 表达试,可将毛刺或快变化信号移至逻辑锥体的前部
2. 以下 Verilog 代码中, a=12 b=10. z 的运算结果为
Input [3:0]a; 
Input [3:0] b; 
output signed [7:0] z; 
wire signed [3:0]c; 
assign c= a[3:0]*b[3:0]; 
assign z=c; 
A.120 
B.‐8 
C.8 
D.‐120 
解析:
补位用符号位补上。 c=4’b1000‐‐>z=8’b11111000 (最高位为符号位)
考察:有符号数的位宽转换
有符号数的位转换关键在于符号位(首位)
1 )有符号数位宽小到位宽大(
4 位转换为 8 位)
关键操作:转换时,高位补原符号位!!!(区别于无符号数的高位补零)
例如:将 4 位有符号数 1100 ,转换为 8 位有符号数。
2 )有符号数位宽大到位宽小(
8 位转换为 4 位)
有符号数位宽大到位宽小的转换就很简单了,直接截取低 n 位即可。
例如:将 8 位有符号数 1111 1100 ,转换为 4 位有符号数。
因此,对于短位宽赋值给长位宽的情况,需要对高位进行位扩展,具体是扩展 1 还是扩展 0
记住:完全依据右操作数 ! ,具体如下:
1 )右操作数是无符号数,则无论左操作数是什么类型,高位都扩展成 0
2 )右操作数是有符号数,则要看右操作数的符号位,按照右操作数的符号位扩展,符号位
1 就扩展 1 ,是 0 就扩展 0 3 )位扩展后的左操作按照是无符号数还是有符号数解析成对应的十进制数值,如果是无符
号数,则直接转换成十进制数值,如果是有符号数,则看成 2 的补码解析成十进制数;
4 )从上面 4 种情况看出,有符号数赋值成无符号数会出现数据错误的情况,因此要避免这
种赋值,而其他情况都是可以保证数据正确的。
3 constraint c_0{ 
src dist {0:=30, [1:3]:=90}; 
请问如上表达式约束, src 数值为 0 的概率为多大 :( ) 
A. 0.2 
B. 0.25 
C. 0.1 
D. 0.6 
解析:
Systemverilog 中权重分布由操作符 dist 实现,有两种形式: =” /”
=” 表示值的权重是相等的, /” 表示值的权重是均分的。
权重不用百分比表示,权重和也不一定是 100. 
例如:
src dist {0:=40; [1:3]:=60;}; 
src=0 的概率是 40/220 src=1 的概率是 60/220 ,是 2 的概率是 60/220 ,是 3 的概率是
60/220. 
再例如:
dst dist {0:/40; [1:3]:/60;}; 
dst=0 的概率是 40/100 dst=1 的概率是 20/100 ,是 2 的概率是 20/100 ,是 3 的概率是
20/100. 
综上: src dist {0:=30; [1:3]:=90;}; dst=0 的概率是 30/(90*3+30)=30/300=0.1 
4. 分析下面的一段程序,正确的打印结果是
fork 
begin 
#20 
$ display("A"); 
end 
begin 
#10 
$ display("B"); 
end 
join_none 
#5 
$ display("C"); 
A.CBA 
B. BCA 
C.ABC 
D.C 
解析: https://blog.csdn.net/qq_31348733/article/details/100382377 
1 join:The parent process blocks until all the processes spawned by this fork complete. 
简单来说: fork…join 内的所有语句都是并发执行(对于 begin…end 内部是顺序执行)
2 join_any:The  parent  process  blocks  until  any  one  of  the  processes  spawned  by  this  fork 
completes. 
简单来说:一旦 fork…join_any 内任何一个线程完成,父线程就会继续运行
3 join_none:The parent process continues to execute concurrently with all the processes spawned 
by  the  fork.  The  spawned  processes  do  not  start  executing  until  the  parent  thread  executes  a 
blocking statement or terminates. 
简单来说:子线程和父线程会同时执行。
5 .下面有关 Cache 的说法哪一个是不正确的
A.  设置 Cache 的理论基础,是程序访问的局部生原理
B. Cache 与主存统一编址, Cache 的地址空间属于主存的一部分
C.  设置 Cache 的目的,是解决 CPU 和主存之间的速度匹配问题
D. Cache 的功能匀由硬件实现,对程序员是透明的
解析:
A :使用 Cache 改善系统性能的依据是程序的局部性原理   [1] 
B cache 的地址与内存地址是两码事,不统一编址,也没有从属关系
C Cache 是介于 CPU 和主存之间的小容量存储器,存取速度比主存快,接近 CPU 。它能高
速地向 CPU 提供指令和数据,提高程序的执行速度。 Cache 技术是为了解决 CPU 和主存之
间速度不匹配而采用的一项重要技术。
D Cache 是主存的缓冲存储器,由高速的 SRAM 组成,所有控制逻辑全部由硬件实现,对
程序员而言是透明的。随着半导体器件集成度的不断提高,当前有些 CPU 已内置 Cache ,并
且出现了两级以上的多级 Cache 系统。
Cache 通常采用相联存储器。 Cache 又分为 L1Cache (一级缓存)和 L2Cache (二级缓存),
L1Cache 主要是集成在 CPU 内部,而 L2Cache 集成在主板上或是 CPU 上。
6 .对于独立复位的模块 , 只需要考虑对后级模块的影响,无需考虑对前级模块的影响。
A. 正确
B. 错误
解析: B 考虑到可能会存在反馈电路,因此选择错误。
7 System Verilog 中,下面那种数组在使用前需要先执行 new 操作 ( ) 
A. Dynamic arrays 
B. Associative arrays 
C. packed array 
D.  多维数组
8.System Verilog , 下面哪种数组在使用前需要执行 new 操作 ( ) 
a. 压缩数组
b. 联合数组
c. 动态数组
d. 多维数组 解析 : 动态数组通过 new ( ) 函数预先分配存储空间
9 .下列哪个不是 Verilog 系统函数 ( ) 
A. $ finish 
B. $ head 
C. $ time 
D. $ write 
解析:
$readmemb $readmemh 用来从文件中读取数据到存贮器中。
$finish 的作用是退出仿真器,返回主操作系统,也就是结束仿真过程。
$write(p1,p2,....pn); 输出信息,即将参数 p2 pn 按参数 p1 给定的格式输出。
$time 返回一个 64 位的整数来表示当前的仿真时刻值
10 .以下 Verilog 运算符号中,优先级最高的是
;