记录今年秋招刷题遇到的笔试问题(欢迎讨论和补充)
1、代码$display("%h",14bx0_1010)的输出结果是 ?
A. xxxa B. xxXa C. XXXa D. XXxa
答案:B
解:部分比特x态为大写X, 全部比特x态为小写x。
2、一批IC样品在测试中发现有step或者hold时序问题,现取A、B、C、D四种样品进行测试?
A 降温后停止工作, 则可能是( ) 问题。
B 升温后停止工作, 则可能是( ) 问题。
C 降压后停止工作, 则可能是( ) 问题。
D 升压后停止工作, 则可能是( ) 问题。
答案:setup、hold、setup、hold
解:温度和电压对应到管子上行为为:
升温/升压: 单个管子电流增大, 相应的充放电时延减少。
降温/降压: 单个管子电流减小, 相应的充放电时延增大。
step问题是时序关键路径总延时过大:
即建立时间余量出现负值,
建立时间余量=要求数据到达的时间-数据实际到达的时间
时序关键路径总延时过大即数据实际到达的时间比较长, 建立时间余量会出现负值, 出现setup问题。
hold问题是时序关键路径总延时过小:
即保持时间余量出现负值,
保持时间余量=数据实际结束时间-要求数据结束时间
时序关键路径总延时过小即数据实际结束的时间较短, 保持时间余量会出现负值, 出现hold问题。
3、下列不属于静态时序分析的时序路径是?
A. 模块外部输入→第一级寄存器输入
B. 寄存器的时钟引脚→模块外部输出
C. 模块外部输入→模块外部输出
D. 寄存器数据输出→模块外部输出
答案:D
解:
静态时序分析的时序路径:
①:模块外部输入→第一级寄存器输入
②:寄存器的时钟引脚→寄存器数据输入
③:寄存器的时钟引脚→模块外部输出
④:模块外部输入→模块外部输出
4、FPGA的基本单元组成包括?
A. 可编程输入输出单元
B. 基本可编程逻辑单元
C. 可编程连线资源
D. 时钟管理模块
答案:A、B、C、D
解:目前主流的FPGA芯片仍是基于查找表。 FPGA芯片主要由以下6部分组成。
①:可编程输入输出单元( IOB)
②:基本可编程逻辑单元( CLB)
③:完整的时钟管理模块
④:可编程连线资源
⑤:嵌入式块RAM
⑥:内嵌的底层功能单元和嵌入式专用硬核
5、下列哪些为方法是进行面积优化?
A. 寄存器配平 B. 逻辑优化 C. 资源共享
D. 串行化 E. 流水线设计 F. 关键路径优化
答案:B、C、D
解:
时序优化手段:
寄存器配平、
流水线设计、
关键路径优化。
面积优化手段:
逻辑优化、
资源共享、
串行化。
6、下面verilog程序执行完后,B的值为?
reg[2:0] A;
reg[3:0] B;
initial
begin
A = 0;
A = A-1;
B = A;
B = B+1;
end
答案:8
解:A初值为0, 减数1没有给定位宽,所以转换成32bit做减法,结果为0xffffffff
因此A=3'b111,所以B=4'b1000
7、关于FPGA的描述,哪个说法不正确?
A.slice不能用作分布式RAM
B.分布式RAM不能用作真双口RAM
C.slice是Xilinx FPGA内部可编程资源的名称
D.DSP可以用作加法的用途
答案:A
解:
Xilinx的7系列FPGA内部有CLB可编程配置块,每个CLB里面有两个Slice:
Slice有两种:
SliceL:(Logic逻辑)
SliceM:(Memory存储)
SliceM 相比 SliceL多出的功能在于可以配置成Distribute RAM(分布式RAM)。
SliceM 相比 SliceL多了做存储器和移位的功能。
SliceM 相比 SliceL中含有能够把LUT资源重新整合为RAM和ROM的逻辑。
DSP主要用于乘法、除法和快速的加法。
8、对于一般的逻辑电平,各参数需满足如下的关系?
A.Voh>Vih>Vt>Vol>Vil
B.Vih>Voh>Vt>Vol>Vil
C.Vih>Voh>Vt>Vil>Vol
D.Voh>Vih>Vt>Vil>Vol
答案:D
解:
Voh:
保证逻辑门的输出为高电平时的输出电平的最小值,
逻辑门的输出为高电平时的电平值都必须大于此Voh。
Vol:
保证逻辑门的输出为低电平时的输出电平的最大值,
逻辑门的输出为低电平时的电平值都必须小于此Vol。
Vt:
数字电路芯片都存在一个阈值电平, 就是电路刚刚勉强能翻转动作时的电平。
它是一个界于Vil、 Vih之间的电压值, 对于CMOS电路的阈值电平,基本上是二分之一的电源电压值, 但要保证稳定的输出, 则必须要求输入高电平> Vih,输入低电平<Vil, 而如果输入电平在阈值上下, 也就是Vil~ Vih这个区域,电路的输出会处于不稳定状态。
Vih:
保证逻辑门的输入为高电平时所允许的最小输入高电平,
当输入电平高于Vih时, 则认为输入电平为高电平。
Vil:
保证逻辑门的输入为低电平时所允许的最大输入低电平,
当输入电平低于Vil时, 则认为输入电平为低电平。
对于一般的逻辑电平, 以上参数的关系如下:
Voh > Vih > Vt > Vil > Vol。
9、异步控制信号在有效的时钟沿到达之前必须保持稳定的最短时间指的是?
A.recovery时间 B.Tsu C.removal时间 D.Th
答案:A
解:
对于时钟和数据信号, 分析setup建立时间和hold保持时间
setup建立时间:
在有效的时钟沿来临之前, 数据需要保持稳定的最短时间。
hold保持时间:
在时钟有效沿来临之后, 数据需要保持稳定的最短时间。
对于时钟和异步复位信号, 分析recovery恢复时间和removal移除时间。
recovery恢复时间:
在有效时钟沿( 下图第二个时钟沿) 来临之前, 异步复位信号保持稳定的最短时间( 不能影响下一个时钟沿)
removal移除时间:
在有效时钟沿( 下图第一个时钟沿) 来临之后, 异步复位信号保持稳定的最短时间( 不能影响上一个时钟沿)
10、二输入与非门当输入变化为()时,输出可能有竞争冒险?
A.00→10 B.10→00 C.01→10 D.11→01
答案:C
解:假设输入分别位A和B,二输入与非门变化过程分析如下:
A | B | ~(A&B) |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
A: 00→10变化的过程中, 只有A发生变化
如果A正常变化为1, A为1, B为0, 则输出为1。
如果A变化有延迟则会出现, A为0, B为0, 则输出为1。
B: 10→00变化的过程中, 只有A发生变化
如果A正常变化为0, A为0, B为0, 则输出为1。
如果A变化有延迟则会出现, A为1, B为0, 则输出为1。
C: 01→10变化过程中, A和B都发生变化
如果AB均正常变化, A的值为1, B的值为0, 则输出为1。
如果A, B在变化过程中有延迟, 就会出现01、 00、 10、 11四种状态, 输出本应该为1,
但是以上情况会有输出为0的情况, 输出可能会有竞争冒险。
D: 11→01变化过程中只有A发生变化
如果A正常变化, 则A的值为0, B的值为1, 输出结果为1。
如果A变化过程中有延时会出现11、 01两种状态, 不会有中间态产生。
补充:
竞争: 在组合电路中, 信号经由不同的途径达到某一会合点的时间有先有后。
冒险: 由于竞争引起电路输出发生瞬间错误现象称为冒险。 表现为输出端出现了原设计中没有的窄脉冲, 常称其为毛刺。
竞争与冒险的关系: 有竞争不一定会产生冒险, 但有冒险就一定有竞争。
在组合逻辑中, 由于门的输入信号通路中经过了不同的延时, 导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。 如果布尔式中有相反的信号则可能产生竞争和冒险现象。
11、下列方法中,属于降低静态功耗的有?(补充:低功耗设计的方法
)
A:门级电路的功耗优化 B:多阈值电压 C:门控时钟电路
D:操作数分离 E:多个供电电压
答案:A、B
解:静态功耗:
亚阈值漏电功耗、 栅极漏电功耗、 栅极感应漏电功耗、 反向偏置结泄露功耗
阈值电压不同的单元, 使用高阈值电压的MOS管可以放置NMOS和PMOS都处于开启状态, 降低导通功耗, 降低漏电。
补充:动态功耗:
翻转功耗( 电路在开关过程中对输出节点的负载电容充放电所消耗的功耗)
其中,VDD:供电电压;C:负载电容大小;f:信号翻转频率
短路功耗( PMOS和NMOS同时导通所消耗的瞬态功耗)
低功耗设计:
功耗来源有动态功耗、 静态功耗。低功耗设计在晶体管、 RTL级、 体系结构级、 系统级各个层次上都要进行,层次越高, 功耗降低越有效。
1)系统级
软硬件划分: 经常使用的模块用硬件实现节约功耗, 减少代码量
2)体系结构级
多电压供电: 将设计划分为电压域, 根据每个区域的要求使用不同的供电电压, 动态功耗方程中功耗与电压成正比。
多阈值电压: 阈值电压不同的单元, 使用高阈值电压的mos管可以防止NMOS和PMOS都处于开启状态, 降低导通功耗, 降低漏电。
添加缓存: 对DSP等频繁访问存储器数据的处理器, 预先将数据从主存中取到缓存, 是计算能耗下降。
3)RTL级
门控时钟: 将产生时钟的PLL关闭, 或时钟切换IP核在快慢时钟间切换, 进入休眠模式。 (动态功耗方程中有时钟翻转频率f)
减少毛刺: if-else、 default要写全。 避免产生锁存器。
4)晶体管级
减少电容: 即减少动态功耗方程中的C负载电容。
衬底偏压: 将衬底电压偏置, 提高晶体管阈值。 但是阈值电压的升高会影响性能,
使用动态偏置方法, 在工作模式下保持较小的偏置电压, 在保持模式下加强偏置电压。
12、流水线设计的优点是?
A. 综合后电路的面积可以更小 B. 综合后电路的时钟频率可以更高
C. 综合欧电路的复杂性更低 D. 综合后的功耗更低
答案:B
解:
流水线PIEPLINE的实质就是将串行操作变成并行操作,这样可以提高吞吐率,提高时钟频率,
改善时序,但同时会导致数据延时增加,功耗增加,面积可能会增大,设计可能变复杂。
13、建立时间不满足,应该采取什么措施?
解:
首先Tsetup建立时间不满足的表现是什么?
即建立时间余量出现负值,建立时间余量 =数据应该到达的时间 - 数据实际到达的时间
如上图所示,要使建立时间满足就要使建立时间余量增大
即可以:
增大时钟周期T, 即<降低时钟频率>。
减小组合逻辑延时, 可以<采用流水线>。
<提高工作电压>, 使管子电流增大, 逻辑延时减少。
<使用反应速度快的D触发器>, 拥有更低的Tsu和Tco。
13、关于异步设计,下面说法正确的是?
A. 异步设计容易产生毛刺
B. 异步设计会带来很大的同步翻转噪声
C. 异步设计不能做时序约束, 又不能做时序分析
D. 信号的时延随着每次布局线的不同而不同, 随着PVT的改变而改变, 因此可靠性很差, 而且不容易移植
答案:A、C、D
解:
同步翻转噪声指大量触发器在同一时刻进行电平切换, 会在相邻管脚引入噪声, 因此同步翻转噪声, 需要同一时刻, 而异步电路有两个时钟源。
异步设计:
依靠传播延迟会导致不完整的时序约束以及可能的 <毛刺和尖峰>, 因为传播延迟会随 <温度和电压> 波动而变化。取决于相对传播延迟的异步设计结构可能会出现竞争状况。 当信号改变的顺序影响逻辑输出时, 就会产生竞争条件。
相同的逻辑设计在 <每次编译时可能会有不同的时序延迟, 具体取决于布局和布线>。可能的变化数量使与特定逻辑模块相关的时序延迟的确定变的不可能。 器件由于工艺的不断改进而变得更快,异步设计中的延迟可能会减少, 从而导致设计无法按预期运行。 <依靠特定的延迟也使异步设计难以移植到其他体系结构>, 器件或速度等级。
异步设计结构的时序<通常很难或不可能用时序分配和约束来建模>。如果没有完整或准确的时序约束, 那么综合和布局布线工具使用的时序驱动算法可能无法执行最佳优化, 并且报告的结果可能不完整。
异步设计结构可能会产生<毛刺>, 与时钟周期相比, 毛刺是非常短的脉冲。 组合逻辑是故障的主要原因。当组合逻辑的输入发生变化时, 输出在达到新值之前会出现一些毛刺。 毛刺会通过组合逻辑传播,从而导致异步设计中的输出值不正确。
在同步设计中, 寄存器数据输入的毛刺不会产生负面影响, 因为数据处理要等到下一个时钟沿。
14、采用同步设计的好处?
A. 避免器件受温度, 电压, 工艺的影响, 易于节省功耗, 易于消除毛刺
B. 整个电路有一个确定的初始态, 且相对于异步逻辑节省实现面积
C. 易于运用流水线设计法
D. 便于运用静态时序分析等先进的设计工具
答案:A、B、C、D
解:
同步设计能有效避免毛刺的影响, 使得设计更加可靠:
毛刺是逻辑设计的天敌, 毛刺使得数据变得混乱, 可能引起电路功能的误判断。
当毛刺引入于时钟端或者异步复位端, 就极有可能引起触发器的误翻转或者出现不正常的复位。
但是毛刺是与生俱来的, 也就是说毛刺是不可避免的, 一般来讲凡是有组合逻辑的地方肯定就有毛刺。 同步设计是避免毛刺的最简单有效的方法。
同步设计可以减少环境对芯片的影响:
由于芯片的实际工作环境比我们在测试的实验室环境恶劣的多, 加之长时间运行,随着芯片的温度的升高, 电压的不稳定, 将会使得器件内部时延发送变化, 如果不使用同步设计的话,对于时序要求比较苛刻的电路将无法正常工作。 因为只有满足芯片的Static timing 的要求, 才能保证芯片在预知的过程中工作。
同步设计可借助与STA工具进行时序分析, 有助于提高设计的可靠性。
同步电路比较容易使用寄存器的异步复位/置位端, 以使整个电路有一个确定的初始状。
同步电路可以很容易地组织流水线, 提高芯片的运行速度, 设计容易实现。
15、对于代码覆盖率,以下说法错误的是?
A. 这可以帮助发现是否存在冗余代码
B. 可以帮助确定代码行是否被完全执行
C. 可以帮助发现状态机跳转路径是否覆盖
D. 可以帮助确定功能需求是否完全实现
答案:D
解:
代码覆盖率指的是设计代码的执行量, 它包括行覆盖率、 FSM状态机覆盖率、 分支覆盖率、条件覆盖率 和path路径覆盖率。
仿真工具将自动从设计代码中提取代码覆盖率,代码覆盖率就算达到100%, 这并不意味着不存在bug。
行覆盖率: 检查某行代码是否被执行过
分支覆盖率: 检查条件分支是否都被执行过
条件覆盖率, 表达式覆盖率: 通过真值表分析表达式各种逻辑组合
有限状态机覆盖率: 检查每个状态是否被覆盖, 状态之间的跳转是否被执行
16、下面有关SRAM和DRAM的叙述,正确的有?
A. DRAM比SRAM速度快 B. DRAM不需要刷新, SRAM需要刷新
C. DRAM比SRAM成本高 D. DRAM存储单元的结构比SRAM简单
答案:D
解:
RAM随机存储器
存储单元的内容可按需随意取出或存入, 且存取的速度与存储单元位置无关的存储器。
这种存储器在 断电时将丢失其存储的内容 , 故主要用于存储段时间使用的程序。
---
SRAM( Static Random-Access Memory)
静态随机存取存储器: 只要供电它就会保持一个值。 一般而言SRAM要比DRAM快,这是因为SRAM没有刷新周期。 每个SRAM存储单元由6个晶体管组成, 而DRAM存储单元由一个晶体管和一个电容器组成。 相比而言, DRAM比SRAM每个存储单元的成本要高。 照此推理, 可以断定在给定的固定区域内DRAM的密度比SRAM 的密度要大。
---
DRAM ( Dynamic Random Access Memory)
动态随机存取存储器: 这是一种以电荷形式进行存储的半导体存储器。DRAM中的每个存储单元由一个晶体管和一个电容器组成。 数据存储在电容器中。电容器会由于漏电而导致电荷丢失, 因而DRAM器件是不稳定的。为了将数据保存在存储器中, DRAM器件必须有规律地进行刷新。
---
SRAM常常用于高速缓冲存储器, 因为它有更高的速率;
而DRAM常常用于PC中的主存储器, 因为其拥有更高的密度。
---
SDRAM( synchronous dynamic random-access memory)
同步动态随机存储器: 意思是指理论上其速度可达到与CPU同步。
- - -
DDR SDRAM(Dual Date Rate SDRAM)
简称DDR, 也就是“双倍速率SDRAM“的意思。 DDR可以说是SDRAM的升级版本,DDR在时钟信号上升沿与下降沿各传输一次数据, 这使得DDR的数据传输速度为传统SDRAM的两倍。
(手动省略号,时间戳2024.07.23)