草庐IT

华为海思2022数字芯片笔试题(节选)

狗哥天下第一 2023-04-21 原文

PS:答案是个人整理,抛转引玉,非常欢迎大家一起讨论交流!

单选2分

1.foo-(1<a)foo-1<a的结果一致

A.正确

B.错误

解:B

我不会

2.在verilog HDL描述语言中,模块内使用parameter和define定义的参数,其作用范围均局限于模块内部。

A.正确

B.错误

解:A

define不是

3.在Verilog代码中,对有符号数进行比特选择或拼接,其结果是无符号数

A.正确

B.错误

解:B

解释:B

1、对于长位宽赋值给短位宽的情况,无论左操作数、右操作数是有符号数还是无符号数,都是直接截断高位,而左操作数二进制所表示的实际十进制数据要看左操作数是无符号数还是有符号数,如果左操作数是无符号数,直接转换成十进制即可,如果是有符号数,则看成2的补码解释成十进制数,这也是实际计算机系统中有符号数的表示方法。

2、对于短位宽赋值给长位宽的情况,需要对高位进行位扩展,具体是扩展1还是扩展0,记住:完全依据右操作数!,具体如下:

1)右操作数是无符号数,则无论左操作数是什么类型,高位都扩展成0;

2)右操作数是有符号数,则要看右操作数的符号位,按照右操作数的符号位扩展,符号位是1就扩展1,是0就扩展0;

3)位扩展后的左操作按照是无符号数还是有符号数解释成对应的十进制数值,如果是无符号数,则直接转换成十进制数值,如果是有符号数,则看成2的补码解释成十进制数;

4)从上面4种情况看出,有符号数赋值成无符号数会出现数据错误的情况,因此要避免这种赋值,而其他情况都是可以保证数据正确的。

4.

input clk;

input rst_n;

wire [1:0] cnt_out;

always@(posedge clk or negedge rst_n)begin

If(rst_n==1'b0)begin

cnt<=3'd0;

end

else begin

cnt <=cnt+3'd1;

end

end

assign cnt_out={2{cnt[2]}}^cnt[1:0];

cnt_out这个计数器按照什么规律变化?

A.按照0、0、0、0、0、1、2、3、0、0、0、0、……这样的规律计数

B.始终按照0、1、2、3、0、1、2、3、……这样的规律技术

C.按照0、0、0、0、3、3、3、3、0、0、0、0、……这样的规律计数

D.按照0、1、2、3、3、2、1、0、0、1、2、3、……这样的规律计数

解:D 

自己写一下


5.下面哪项不属于功能类测试点分解的思路是?

A.芯片接口时序的组合

B.功能对应输入的范围,考虑边界值,等价类等

C.功能对应的行为特性

D.考虑时间上序列关系的影响

解:AD 因为是功能吧,我猜的

[不定项选择4分]

6.下列行为描述语句可综合的是:()

A. assign赋值语句

B. if else条件语句

C. always过程语句

D. for循环语句

解:ABCD

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

A. RTL级对RTL级

B. RTL级对门级网表

C.门级网表对门级网表

解:不知道

ABC

解析:跟事件驱动模拟器相比,形式验证能更快的验证出两个设计在功能三是否等同,可以实现RTL-RTL,RTL-TO-GATE,GATE-TO-GATE,并且有定位功能,可以帮助找到两个设计之间功能不同的原因。

8.①: always @(posedge clk or negedge rst_n)begin

if (!rst_n)din_dly<='h0;

eise din_dly<=din;

end

②: always @(posedge clk) begin

din_dly<=din;

end

③: always @(posedge clk) begin

If (!rst_n)din_dly<='h0;

else din_dly<=din;

end

上面三段代码,说法正确的是:

A.②属于无复位寄存器,其PPA更优

B.③属于同步复位逻辑,rst_n可能通过组合逻辑连接到寄存器D端。

C.①属于异步复位逻辑

D.同步复位和异步复位都是在复位时将寄存器状态初始化,所以没有区别

解:ABC

9.下面哪些会导致代码不可综合?

A.在给寄存器赋值时,加了#delay

B.使用了initial语句

C.代码中包括了运算符= = =

D.使用了generate语句

解:ABC

10.在逻辑设计和STA分析中,主要包含哪些时序路径

A.寄存器—>组合逻辑—>寄存器

B.输入管脚—>寄存器—>输出管脚

C.输入管脚—>组合逻辑—>寄存器

D.寄存器—>组合逻辑—>输出管脚

E.输入管脚—>寄存器—>组合逻辑

解:ABCD

FPGA的设计艺术(4)STA实战之不同时序路径的建立保持时间计算_专栏_易百纳技术社区

任何数字设计均可分为静态时序分析的四类路径。

  • 输入到输出(I2O)
  • 输入到寄存器(I2R)
  • 寄存器到寄存器(R2R)
  • 寄存器到输出(R2O)

在所有这些路径上一一完成静态时序分析。 通过定义该路径的起点和终点来分别分析每个路径。

单选2分

11.对于设计中所使用的Pipeline,说法中正确的有

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

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

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

D.使用Pipeline可能会导致面积增大。

解:AD

B一般是增加面积

C吞吐量变大


华为海思2022数字芯片笔试(带答案)-面包板社区

有关华为海思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

随机推荐