数字IC面试题笔记


04.11没时间更换图片源,先看文字吧

ASIC设计流程

1.芯片架构:考虑芯片的定义、架构、封装(X86、ARM、RISC-V、MISP)
2.RTL:用Verilog、systemVerilog、VHDL描述电路(时钟域描述、时序组合逻辑描述:时钟沿、组合逻辑描述:电平)
3.功能仿真:理想状态下的仿真
4.验证:UVM、FPGA原型验证
5.综合
6.DFT(Design For Test):插入扫描链
7.等价性验证:形式验证技术
8.STA:静态时序分析(与输入激励无关,寻找各个路径上的延迟)
9.布局布线:保证较少的内部交互、保证模块间的时延一致
10.时钟树综合:均匀的分配时钟,减少设计中不同部分的时钟偏移
11.DRC:设计规则检查
12.LVS:布线图与原理图一致性检查
13.GDSII:生成GDSII(集成电路版图的数据转换)

数字电路基础知识

R进制转换为十进制:按权展开、相加
十进制转换为R进制:整数部分除R取余法,得到的商再除R,除到商为0为止,余数从后往前读,先得的余数为低位。小数部分乘R取整法,取小数再乘R,先得的为高位,乘到积为0.
二进制转化八进制:三位一组,整数部分左边补0,小数部分右边补0

逻辑函数及其化简

1.公式化简法
1.1并项法:利用公式AB+AB’=A将两项合并为一个
1.2吸收法:利用公式A+AB=A吸收多余的项
1.3消因子法:A+A’B = A+B
1.4消项法:AB+A’C=AB+A’C+BC配项消除更多的与项
1.5配项法:A+A=A,A+A’=1配项。简化表达式
2.卡诺图化简法
2.1将逻辑变量分成两组,分别在两个方向用循环码形式排列出各组变量的所有取值组合,构成一个有2n个方格的图形,每一个方格对应变量的一个取值组合。具有逻辑相邻性的最小项在位置上也相邻地排列。
用卡诺图表示逻辑函数:
方法:把已知逻辑函数式化为最小项之和形式。将函数式中包含的最小项在卡诺图对应的方格中填 1,其余方格中填 0。
2.2用卡诺图化简逻辑函数:
化简依据:逻辑相邻性的最小项可以合并,并消去因子。
化简规则:能够合并在一起的最小项是2n个。

MOS 逻辑门

补充知识:PMOS管,箭头向里、NMOS管箭头向外。g极为重要端口。P负联通,N正联通。
与非门:上并下串
![image.png](https://img-blog.csdnimg.cn/img_convert/f469b87a0d1a7818439a819ef8cb0655.png#clientId=u49c6c35b-b553-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=713&id=ue26d2df5&margin=[object Object]&name=image.png&originHeight=713&originWidth=675&originalType=binary&ratio=1&rotation=0&showTitle=false&size=33886&status=done&style=none&taskId=ua536c96f-74c6-4f94-95bf-8479b36b2a3&title=&width=675)
或非门:上串下并
![image.png](https://img-blog.csdnimg.cn/img_convert/f29deb4e6ca8ce815ec388a300be4c40.png#clientId=u49c6c35b-b553-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=666&id=ufe0e11d1&margin=[object Object]&name=image.png&originHeight=666&originWidth=573&originalType=binary&ratio=1&rotation=0&showTitle=false&size=29732&status=done&style=none&taskId=ueabf35ae-2551-49a2-bc29-f31c23bdc2f&title=&width=573)、
反相器:![image.png](https://img-blog.csdnimg.cn/img_convert/52096a6e5233fa68b203528b2e7c4ac4.png#clientId=u49c6c35b-b553-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=548&id=uedf37a56&margin=[object Object]&name=image.png&originHeight=548&originWidth=486&originalType=binary&ratio=1&rotation=0&showTitle=false&size=16646&status=done&style=none&taskId=ua5ed4b67-a8ba-4ae0-8ea6-186f6f8948b&title=&width=486)

时序逻辑和组合逻辑的区别和使用

从三个方面来理解:

Code

时序敏感逻辑列表里没有上升沿或是带有*号的代码为组合逻辑代码。

电路层面

时序逻辑电路相当于增加了一个D触发器

波形图层面

组合逻辑电路实时变化,时序逻辑电路不会立即变化,只有在上升沿变化

阻塞赋值与非阻塞赋值

阻塞赋值符号是“=” 立即执行,其后面的语句等待执行完后才会执行;非阻塞赋值的符号是“<=”,在当前时间槽开始分析右侧表达式的值,在当前时间槽结束时更新左侧表达式的值,在这期间有更新的值也会改变,但不影响其他事件的执行。

竞争(Race Condition):在同一仿真时间槽(time-slot)多条语句同时执行顺序不同时可能产生不同的执行结果的情况。
(待学习)
建议规则一:模拟组合逻辑时使用阻塞赋值。
建议规则二:在过程性语句中,模拟时序逻辑时使用非阻塞赋值。
建议规则三:模拟latch时使用非阻塞赋值。
建议规则四:在同一个过程性语句中同时包括时序逻辑和组合逻辑时,该过程性语句中使用非阻塞赋值。
建议规则五:不要在同一个过程性语句中混用阻塞赋值与非阻塞赋值。
建议规则六:不要在多个过程性语句中对同一个变量进行赋值操作。
建议规则七:如果要观测非阻塞赋值的结果,使用strobe和strobe和monitor进行观测。
建议规则八:不要使用#0。

锁存器

电平触发的存储单元,数据存储的动作取决于输入时钟或者使能信号的电平值,使能状态时,输出才会跟着数据输入发生变化。
普通锁存器由输入直接控制输出。门控信号再控制信号有效期间都可以接受输入信号,所以激励信号的任何变化都将直接引起锁存器输出状态的改变。输入信号的多次改变引起输出状态的多次变化,称为锁存器的空翻。
特点
1.对毛刺敏感,不能异步复位,上电后处于不确定的状态
2.锁存器会使静态时序分析变得非常复杂,不具备可重用性
3.耗费资源,除非都用与非门搭建

Latch

此类型锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态(相当于使能信号)

触发器

分为主从触发器和边沿触发器,主从触发器在时钟有效期内都接收输入,在时钟边沿切换状态;边沿触发器在时钟边沿才会接收输入且切换输出状态。
![image.png](https://img-blog.csdnimg.cn/img_convert/df416f67d47bc569dccd5b53ce224c35.png#clientId=u86f98ee0-e226-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ub3043cc7&margin=[object Object]&name=image.png&originHeight=196&originWidth=334&originalType=url&ratio=1&rotation=0&showTitle=false&size=12999&status=done&style=none&taskId=uba0bdfd6-1929-4bd0-bd59-16320063e31&title=)
![image.png](https://img-blog.csdnimg.cn/img_convert/6ed1fa9cd6d8a221b98e92930e919365.png#clientId=u86f98ee0-e226-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=134&id=u381bf88f&margin=[object Object]&name=image.png&originHeight=134&originWidth=709&originalType=binary&ratio=1&rotation=0&showTitle=false&size=7175&status=done&style=none&taskId=u205f574a-655b-425c-bcde-7804a7e46ab&title=&width=709)
DFF的结构
![image.png](https://img-blog.csdnimg.cn/img_convert/4662729028a3050e325c434eeeb94f3c.png#clientId=u86f98ee0-e226-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=834&id=u5a3b9f69&margin=[object Object]&name=image.png&originHeight=834&originWidth=698&originalType=binary&ratio=1&rotation=0&showTitle=false&size=98512&status=done&style=none&taskId=u9ac64c2c-8c44-4d12-b09e-47d99bd30ed&title=&width=698)
![image.png](https://img-blog.csdnimg.cn/img_convert/19d6fc2ffb286514c15fa2c83e21f81b.png#clientId=u86f98ee0-e226-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=425&id=u2981e790&margin=[object Object]&name=image.png&originHeight=425&originWidth=740&originalType=binary&ratio=1&rotation=0&showTitle=false&size=53136&status=done&style=none&taskId=u17e5ebd2-61ee-4ab4-a5e9-e40fef07d5a&title=&width=740)

题目练习:画出Y = A·B + C的CMOS电路图


题目:用D触发器带同步高置数和异步高复位端的二分频的电路,画出逻辑电
路,Verilog描述。

华为题目:时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。组合逻辑电路最大延迟为T2max,最小为T2min。问:触发器D2的建立时间T3和保持时间T4应满足什么条件?
![image.png](https://img-blog.csdnimg.cn/img_convert/4295c79ddfb1eaa4b3bdda8c473a2bb0.png#clientId=u86f98ee0-e226-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=295&id=u07cf47ac&margin=[object Object]&name=image.png&originHeight=295&originWidth=516&originalType=binary&ratio=1&rotation=0&showTitle=false&size=66206&status=done&style=none&taskId=u81b7b973-04b9-44e8-892a-5b5e7733168&title=&width=516)
![image.png](https://img-blog.csdnimg.cn/img_convert/ce36c5ecbeeb97f22555567368047df5.png#clientId=u86f98ee0-e226-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=314&id=u0ecfaaf2&margin=[object Object]&name=image.png&originHeight=314&originWidth=535&originalType=binary&ratio=1&rotation=0&showTitle=false&size=59392&status=done&style=none&taskId=u38bbb6a4-dfb1-45c6-96f5-00c6dfd5900&title=&width=535)

流片前时序违例:
1.同时钟域中寄存器到寄存器间的组合逻辑延迟过大,导致下一级寄存器的建立时序违例。
解决方法:通过时序报告,在延迟大的组合逻辑间加入一级寄存器。
2.不同时钟域间的时序违例。
解决方法:跨时钟域的数据传输可以用异步fifo,或者用目的时钟打拍,至少两拍,并在约束文件中set_flase_path。
流片后时序违例判断方法
1.先将时钟频率降低,再将芯片升温到一定温度,若升温前芯片不工作,升温后可工作即是保持违例。
降低时钟频率可避免建立时间违例。

跨时钟域及其解决办法

单bit
采用同步器进行CDC

多bit
1.将多bit合并成单bit,比如使能信号和控制信号
2.采用异步FIFO
3.多周期路径法MCP
4.使用格雷码传递多个CDC信号

握手信号
使用同步器将控制信号传递过去后,再使用同步器反馈确认信号反馈信号

打拍
主要是解决同步的问题,由于寄存器之前的数据可能来自其他时钟域,所以在本时钟域使用时为保证同步用寄存器寸一拍,也能解决亚稳态的问题

亚稳态

亚稳态是指当采集数据时数据保持时间小于寄存器的建立时间或保持时间导致寄存器不能正确采集到正确的数据电平引发的错误
危害:亚稳态传递、逻辑误判
解决办法
1.使用同步器,2级ff
2.降低频率
3.使用更快的寄存器
4.避免变化过快过于频繁的信号进行跨时钟域采样

功耗

总结:
1.合理规划芯片工作模式,通过功耗管理模块控制芯片各模块的clock,reset起到控制功耗的目的。
2.门控时钟:有效降低动态功耗
3.多电压供电:通过控制模块的电压降低功耗
4.多阈值电压

1.动态功耗

指电路在工作时(翻转时)所消耗的能量。对于CMOS电路来说,它又分为开关功耗和短路功耗。
开关功耗:电路翻转时对负载电容充电的功耗。
短路功耗:输入翻转时,PMOS和NMOS同时打开的瞬间电流形成的功耗。
公式:Pdyn = (CL* _ Vdd2 _ *Ptran *_F) + (ttran _*Vdd *lpeak *F)
CL表示电路总负载电容;Vdd为工作电压;Ptran为工作电路所占比例;F为工作时钟频率;ttran为PMOS,NMOS同时导通时间;lpeak为短路电流
降低动态功耗的方法:降低工作电压、减小电容、降低工作频率

2.静态功耗

指电路没有翻转的情况时,只有供电时,晶体管中漏电流造成功耗
1.亚域值漏电流isub:从Drain经过弱反形层流向Source的电流
2.栅电流:Igate: 由于隧道效应和热载流子效应,由Gate经薄栅氧流向Sub的电流
3.由Gate引起的Drain电流IGIDL:由于Drain端的强电场引起的由Drain流向Sub的电流
4.结反偏电流Irev:反偏结耗尽区少子漂移和电子空穴对产生形成的由Drain、Source到Sub的电流
有几种方法可以降低静态功耗,其中Multi-Vt和power gating的方法后面会详细介绍。其它还有VTCMOS、Stack Effect和Long channel器件的方法。
VTCMOS(Variable Threshold CMOS)是在SUB上加上一个反偏电压,从而提高管子的 VT,以减小Isub。这样会额外增加两条power rails,增加了建库的难度,而且在小尺寸下,这种作法的作用也不明显了。
Stack Effect就是采用叠加的gate,如果叠加的gate中有两个输入都是关闭状态,则流过两个gate的静态电流会很小。在理论上,应该在关闭时钟前将所有gate输入置为关闭状态,但在现实中,这是不可实现的。
长沟道器件:长沟道器件可以有效降低静态电流,但同样会影响动态响应,降低电路性能。同时长沟通也会增加栅电容,对动态功耗不利。因此可以考虑在开头次数较小或者对性能要求不高的地方采用长沟器件。

竞争冒险的区别、成因、危害、消除办法

竞争是指,信号经由不同的路径传输到达某一汇合点有先后的现象。
冒险是指由于竞争导致在电路输出端可能出现尖峰脉冲的现象。(但竞争不一定有冒险)

消除办法
1.接入滤波电容(简单易行,但增加了波形的上升下降时间,波形变坏)
2.引入选通脉冲P,因为P的高/低电平出现在电路达到稳定状态以后,所以输出端不会出现尖峰脉冲。(比较简单不需要增加电路元件、但需要得到一个与输入信号同步的选通脉冲)
3.修改逻辑、增加冗余项(适用范围有限,但效果很好)

毛刺的成因、危害、处理方法

1.建立时间和保持时间的不满足
2.竞争冒险
危害:影响到逻辑电路的稳定性
处理方法:
1.添加电容
2.格雷码计数器消除竞争冒险(不同时变化)
3.同步电路

时序约束的意义和做法;(时钟约束,IO约束,例外约束等)

1.时序约束的意义:对已经完成了排版布线的电路进行静态时序分析能够有助于检验生成的电路是否满足设计的要求。同时时序约束能够控制逻辑的综合、映射、布局和布线,以减少逻辑和布线延时。

  • 指导时序分析器进行时序分析
  • 指导编译器进行更好的综合、布局与布线

时钟偏移概念

时钟分支信号再到达寄存器的时钟端口过程中存在延时,与负载电容及其个数有关

时钟抖动(随机抖动和固定抖动)

与理想时钟相比存在时而超前时而滞后的偏移,
随机抖动来源于热噪声、电子和空穴特性等。
固定抖动来源于开关电源噪声、串扰、电磁干扰有关,及电路设计。

时钟转换时间

高低电平的转变时间

时钟延时

时钟从出发到达触发器端口的延时,有时钟源延时(从实际时钟原点到达定义点的延时)和网路延时(从定义点到达触发器的时间)

时钟复用

·时钟复用电路一旦上电工作之后,就不要对复用逻辑进行更改,以免更改之后产生不确定错误。
·在测试的时候,设计电路绕过时钟多路逻辑来选择普通的时钟,也就是使用普通的时钟进行测试。
·在时钟进行切换的时候,寄存器要处于复位的状态,以免在切换之后建立时间不够而进入亚稳态。
·在时钟切换的时候,可能会产生一些短暂的错误,但是这些错误对整个系统没有影响。

门控时钟

门控电路由控制信号控制,使能时打开,不使能时各个寄存器不会动作。但在高电平关闭时会出现毛刺,故用低电平D触发器输入使能信号。

双边沿时钟

·由于上下沿都用,要求时钟的质量很高,一般的时钟源很难达到,成本高。
·由于时钟的抖动等不确定因素的存在,容易使时钟的占空比发生改变,因此容易引起建立时间和保持时间的违规。
·当使用的双沿时钟之后,时钟的约束变得复杂,此外当某处发生违规之后,违规的路径的查找难度比单沿时钟大。
·还有一点就是测试难度比较大,双沿电路的测试电路必定有别与单沿的测试电路。进行扫描测试时,上下沿的时钟先都得插入多路复用器进行选择。

时钟树

对不同的寄存器进行时钟的约束加入时钟缓冲器,使得符合时钟树的要求。

IO约束

分为输入延迟约束和输出延迟约束。两者基本相同。
前端Tco、Tdata、Tclock
终端Tsu、Th
Tco为时钟到寄存器输出的延迟、Tdata为数据路径的延迟、Tclock时钟路径的延迟
因此到达IO口处,时钟数据的相位关系是输入延迟:TinputDelay = Tco + Tdata -Tclock
保证采样正确的情况下,max(TinputDelay)<= Tperiod - Tsu 满足建立时间的要求
min(TinputDelay)>=Th应该刚好满足保持时间要求

例外约束

静态时序分析工具默认分析规则是在单周期下对所有时序路径进行分析,但是实际设计中并不是所有的路径都需要分析,而且也不是所有时序路径的延时都规定在一个时钟周期以内。所以通过定义时序例外来对特殊的时序路径进行特殊的声明,指导时序分析工具对特殊的时序路径做出正确分析,这样的特殊声明叫做时序例外。
![](https://img-blog.csdnimg.cn/img_convert/1ebb9ed40a32f51c59f836f983f2470c.png#clientId=u89773dd4-bd9f-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u80093874&margin=[object Object]&originHeight=313&originWidth=1080&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u6b8a8322-a9c3-4ed1-8880-9f4f685ba5f&title=)

时序路径

1.时序路径(timing path)由起点(startpoint)、连线延迟、单元延迟和终点(endpoint)组成。
2.从时钟端到起点的路径称为发射时钟路径,从时钟端到终点的路径称为捕获时钟路径,从起点到终点的路径称为数据路径。

ASIC flow & FPGA flow

1.design entry
在ASIC设计系统里用HDL或者网格输入设计系统输入
2.Logic Synthesis
利用VHDL or HDL or verilog 和逻辑综合工具产生一个网表
3.System partitioning
分离大系统到ASIC尺寸的片
4.Prelayout simulation
检查功能设计的正确性
5.Floorplanning
在片上布置网表块
6.Placement
决定在一块片上细胞的位置
7.Routing
布线
8.Extraction
决定电阻和电容的连线
9.Post layout simulation
布线后的仿真

你可能感兴趣的:(FPGA,面试)