草庐IT

华为2022数字芯片笔试题

狗哥天下第一 2023-08-29 原文

单选

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

A. RTL-> Synthesis->P&R

B. Synthesis->P&R->RTL

C. Synthesis->RTL->P&R

D.RTL->P&R->Synthesis

解:A

2、o10换算成十进制是多少?

A. 8

B.16

C.10

D.2

解:A

3、reg [7:0] mem [1:256];

initial

$readmemh("mem.data", mern, 128. 1):

对于mem行为正确的描述是

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

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

C从地址128开始,写到地址1

解:C 题目错了吧,应该是128,1逗号才对

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

A.错误

B.正确

解:B

指示寄存器是只读的,中断置1

5、以下关于False-path,正确的是(  )

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

B.一般同步复位可以设置为False path

C.一般不同频率的接口可以设置为False path

D.一般异步电路可以设置为False path

解:D

false_path是不希望工具分析的路径,一般是异步路径,即跨时钟域的路径。另外一种是与电路正常工作不相关的电路,比如测试逻辑的电路等。

6.有关DFT,以下说法不正确的是?

A.主流的Scan方式采用Mux-DFF

B.Scan的设计规则,需保证时钟复位可控

C.MBIST指的是对memory的BIST测试

D.ECO时无需关注DFT网表

解:D

ECO表示工程改动要求,就是代码不能修改之后,工程有问题,再对设计进行的手工门级修改,这一步必定要关注DFT网表,DFT表示可测性设计,用来测试芯片加工过程中出现的问题。
Scan中要保证时钟复位可控,是对的

主流的scan方式采用Mux-DFF,就是在dff的输入端加入mux,这是对的;bist在设计时在电路中植入相关功能电路用于提供自我测试功能的技术,以此降低器件测试对自动测试设备(ATE)的依赖程度。包括L(ogic)BIST和MBIST,前者用于测试随机逻辑电路,后者用于测试存储器

7、在verilog中,比算术运算符+优先级高的运算符是(  )

A. >

B.!==

C.&

D. %

解:D

8、有关综合的说法,以下哪个选项是错误的?

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

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

C. casez是不可综合的

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

解:B

casez,casex有时候可以有时候不可以综合,先放着

b写了else有时候会综合成latch

9、下面这段代码,说法错误的是:

always @(posedge clk) begin

din_dly <= din;

end

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

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

C. din_ dly不受复位影响

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

解:B

b是错的,因为d说了

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

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

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

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

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

解:A

使用#define指令和#undef指令进行宏定义和终止宏定义_LiuBo_01的博客-CSDN博客_结束宏定义
b、宏定义最好放到同一个文件中集中管理,比如放到para.v中,使用的时候include “para.v”调用即可。
c、define可以跨文件使用,parameter可以跨module使用,localparam只能在本module使用。
a、把不希望下面使用的宏undef掉。
d、后面的宏会覆盖前面的宏。

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

A.对

B.错识

解:A

  1. 常识题,低成本设计要兼顾低功耗设计,需要注意记住他的前半句,

  2. 影响芯片成本的主要因素是die size 与封装。

18、有关功耗,以下说法不正确的是?

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

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

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

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

解:D

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

B是对的,在链接里:

《硬件架构的艺术》读书笔记(五)低功耗设计_青雨qy的博客-CSDN博客

22、在时钟上升沿时采样到start有效开始,两个时钟周期后,信号“a”连续或者间断地出现3次为高电平,紧接着信号"stop"在下一个时钟周期为高电平,转换成断言描述,以下哪个是正确的(  )

A. property p0: @(posedge clk) 

    $rose(start) 1->##2 (a[->3])##1 stop: 

    endproperty

a0 : assert property(p0).

B. property p0:@(posedge clk) 

    $rose(start)1-> ##2 (a[=>3]) ##1 stop;

    endproperty

a0: assert property(p0);

C. property p0:

    @(posedge clk) 

    $rose(start) 1-> ##2 (a[*3]) ##1 stop:

    endproperty

a0: assert property(p0);

D. property p0:

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

    endproperty

a0 : assert property(p0);

解:A

我要学sv了,他怎么老考这个

SV -- Assertions 断言_love小酒窝的博客-CSDN博客_sv断言

26、关于类的构造函数,以说法中正确的有()

A.不能有形参

B.返回类型是void类型

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

D.函数名与其类名完全相同

解:C

不会啊不会

解析:D
类可以认为是用户定义的一种数据类型
类的显式定义有new(),隐式定义无,new()的作用是进行初始化,没有new()时,类默认为null,C错;
构造类可以没有返回值,也没有返回值类型,但是可以有参数(包括形参int a),a错;
类名与函数名一样,D对;
返回值类型不一定是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

28、下列不属于动态数组内建函数的是(  )

A. new []

B. delete ()

C. length ()

D. sizet ()

解:

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

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

多选题

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

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

B.部分bug需要累积效应才会暴露,检证环境难以构造足够长时间的用例冲击出来,通过assertion来保证这种问题在第一次发生时便被发现

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

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

解:abcd


​​​​​​​华为海思 2021数字芯片/IC 笔试题+解析_恍然_如梦的博客-CSDN博客_华为海思笔试

2019年HANWUJI秋招IC设计笔试题 - 简书

有关华为2022数字芯片笔试题的更多相关文章

  1. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个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

  2. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  3. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  4. 华为常用命令 - 2

    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

  5. ruby - 将n维数组的每个元素乘以Ruby中的数字 - 2

    在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

  6. Ruby 的数字方法性能 - 2

    我正在使用Ruby解决一些ProjectEuler问题,特别是这里我要讨论的问题25(Fibonacci数列中包含1000位数字的第一项的索引是多少?)。起初,我使用的是Ruby2.2.3,我将问题编码为:number=3a=1b=2whileb.to_s.length但后来我发现2.4.2版本有一个名为digits的方法,这正是我需要的。我转换为代码:whileb.digits.length当我比较这两种方法时,digits慢得多。时间./025/problem025.rb0.13s用户0.02s系统80%cpu0.190总计./025/problem025.rb2.19s用户0.0

  7. ruby - 按数字(从大到大)然后按字母(字母顺序)对对象集合进行排序 - 2

    我正在构建一个小部件来显示奥运会的奖牌数。我有一个“国家”对象的集合,其中每个对象都有一个“名称”属性,以及奖牌计数的“金”、“银”、“铜”。列表应该排序:1.首先是奖牌总数2.如果奖牌相同,按类型分割(金>银>铜,即2金>1金+1银)3.如果奖牌和类型相同,则按字母顺序子排序我正在用ruby​​做这件事,但我想语言并不重要。我确实找到了一个解决方案,但如果感觉必须有更优雅的方法来实现它。这是我做的:使用加权奖牌总数创建一个虚拟属性。因此,如果他们有2个金牌和1个银牌,加权总数将为“3.020100”。1金1银1铜为“3.010101”由于我们希望将奖牌数排序为最高的,因此列表按降序排

  8. ruby-on-rails - rails 中的正则表达式匹配 [\w] 和 "-"但不匹配数字 - 2

    我想为名字验证编写一个正则表达式。正则表达式应包括所有字母(拉丁/法语/德语字符等)。但是我想从中排除数字并允许-。所以基本上它是\w(减)数(加)-。请帮忙。 最佳答案 ^[\p{L}-]+$\p{L}匹配anykindofletterfromanylanguage. 关于ruby-on-rails-rails中的正则表达式匹配[\w]和"-"但不匹配数字,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  9. ruby-on-rails - 将数字字符串转换为数字数组 - 2

    在我的应用程序中,我有一个文本字段,用户可以在其中输入类似这样的内容"1,2,3,4"存储到数据库中。现在,当我想使用内部数字时,我有两个选择:"1,2,3,4".split(',')或string.scan(/\d+/)do|x|a两种方式我都得到一个像这样的数组["1","2","3","4"]然后我可以通过在每个数字上调用to_i来使用这些数字。有没有更好的方法可以转换"1,2,3"to[1,2,3]andnot["1","2","3"] 最佳答案 str.split(",").map{|i|i.to_i}但是这个想法对你来说

  10. ruby - 递归地将所有数字字符串转换为 Ruby 哈希中的整数 - 2

    我有一个随机大小的散列,它可能有类似"100"的值,我想将其转换为整数。我知道我可以使用value.to_iifvalue.to_i.to_s==value来做到这一点,但我不确定我将如何在我的散列中递归地做到这一点,考虑到一个值可以是一个字符串,或一个数组(哈希或字符串),或另一个哈希。 最佳答案 这是一个非常简单的递归实现(尽管必须同时处理数组和散列会增加一些技巧)。deffixnumifyobjifobj.respond_to?:to_i#IfwecancastittoaFixnum,doit.obj.to_ielsifobj

随机推荐