最近收到诸多粉丝的来信,要求出一版《数字 IC 设计、FPGA 设计秋招笔试题精讲》,于是,通过几天几夜的加班加点,终于出了这一版《2021 华为海思秋招笔试题目、答案、解析》,以后每隔 7 天就会出好几套卷,助各位数字 IC 设计者斩获大厂的高薪 Offer!!!
PS:纯题目的 PDF 版本可联系博主获取~
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
详细解析:这道题不就是书上的内容嘛!需要对向量的抽取有着较深的掌握,对于抽取符号 +:,其左边 0 表示起始位置,其右边 8 表示向量抽取位宽或者 Length,然后定义的是从最高位到最低位,对应下来所以选择 B,A 只是干扰的
3、generate 语句中的循环控制变量应该定义为 integer 类型()
A. 错误
B. 正确
正确答案:B
详细解析:定义的类型是 genvar,有写过这个代码的应该都是了解的,for 才是 integer
4、o10 换算成十进制是多少?()
A. 8
B. 16
C. 10
D. 2
正确答案:A
详细解析:o07 表示 7,+1 就是进位了,即 o10 = 8
5、哪些情况下不会产生 Latch 电路?()
A. 组合逻辑中条件不全的 case 语句没有 default 赋值
B. 时序逻辑中 if 选择语句,没有 else 部分表达
C. 使用 if 选择语句的组合逻辑没有 else 部分表达
D. 使用 case 选择语句的组合逻辑没有 else 表达
正确答案:B
详细解析:等你入职就会经常用到 B 的这种写法,这是一种低功耗 CG 设计的写法,不会生成锁存器 Latch
6、关于类的构造函数,以下说法中正确的有()
A. 函数体中必须有 new 语句
B. 返回类型是 void 类型
C. 函数名与齐类名完全相同
D. 不能有形参
正确答案:C
详细解析:
A:类可以认为是用户定义的一种数据类型,类的显式定义有 new(),隐式定义无,new() 的作用是进行初始化,没有 new() 时,类默认为 null,A 错;
B:构造类可以没有返回值,也没有返回值类型,但是可以有参数(包括形参 int a),D 错;
C:类名与函数名一样,C 对;
D:返回值类型不一定是void,void用于有返回值的数据类型,用来取消返回值,B 错
7、中断指示寄存器由实时告警的状态触发,是只读寄存器。()
A. 错误
B. 正确
正确答案:B
详细解析:中断状态寄存器是只读寄存器,只有软件经过处理之后,消除了这种告警状态,硬件就会对其自动清零
8、下面的选项中关于宏定义的说法不正确的是?( )
A. 宏定义文件最好放在一个文件中集中管理,防止出现不同项目需要修改为不同的宏定义值,但是却漏改了某些地方的情况出现。
B. 综合的时候,define 可以跨文件列表生效
C. 如果模块中有很多宏定义,在模块的文件列表最后需要 undef 掉使用的宏,防止和其他模块的宏定义冲突。
D. 仿真时如果出现宏定义冲突,后面的 define 值会覆盖前面的 define 值
正确答案:C
新芯设计:关于宏定义,可以找本书好好看看
这里 undef 宏定义的话,那么该宏定义就不生效了
9、在 systemverilog 中,函数(task)可以调用函数任务(function)。( )
A. 错误 B. 正确
正确答案:B
详细解析:Function 不可以调用 Function 和 Task,反之,Task 可以调用 Function 和 Task
10、假设输入信号 X 位宽为 12bit,inA 位宽为 6 bit,inB 位宽为 17bit,实现 Y = X*inA + inB 功能,并要求不损失精度,那么输出信号 Y 位宽应不小于( )?
A. 17bit B. 12bit C. 18bit D. 19bit
正确答案:D
详细解析:这是数值计算导致的位宽扩大
对于乘法,结果的位宽是二者之和,对于加法,结果的位宽是最大位宽加一,综上,12 + 6 + 1 = 19
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
详细解析:主要考察数组的定义和写法,这里,128 表示起始地址,1 表示最终地址
12、九进制数 16 与九进制数 27 相加的结果用九进制表示为( )?
A. 45.0 B. 46.0 C. 43.0 D. 44.0
正确答案:D
新芯设计:这种题目跟高考类似,实际用不到,但是考察答题者的应变能力
9 进制,那么 16 就是 10 + 6,这里的 10 表示 9,因此 16 就是 'd15,同理,27 就是 'd25,二者之和十进制是 'd40,转换成九进制就是 44
13、有关 DFT,以下说法不正确的是( )?
A. scan 的设计规则,需保证时钟复位可控
B. ECO 时无须关注 DFT 网表
C. 主流的 scan 方式采用 MUX-DFF
D. MBIST 指的是对 memory 的 BIST 测试
正确答案:B
详细解析:ECO 表示 RTL Final 之后,在后端综合和物理实现流程中对电路进行修改,DFT 网表也是需要关注的
14、对芯片性能影响最大的三个因素是 PVT,分别是指?( )
A. package,voltage,temperature
B. process,voltage,temperature
C. process,verification,temperature
D. process,voltage,test
正确答案:B
详细解析:
Process:制造工艺
Voltage:电压,电压越高,延时越小
Tempurature:温度,温度越高,延时越大
15、下面这段代码,说法错误的是( )?
always @(posedge clk)begin
din_dly <= din;
end
A. din_dly 用来当控制信号是安全的
B. din_dly不受复位影响
C. 数据寄存推荐这样的写法
D. din 的不定态会传递到 din_dly
正确答案:A
详细解析:这个考的还是有点奇怪的,信息给得不够全
B:这里没有复位信号的控制,那肯定不受复位的影响
C:数据的寄存可以这么写,不需要复位的控制,其实 SRAM 中数据也是没有复位的
D:肯定会传递的
17、关于功耗,以下描述不正确的是( )
A. 改变芯片的供电电压和时钟频率都会对芯片功耗产生影响
B. 设计者需要关注平均功耗、峰值功耗和功耗跳变
C. 芯片的功耗会受实际信号的影响,所以功耗测试需要结合业务来开展
D. 对于可关断的模块,使用时钟门控即可降低功耗
正确答案:C
详细解析:芯片的功耗测试是内部的,跟外界的业务没有必然的关系,业务只是影响芯片的能耗
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
详细解析:
19、关于冯诺依曼结构和哈佛结构的描述中,错误的是( )?
A. 冯诺依曼接口中程序计数器负责提供程序执行所需要的地址
B. 哈佛结构中取指令和执行不能完全重叠
C. 冯诺依曼结构的计算机中数据和程序共用一个存储空间
D. 哈佛结构的计算机在一个机器周期内科同时获得指令和操作数
正确答案:B
详细解析:哈佛结构是数据和指令分开存储,通常指令存在 ROM,数据存在 RAM,其取值和执行是一可以同时发生的
20、状态机必须有1个缺省状态?( )
A. 正确 B. 错误
正确答案:A
详细解析:状态机必须有一个缺省状态,防止出现未知状态导致系统崩溃,同时也防止状态生成锁存器,就像 case 需要 default 一样
21、a1和a2的检查效果完全一样? ( )
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
详细解析:
22、以下关于flase-path,正确的是( )?
A. 一般模拟IP和系统的互联接口都可以设置为flase-path
B. 一般异步电路可以设置为flase-path
C. 一般异步复位可以设置为flase-path
D. 两个不同频率之间的接口一定可以设置为flase-path
正确答案:A
详细解析:
23、在 Verilog 中,比算数运算符 + 优先级高的是? ( )
A. & B. % C. > D. !==
正确答案:B
详细解析:其实优先级这种东西没必要考的,为了应付笔试还是背一背吧
24、有关功耗,以下说法不正确的是( )?
A. 电压越大,工作频率越高,其动态功耗越高
B. 低功耗设计的目标就是采用各种优化技术和方法,在各个设计目标之间找到最佳的结合点
C. 设计层次越高,功耗优化所能达到的效果越好
D. 芯片单位面积的动态功耗和静态功耗随着工艺的发展呈下降趋势
正确答案:D
详细解析:随着工艺的提高,晶体管阈值减小,漏电流变大,静态功耗变大
25、generate for 循环语句中使用的标尺变量可定义为 integer?( )
A. 错误 B. 正确
正确答案:A
详细解析:
generate for 使用的是 genvar,for 循环使用的才是 integer
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
详细解析:
27、ASIC开发流程中,如下环节的先后顺序是?( )
A. synthesis->P&R->RTL
B. RTL-> P&R-> synthesis
C. RTL-> synthesis-> P&R
D. synthesis-> RTL-> P&R
正确答案:C
新芯设计:基础知识
RTL 设计 -> 综合 -> 布局布线
28、以下关于 flase-path,正确的是( )?
A. 一般模拟 IP 和系统的互联接口都可以设置为 flase-path
B. 一般异步电路可以设置为 flase-path
C. 一般异步复位可以设置为 flase-path
D. 两个不同频率之间的接口一定可以设置为 flase-path
正确答案:A
详细解析:
29、有关综合的说法,一下哪个选项是错误的?( )
A. 综合网表可用于 EDA 功能仿真
B. 时序逻辑 always 语句中,if-else 如果 else 的分支缺乏,会综合成 latch
C. casez 是不可综合的
D. 相同的 RTL 代码,每次综合出来的网表可能是不一样的
正确答案:B
详细解析:
值得注意的是,禁止 casex,不推荐 casez,虽然不一定不可综合,但是 casex 把 x/z 视为 don't care,casez 把 z 视为 don't care
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
详细解析:
这个是时序电路,不会综合成 Latch 的,很明显,这是同步复位电路 我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:
在Ruby中,是否有一种简单的方法可以将n维数组中的每个元素乘以一个数字?这样:[1,2,3,4,5].multiplied_by2==[2,4,6,8,10]和[[1,2,3],[1,2,3]].multiplied_by2==[[2,4,6],[2,4,6]]?(很明显,我编写了multiplied_by函数以区别于*,它似乎连接了数组的多个副本,不幸的是这不是我需要的)。谢谢! 最佳答案 它的长格式等价物是:[1,2,3,4,5].collect{|n|n*2}其实并没有那么复杂。你总是可以使你的multiply_by方法:c