华为海思数字芯片设计笔试第八套

发布于:2024-04-18 ⋅ 阅读:(175) ⋅ 点赞:(0)

声明

下面的题目作答都是自己认为正确的答案,并非官方答案,如果有不同的意见,可以评论区交流。
这些题目也是笔者从各个地方收集的,感觉有些题目答案并不正确,所以在个别题目会给出自己的见解,欢迎大家讨论。
因为这里我只会设计的题目,所以验证的题目我就没放上去了

题目

1、下列说法正确的是()
A.设计异步 FIFO 时采用格雷码的原因主要是为了省功耗
B.对单比特控制信号打两拍后可以完全避免了亚稳态
C.异步处理需要考虑发送和接收时钟之间的频率关系
D.尽量将异步逻辑和同步逻辑剥离开,分别在不同的模块中实现

C
选项C是正确的。在处理异步信号时,确实需要考虑发送和接收时钟之间的频率关系,因为这影响到信号同步策略的选择和可能出现的亚稳态问题。不同频率的时钟之间传递信号时,若没有适当的同步机制,可能导致数据损坏或系统不稳定。因此,设计时需考虑这些时钟之间的关系,以选择合适的同步方法。
选项A不正确。设计异步FIFO时采用格雷码的主要原因是为了确保每次计数器值变化时只有一个比特发生变化,这减少了在不同时钟域之间传递计数器值时发生多比特变化的可能性,降低了数据一致性错误的风险,并非主要为了省功耗。
选项B不正确。对单比特控制信号打两拍(通过两级触发器)可以大大降低亚稳态持续存在的概率,但理论上不能完全避免亚稳态。尽管这是一种常用的同步方法,但在极端条件下仍然有可能发生亚稳态。
选项D有一定的误导性。虽然将异步逻辑和同步逻辑分开处理是一种好的设计实践,以减少设计中的亚稳态风险,并使得系统更加模块化,易于理解和维护。但这个选项表述得好像异步逻辑和同步逻辑应该物理上或逻辑上完全隔离,在不同模块中实现,这不一定是正确的或可行的。在实际设计中,异步和同步逻辑可能需要紧密协作,特别是在处理信号同步和通信接口时。正确的做法是通过适当的同步策略和设计技巧来管理异步和同步逻辑之间的交互,而不一定是完全剥离它们。
因此,最正确的选项是C。

2、从综合出电路的电路看第一段代码比第二段代码优化的地方是()
第一段代码:
always @(posedge ck clk or negedge rst_n) beign
if(‐rst_n)
D<=1b0;
else if(A& B)
D<= A+B:
end
第二段代码:
always @(posedge clk or negedge rst_n)beign
if(‐rst_n)
D<=1’b0;
else if(A&B)
D <=A+B;
else
D<= 1’b0;
end
A 第一段代码比第二段代码简练,方便综合;
B.第一段代码比第二段代码省功耗;
C.第一段代码比第二段代码的电路简单;
D.第一段代码比第二段代码易于理解和实现;
B

3、logic [1:0] a; logic [1:0] b; logic result; a=2’b1z; b=2’b10; result=(ab);在 sv 中,上述代码执 行完后,result 的值为 1’b0()
A.正确
B.错误
B
解析:a
b 得到结果为 x

4、以下不能抑制异步电路问题的是()
A 寄存三拍
B.双向握手
C.格雷码转换
D.缓存输出

D
在处理异步电路问题,特别是在两个不同的时钟域之间传递信号时,常用的方法包括寄存三拍(Triple Synchronizer)、双向握手(Handshaking)、和格雷码转换(Gray Code Conversion)。这些方法旨在减少亚稳态的风险,确保信号能够安全地从一个时钟域传输到另一个时钟域。
A. 寄存三拍:这是一种常见的异步信号同步技术,通过在信号进入目标时钟域之前通过三级触发器链,大大降低信号处于亚稳态的风险。
B. 双向握手:这是一种通信协议,常用于两个不同时钟域之间的数据传输,通过发送方和接收方之间的确认信号来确保数据的正确接收,可以有效处理时钟域间的通信问题。
C. 格雷码转换:在传输计数器或类似的递增信号时使用格雷码可以确保每次计数只改变一个位,这减少了信号在不同时钟域之间传输时的数据不一致风险。
D. 缓存输出:虽然缓存输出可以在一定程度上减轻信号的负载,提高电路的驱动能力,但它并不直接解决异步电路中的亚稳态问题或信号同步问题。缓存输出主要影响信号的驱动能力和延迟,而不是异步信号的安全同步。
因此,不能直接抑制异步电路问题的选项是:
D. 缓存输出

5、亚稳态对电路影响极大,下面哪种做法对降低亚稳态发生概率是无效的()
A 增加异步处理的打拍级数
B 使用专用亚稳态寄存器进行替换异步处理逻辑
C.提高异步处理电路的工作时钟
D.缩短异步处理打拍逻辑之间的 delay
C
A. 增加异步处理的打拍级数:这是一种有效的方法。通过在信号传递路径中增加更多的同步触发器(打拍级数),可以降低信号在目标时钟域产生亚稳态的概率,因为每级触发器都提供了额外的时间窗口来解决亚稳态。
B. 使用专用亚稳态寄存器进行替换异步处理逻辑:某些设计中,特定的寄存器类型被设计为具有更好的亚稳态解析能力。虽然这不能完全消除亚稳态,但可以减少其对系统的影响。
C. 提高异步处理电路的工作时钟:提高工作时钟频率实际上可能会增加亚稳态的风险,因为信号同步窗口变窄,给信号稳定留出的时间减少。因此,这种做法对降低亚稳态发生概率是无效的,反而可能会加剧问题。
D. 缩短异步处理打拍逻辑之间的 delay:理论上,减少触发器之间的延迟可以帮助信号更快地穿越可能的亚稳态区域。然而,这种方法的效果有限,并且在实践中很难作为主要手段来降低亚稳态风险。主要手段仍是通过增加打拍级数和使用具有更好亚稳态恢复特性的寄存器。
因此,对降低亚稳态发生概率无效的做法是:
C. 提高异步处理电路的工作时钟

6、无复位寄存器会引入不定态,因此设计中禁止使用无复位寄存器()
A 正确
B 错误
B
解析:在 IC 设计中,处于减少功耗和面积的考虑会存在部分的无复位寄存器和存储单元

7、bufif0 # (5:7:9, 8:10:12, 15:18:21)b1 (lo1.1o2, dir).其中第一个 5:7:9 表示什么
A min typ: max
B.rise; fall turn‐off

A
在 Verilog 和 SystemVerilog 中,bufif0 是一个有条件的缓冲器原语,用于基于控制信号 dir 的状态来连接或断开输入信号和输出信号。当 dir 为高时,输出为输入的反向;当 dir 为低时,输出为高阻态。
#(5:7:9, 8:10:12, 15:18:21) 是对 bufif0 操作的延时参数的定义。这些延时参数通常用来定义信号在不同条件下的延迟时间,格式为 min:typ:max,其中:
min 表示最小延迟时间,
typ 表示典型(或平均)延迟时间,
max 表示最大延迟时间。
因此,对于 #(5:7:9, 8:10:12, 15:18:21) 这段参数:
第一个 5:7:9 定义的是信号上升(rise)延时的最小、典型和最大值。
第二个 8:10:12 定义的是信号下降(fall)延时的最小、典型和最大值。
第三个 15:18:21 定义的是信号关闭(turn-off)延时的最小、典型和最大值。
所以,正确的答案是:
A. min typ: max
这里的解释是基于这些数字表示延迟时间的最小值、典型值和最大值。而选项B提供的 “rise; fall turn-off” 描述的是这些延时值对应的信号操作,但问题是询问数字代表的含义。

9、对于 FPGA 内部的 RAM 而言,以下哪个说法是错误的?()
A 配置成伪双端口 RAM 时,两个端口均有各自独立的读写控制信号
B.配置成伪双端口 RAM 时,两个端口,可以使用不同的时钟
C.配置成单端口 RAM 时,仅有一个时钟,用于读操作和写操作
D.配置成单端口 RAM 时,仅有一组访问地址,用于读操作或写操作
A

10、关于静态时序分析(STA)哪项说法是错误的?()
A. 不需要仿真向量
B. 不能验证设计的功能
C. 分析速度快
D. 可以分析同步路径和异步路径
D

11、验证环境中提到的参考模型(Reference Model)只支持不带时序的功能建模,不支持时序
建模()
A.错误
B.正确
A

15、有关中断,以下说法不正确的是?()
A.芯片中断引脚送出的中断信号一般采用脉冲信号
B.中断读清方式是指在 CPU 完成对中断指示寄存器的读操作后将中断指示寄存器清零。
C.中断存在边缘触发方式和电平触发方式
D.1 根中断管脚可以过度多个芯片内部中断
D

16、以下低功耗措施中,哪种不是降低电路翻转率的方法?()
A 重新安排“if‐else”表达式,可将毛刺或快变化信号移至逻辑锥体的前部
B.采用 Gray 码或 One‐hot 码作为状态机编码
C.在不进行算术运算的时候,使这些模块的输入保持不变,不让新的操作数进来.
D.减少电路中的 glitch

A
解析:应该将毛刺或快变信号移至逻辑椎体的后部,if‐else 越往后,被选择的概率越小。可
以把逻辑延迟大的部分移至逻辑椎体的前部,来减小总的最大延迟,因为在前部意味着最小
的选择路径长度。

18、以下信号命名中不符合 Verilog 语法的是: ()
A. 1_2CorrectName
B. CNTO
C. _R1_D2
D. COunT
解析:开头只能是字母/下划线,且不能用关键词命名
A
20、有关功耗,以下说法不正确的是?()
A.设计层次越高,功耗优化所能达到的效果越好。
B.电压越大,工作频率越高,其动态功耗越高
C.低功耗设计的目标就是采用各种优化技术和方法,在各个设计目标之间找到最佳
D.芯片单位面积的动态功耗和静态功耗的随着工艺的发展呈下降趋
D

21、generate for 循环语句中使用的标尺变量可定义为 integer()
A.正确
B.错误
解析:generate for 中使用的标尺变量是 genvar
B

23、下列不属于动态数组内建函数的是()
A. delete()
B. size()
C. new[]
D. length()
D

24、isolation cell 是下面哪种低功耗技术必需的()
A. Power Gating
B. Clock Gating
C. Mutli_Vdd
D. AVS
A
隔离单元(Isolation Cell)是在实施功耗门控(Power Gating)技术时必需的。

26、漏电流(Leakage Current)与逻辑电路设计的工作频率无关
A.错误
B.正确
B

27、reg signed [0:4]c ; c=8’h8f; 赋值后 c 的值是多少?()
A. 15
B. 17
C. ‐15
A

28、在 Verilog 中,"assign din[31:0]=32’hFF00_ABC4;assign dout[31:0]=(din<<2)>>4. dou 的值是多少?()
A 32’h00FF00AB
B.32’hFFFF00AB
C 32’h0x3FC02AF1
D.32’h0FC02AF1
解析:先左移,低位补零,并进行高位截尾,然后再右移
D

29、假设输入信号 X 位宽为 12bit,InA 位宽为 6bit,InB 位宽为 17bit,实现 Y=X*InA+InB 功 能,并要求不损失精度,那么输出信号 Y 位宽应不小于()
A. 12bit
B. 17bit
C. 19bit
D.18bit
C

30、在 Verilog 设计中,下列说法不正确的是 ()
A.如果 setup 时间不满足,可以尝试降低时钟频率解决
B.在边沿敏感时序逻辑代码中,应使用非阻塞赋值(<=)
C.要求 always 块产生组合逻辑时使用阻塞赋值(=)
D.模运算符"%"是不可综合的
D

31、对于设计中所使用的 Pipeline,说法中正确的有()
A.使用 Pipeline 会导致数据延时增加,但如果工作频率不变,系统的吞吐量不会改变。
B.使用 Pipeline 会对时序有好处,STA 更容易通过。
C.使用 Pipeline 一定可以减少面积。
D.使用 Pipeline 可能会导致面积增大。
BD

32、下列哪些设计可能会对芯片 DFT 产生不利影响
A.门控时钟设计
B.使用双沿时钟设计
C.内部三态门总线
D.使用内部产生的时钟
ABCD
A. 门控时钟设计:门控时钟设计可以减少功耗,但它们可能会为DFT带来挑战,因为门控时钟可能会隐藏时钟域之间的故障,使得一些路径在正常测试模式下不可观测或不可控制。因此,门控时钟设计可能会对芯片DFT产生不利影响。
B. 使用双沿时钟设计:双沿时钟设计意味着在时钟的上升沿和下降沿都进行数据采样。这种设计可以提高数据吞吐量,但也可能增加测试的复杂度,因为需要确保测试模式能够准确地处理双沿触发的行为。
C. 内部三态门总线:三态门(tristate buffers)用于创建可由多个设备驱动的总线。在DFT上的主要问题是它们可能会导致总线内容在测试时不确定,特别是当没有设备驱动总线时。此外,三态门的使用可能会增加总线争用的风险,使得测试更加困难。
D. 使用内部产生的时钟:使用内部产生的时钟(例如,通过PLL或振荡器)可能会对DFT产生不利影响,因为这些时钟源可能在测试配置下不易控制,尤其是在没有外部测试设备时。确保所有时钟源在测试期间稳定且可预测是很重要的,而内部产生的时钟可能会使这一目标更难实现。

33、下列表达式中,哪些可以使用一个或多个二输入与非门器件实现()
A.常数 1
B. A
C. A+B
D. AB
ABCD

34、多比特信号 A,在时钟域 clk_ a 存在从 8’d100 到 8’d101 的变化过程中,若在时钟域 clk_b直接采用 D 触发器采样,可能采样到数据是()
A.8’h65
B.8’b01100101
C.8’h64
D.8’d100
ABCD

35、Formality 是由 Synopsys 公司开发的一种形式验证(Formal Verification)工具,用于两个 Design 之间的等价性验证。它可以支持如下哪些等价性验证?()
A 门级网表对门级网表
B. RTL 级对 RTL 级
C. RTL 级对门级网表
ABC

36、以下三段代码
①: always @(posedge clk or negedge rst_n) begin
if(!rst_n)din_ dly <='ho;
else 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.①属于异步复位逻辑
C.同步复位和异步复位都是在复位时将寄存器状态初始化,所以没有区别
D.③属于同步复位逻辑,rst_n 可能通过组合逻辑连接到寄存器 D 端。
ABD

37、基于 FPGA 和 ASIC 芯片设计的差异需要关注的有(ABCD)
A.时钟复位
B.时钟顿率
C.memory 控制
D.上下电流程
A. 时钟复位:在FPGA和ASIC设计中,时钟和复位策略的实现可能有所不同。ASIC设计通常需要更详细的复位网络设计,包括异步复位和同步释放等技术,以确保所有寄存器在上电时能正确初始化。而FPGA由于其可编程性质,可能提供更多的灵活性,但同样需要仔细设计复位逻辑以避免上电时的不确定状态。
B. 时钟顿率(假设这里指的是时钟分布和管理,即“时钟管理”):ASIC设计中时钟树的设计对于确保整个芯片中时钟的一致性和性能至关重要。FPGA中虽然有固定的时钟资源和分布网络,但设计者仍需注意时钟域之间的交互和潜在的时钟偏差。时钟管理在两种设计中都非常重要,但实现方式和关注点可能有所不同。
C. memory 控制:FPGA和ASIC在内存控制和接口设计方面也有所不同。ASIC允许更自由地设计各种类型的内存接口和控制器,而FPGA可能限于其预定义的内存资源和接口。设计者需要根据目标平台选择合适的内存架构和访问策略。
D. 上下电流程:上电和下电序列对于防止芯片损坏和确保数据一致性非常关键。ASIC设计可能需要特别的注意来设计电源管理网络,以确保各个电源域按照正确的顺序上电和下电。虽然FPGA设计也需要考虑上下电问题,但处理方式可能不同,部分由FPGA的配置和其内部电源管理逻辑处理。

38、报文处理设计规格:()
支持的报文长度为 36‐256 字节,其余长度的报文直接丢弃;
接收的报文长度小于 64 字节时填充 PAD (任意数据)使报文长度达到 64 字节,然后再转发;
下面描述错误的是:
A.因为填充 PAD 是任意数据,因此随便挑一组特殊值,例如全 0 验证即能够保证功能正确
B.因为大于 256B 的报文被丢弃了,所以不需要验证该点
C.因为小于 36B 的报文被丢弃了,所以不需要验证该点
D.该报文处理长度的边界点包含两个值,分别为 36 和256
ABCD

39、下列哪些必须是在 Post‐Layout 时序仿真的?(AC)
A.Post‐Layout 网表
B.综合网表
C.标准延时格式文件
D.RTL 代码
AC

40、当模块的代码覆盖率达到 100%时,下列说法错误的是()
A.并不能确保验证工作已经完成
B.可确认各类用例的激励构造已经完备
C.可确认各种边界点的测试已经足够充分
D.可确认功能验证充分
BCD