导读:作者有幸在中国电子信息领域的排头兵院校“电子科技大学”攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思、清华紫光、联发科技等业界顶尖集成电路相关企业面授课程,对数字IC验证有了一些知识积累和学习心得。为帮助想入门前端IC验证的朋友,思忱一二后,特开此专栏,以期花最短的时间,走最少的弯路,学最多的IC验证技术知识。
本节将会主要介绍以下几个板块的内容:
坦白讲,这部分内容对于日后的验证岗位用的并不是很多,但是对于面试很有用,并且这些也是一个职业验证工程师应具备的基本素养,也是区分是否科班出身的关键之一。还有一点要说的是,通常应届生面试,设计和验证并不会区分太明显,所以要尽可能扩充自己知识体系的广度,同时也要有验证知识体系的深度!
COMS(Complementary Metal Oxide Semiconductor)通常指的是互补金属氧化物半导体。
MOS晶体管的立体结构示意图如下:
一个管子可以看做是0和1的基本单元!
通常会把MOS管做成PMOS(P表示Positive)和NMOS(N表示Negative)两种类型,这两种管子是互补的,合起来称为CMOS(C表示Complementary,即互补)。
PMOS和NMOS会构成电路基本的逻辑单元,如下图所示是反相器的构造(需要重点掌握)。
CMOS对应的标准单元(Standard Cell)工艺图(或称版图Layout),如下所示:
常见笔试题:PMOS管比NMOS管宽的原因是什么?
不管是从1到0,还是从0到1,两个都有一个过渡时间,即transient time,并不是理想的垂直跳变。尽管如此,我们前端在做分析的时候还是按理想的垂直跳变进行分析。因为我们更多关注的是高层的逻辑功能,尽量不要与底层的工艺库选型牵扯到一起,这要是耦合在一起分析直接把人搞崩溃了。
transient time跟晶体管的工艺有关系,即跟
R
O
n
R_On
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.83333em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right: 0.00773em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.328331em;"><span class="" style="top: -2.55em; margin-left: -0.00773em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right: 0.02778em;">O</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span><span class="mord mathdefault">n</span></span></span></span></span>和<span class="katex--inline"><span class="katex"><span class="katex-mathml">
C
L
C_L
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.83333em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right: 0.07153em;">C</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.328331em;"><span class="" style="top: -2.55em; margin-left: -0.07153em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">L</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span></span></span></span></span>有关系。<span class="katex--inline"><span class="katex"><span class="katex-mathml">
V
o
u
t
V_out
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.83333em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right: 0.22222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.151392em;"><span class="" style="top: -2.55em; margin-left: -0.22222em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">o</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span><span class="mord mathdefault">u</span><span class="mord mathdefault">t</span></span></span></span></span>到后面会去驱动很多的CELL,这些CELL简化下来就等效于一个电容模型。而管子本身也是有电阻的,故transient time跟所选的工艺(管子电阻)和输出负载(等效电容)有关系!</p>
更接近实际的transient time(容抗效应)
一个简化版本的transient time
左侧是后端设计的一个版图,上面是一个PMOS连接到VDD,下面是一个NMOS连接到GND。
管子的翻转,导致的管子的开和关形成的功耗!
V
d
d
2
)
Vdd^2)
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 1.06411em; vertical-align: -0.25em;"></span><span class="mord mathdefault" style="margin-right: 0.22222em;">V</span><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.814108em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span></span>),和翻转率成正比(<span class="katex--inline"><span class="katex"><span class="katex-mathml">
f
f
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.88888em; vertical-align: -0.19444em;"></span><span class="mord mathdefault" style="margin-right: 0.10764em;">f</span></span></span></span></span>),和Vout接的负载有关系(<span class="katex--inline"><span class="katex"><span class="katex-mathml">
C
L
C_L
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.83333em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right: 0.07153em;">C</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.328331em;"><span class="" style="top: -2.55em; margin-left: -0.07153em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">L</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"><span class=""></span></span></span></span></span></span></span></span></span></span>)</li></ul>
Node Transition Activity and power 节点转换活动和功率
Short circuit path between supply rails during switching 开关导通瞬间的电源和地之间形成短路(eg:CMOS反相器两个管子同时导通的情形)
Minimizing Short-Circuit Power 最小化短路功耗
Leaking diodes and transistors 二极管和晶体管漏电(与地之间形成通路,不过电流很小)
摩尔定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。
上面介绍了基本的标准单元内部结构,包括实现基本逻辑的原理,以及它的电气特性,包括它的容抗阻抗特性,也介绍了一下功耗相关的内容,最后介绍了业界有名的摩尔定律。下面要学习的是数字中的逻辑,跟上述电气特性的相关性并不是很大。电气特性更多的是在后端物理实现上去考虑的(eg:容抗效应导致从0到1跳变需要一定的时间,跳变会引起管子的翻转会引起功耗),而数字验证更多的需要了解前端的逻辑(eg:纯粹的0到1跳变,不会有中间的跳变过程)!
组合电路的意思就是输出是及时响应的,当前时刻的输出只与当前输入有关系,与之前输入无关!组合逻辑实现的电路叫组合电路。
组合电路的缺陷:组合逻辑由于走线延迟的差异可能会产生毛刺,这种现象叫竞争,产生的结果叫做冒险。为了解决这个问题,于是就引出了时序逻辑(把时间点分成一个个时钟周期,按照时钟周期去采集数据,在稳定的状态采的数据。)
常见笔试题:使用与非门设计一个电路,画出CMOS的电路图!
与非门(NAND)对应的标准单元(Standard Cells)
常见面试题:电路为什么需要触发器这种结构?
常见面试题:什么是建立时间、保持时间,如果setup time violation (建立时间不满足)或者 hold time violation (保持时间不满足 )应该怎么做?
Setup time violation:
Setup time violation solution:调整上述公式中的变量:Tclk、Tcomb、Tskew
Hold time violation(跟时钟周期没关系)
Hold time Violation solution
总结
常见面试题:为什么触发器会存在setup和hold time 的要求?
常见面试题:当setup和hold time violation发生时,会导致什么后果?
常见面试题:什么是亚稳态?如何在异步电路设计中解决亚稳态的问题?
组合逻辑过长,会导致Tsetup不满足,这时候可能会去减少组合逻辑,办法是通过加入入流水线(插入D触发器)!
如何表述(设计)数字算数逻辑单元?
如何将数字算数逻辑单元的描述代码转化为可以生成的文件?
二进制:binary
八进制:octonary
十进制:decimal
十六进制:Hexadecimal
&
||
|
算术运算符;||
逻辑运算符(只有对True和错False) 都是代表或;对于单比特两者都一样,多比特两者不一样。
|
b = 3’b111;||
b = 3’b001;~
算数运算符,!
逻辑运算符!