笔试题-2023-复睿微-数字芯片设计【附解析】
一、判断题(共5题,每题2分,共10分,请根据题目要求断以下说法正确或错误)
1、格雷码的异步处理采取直接打拍的方式,在时序约束时不需要进行额外检查约束( )
- 正确
- 错误
答案:错误
解析*:
理论上来说异步都没法进行 STAQ的。
我们需要进行约束的原因大部分还是松池约束,以Vivado为例,其默认都是同一时钟域,不约束的话将花费大量资源去解决这种无关的问题而忽略其他问题。
这个题目感觉不同理解答案也不太一样,不需要进行额外检查约束可能也行,但求稳的话还可以加上总线偏斜约束(set bus skew)。在后面的面试经验中,有的面试官也提到了这个约束。
2、Reg变量都会综合成寄存器( )
- 正确
- 错误
答案:错误
解析*:
时序逻辑的reg变量会综合成寄存器。
组合逻辑中的reg可能被综合成类似门电路的驱动电路,也可能综合成锁存器。
3、在verilog中,fmunction 不能调用task,但是task可以调用function。( )
- 正确
- 错误
答案:正确
解析*:
函数不能调用任务可以调用函数,而任务可以调用其他任务或函数。
4、For循环处理时,循环的次数可以变量(不要求可综合)。( )
- 正确
- 错误
答案:正确
解析*:
以Vivado synthesis支持的Verilog结构来学习 Verilog语句可综合性。
不要求可综合是可以的,如果要求可综合,则循环的边界必须是静态常量。
5、功能覆盖率(unctional covenge)达到100%,代表该模块验证充分和完备了。( )
- 正确
- 错误
答案:错误
解析*:
功能覆盖率(unctional covenge)达到100%,只是说明自己提取的功能点覆盖了,但可能并不是完备的,所以只能说明某些令人关注的情况已经得到测试覆盖。
二、单选题(共5题,每题2分,共10分,请根据题目要求,在四个选项中选出一个最怡当的答案
1、关于复位,以下说法正确的是( )
A.复位信号的生效必须需要有时钟上升沿
B.芯片中的复位信号需要在同一周期中生效
c.芯片中所有寄存器都必须有复位控制
D.复位设计可以确保寄存器从稳定态开始工作
答案:D
解析*:
A.同步复位需要,异步复位不需要
B.不一定,模块之间有固定的工作时序
C.无需复位的寄存器不需要复位信号控制,标准单元库中提供了不带复位端的寄存器,如pipeline中的一些寄存器就不一定必须复位
2、以下Verilog运算符优先级由高到低的排序正确的是( )
A.^,!, &,l,&&
B.&,l, &&, ^, !
C.!,l, &, &&,^
D.!,&,^,l,&&
答案:D
3、Isolation cell是哪种低功耗技术( )
A. Muti Vt
B. Multi VDD
C. clk gating
D. power gating
答案:D
解析*:
A. 多值电压技术
B. 多电压域技术
C. 门控时钟技术
D. 电源门控技术
isolation cell是shutdown模块和always on模块之间的接口。
当信号从一个module传入另一个module,如果shutdown模块的电源关闭,则输出信号可能出现不可预测的数值,若此数值传递给alwayson模块,可能会导致功能出现问题,因此需要将电源关闭module的输出信号和其他module隔离开来,给所有的边界信号加入isolation cel
(ISO)
所以对应的低功耗技术是电源门控技术。
4、在下面的那些关键字不可以综合是( )
A. inout
B. case
C. wait
D. for
答案:C
解析*:
以Vivado synthesis支持的Verilog结构来学习 Verilog语句可综合性。
5、下列选项不是verilog关键字( )
A.for
B. task
C. begin
D ALWAYS
答案:D
解析*:
所有关键字都只用小写字母定义。
三、填空题(共5题,每题2分,共10分, 请根据题目要求填写,保证回答完整正确)
1、判断2个时钟是否是同步时钟的关键点是_____
答案:判断时钟是否为同步时钟的关键点是两个时钟是否有确定的相位关系。
2、在下面的verlog代码中,如果A=1’bx,则B输出是( )
答案:B = 1'b0;
解析*:
Verilog-2005 9.4 Conditional statement
false(即值为零或值为x或z)
True(即具有非零的已知值)
所以B = 1'b0;
3、可以降低峰值功耗的方法是( )
峰值功耗应该是属于动态功耗中的短路功耗,即NMOS和PMOS同时导通所引起的峰值电流,最终带来的功耗。这个功耗和电源电压,时钟翻转率,以及峰值电流有关。
所以使用门控时钟可以减小峰值功耗。
推荐资料:《SOC设计方法与实现 (第3版) 郭炜》第11章 低功耗设计
4、组合逻辑产生竞争和险是因为信号产生了( )
答案: 不同时延的多条路径。
解析*:
竞争:指一个组合电路中,当某一个变量经过两条以上的路径到达输出端的时候,由于每条路径上的延迟不同,到达终点的时间就会有先有后的现象。门电路存在延迟时间是组合逻辑电路产生竞争冒险现象的根本原因。
冒险: 组合电路出现毛刺这种错误现象称为组合电路的冒险。
5、4路数据选择器的信号输入端至少需要( )根信号线。
答案:6根。
解析*:
4路数据选择器,控制信号需要2bit。
如果加上信号输出,最小为4路单bit输入,一共6根信号线。
四、简答题(共7题,每题10分,共70分。)
1、8bit信号上升沿检测。
2、计一个100b的循环移位寄存器,要求带有使能端,控制移位方向,带有同步置位端进行输入的置位。
3、下面的代码是否有问题?出现了什么问题?如果出现了问题,该怎么解决?
会产生不必要的锁存器
解决
4、假设你有两个8位有符号的输入。即a[7:01]和b[7:0]。这些数字相加产生s[7:0]。还要计算是否发生溢出情况。
溢出判断:
两个输入数据符号位为0 (正),而结果符号位为1 (负),则发生了负溢出。
两个输入数据符号位为1 (负),而结果符号位为0 (正),则发生了正溢出。
5、用Verlug写一段代码如何实现变量内部数据中1的数量的统计?举例:找到in中255bit里面有多少数量的bit为1,统计输出out。
答案:
方法1: 所有bit相加
不考虑综合:
如果需要可综合,加法结构需要用逐级流水。
方法2:查表法
6、将一个8bit输入反转输出 (out[7]等于in[0]) ,把你想到的实现方法写出来。
答案:
方法1: 按位assign。
方法2:与方法1一样,但是使用generate块。
方法3:花括号0实现位拼接后直接赋值。
方法4: 定义wire [7:0] in; 和 wire [0:7] out;然后进行赋值,这里需要注意的是虽然out[7]等于in[0],但是大小端不同。
7、判断下面的写法是否正确?如果不正确。请写出原因,并给出正确的写法。
题目1:
题目2:
答案:
题目1: variable类型不能使用连续赋值(continuous assignment)。改为非阻塞过程赋值(nonblocking procedural assignment)。
参考: Verilo IEEE std(2005)
6.1.2 The continuous assignment statement
9.2.2 The nonblocking procedural assignment
题目2:
参考: Verilo IEEE std(2005)
5.1.14 Concatenations 原题
复制操作的复制常数值可以为零。这在参数化代码中很有用。复制常数为零的复制将被认为大小为零,因此将被忽略。这样的复制只能出现在连接中,其中连接的至少一个操作数的大小为正。
整理不易,觉得对你有用的话,收藏下来,慢慢刷!
回顾往期精彩笔试真题:
#笔经面经##笔试##芯片##数字IC##春招#