数字IC验证:电路基础知识(数字IC、SOC等)

数字IC验证:电路基础知识(数字IC、SOC等)
⽂章⽬录
写在前⾯:
本⽂主要为笔者准备数字IC秋招时学习的⼀些技术问题。主要意向岗位是数字IC验证。希望对⼤家有帮助,共同进步。也希望⾃⼰能拿到⼀个满意的offer!
0 SOC结构
下图画了⼀个SOC结构图,SOC包含了很多模块,即IP,如CPU、DSP、USB外设、Memory、DMA等,它们通过总线如AHB、AXI连接。通常是先设计好每个IP模块,最后集成到⼀起,成为SOC。
1 数字IC设计的流程
1. 制定设计需求,即SPEC(Specification)。做芯⽚之前要先做市场调研,根据市场需求来设计芯⽚的SPEC,由架构⼯程师来设计芯⽚架构,包
括芯⽚的功能和具体指标。
2.确定了SPEC后,要进⾏系统级设计,为了降低成本,不是⼀开始就写RTL,要先⽤算法进⾏模拟仿真,就是⽤系统建模语⾔,⽐如
Matlab,C,C++来对各个模块进⾏描述,模拟仿真来确定SPEC的可⾏性,如果可⾏的话,最后就输出⼀个具体的设计需求⽂档。
2. 得到设计需求⽂档之后,就要进⾏前端设计。⾸先是进⾏RTL设计,就是写verilog,⽤到的EDA⼯具有Synopsys 的VCS,这个过程结束中还要
进⾏风格代码检查,同时验证⼯程师也要根据SPEC来对RTL做功能仿真,⽐如⽤System
Verilog搭建testbench来验证RTL设计的功能是否满⾜,⽤到⽐如说Mentor的QuestaSim或者Cadence的Xcelium,有的还会⽤FPGA做原型验证。验证通过了之后,下⼀步就是逻辑综合,就是将RTL代码转化成门级电路,⽐如⽤Design
Compiler⽣成⽹表⽂件。还要进⾏STA静态时序分析,也就是套⽤⼀些时序模型来针对电路分析有没有时序为例,⽐如建⽴时间、保持时间等。
3. 前⾯的步骤都通过之后,就把⽹表⽂件给后端。后端设计就是做Place&Route,过DRC、LVS,PEX。
4. 这些都过了之后,后端最终会⽣成GDSII格式的⽂件,就可以⼯⼚流⽚了,流⽚回来的demo要再做测试。失败了就打回去改,成功了就可以做
出产品发布了。
1.1 逻辑综合的流程
金属按键
逻辑综合是将RTL电路转换成基于具体⼯艺库的门级⽹表。分为三个阶段:
1. 转译:把电路转换成EDA内部数据库,这个数据库跟⼯艺库是独⽴⽆关的;
2. 优化:根据⼯作频率、⾯积、功耗来对电路进⾏优化,进⽽推断出满⾜设计指标要求的门级⽹表
3. 映射:将门级⽹表映射到晶圆⼚给定的⼯艺库上,最终形成该⼯艺库对应的门级⽹表。
常⽤的逻辑综合⼯具为Design Complier (DC)。DC在综合过程中会把电路划分为以下处理对象:。
DC逻辑综合的流程:
1. 预综合过程:启动DC -> 设置各种库⽂件(link_library, target library, symbol library) -> 创建启动脚本⽂件 -> 读⼊设计⽂件(analyze,
elaborate, read_file) -> DC中的设计对象 -> 各种模块划分 -> Verilog的编码
2. 施加设计约束:设计环境约束(set_operating_conditions, set_wire_load, set_drive, set_driving_cell, set_load, set_fanout_load)
3. 设置时序约束:设计规则DRC的约束(set_max_transition, set_max_fanout, set_max_capacitance) -> 优化的约束(create clock ->
set_clock_skew -> set_input_delay -> set_output_delay -> set_max_area)
4. 设计综合
5. 后综合
2 电路基础
2.1 三极管BJT
BJT是Bipolar Junction Transistor。Bipolar指的是有两种载流⼦,电⼦和空⽳;Junction指的是PN结,有两个PN结结合在⼀起;
Transistor就是晶体管。
三极管有三个极:集电极、发射极和基极。对应有三种接法:共集电极、共发射极和共基极。⽐如说共发射极,就是输⼊和输出回路共⽤了发射极,三极管的输⼊电压是,输⼊电流是,输出电压是,输出电流是。三极管的⼯作状态主要分为截⽌区、放⼤区和饱和区,还有击穿区。截⽌区的发射结和集电结都反偏(),输出电流⼏乎为0;放⼤区是发射结正偏,集电结反偏(
),输出电流和输⼊电压成近似线性;饱和区是发射结和集电结都正偏,(),输出电流达到饱和,不再随着输⼊电压增⼤⽽增⼤;但输⼊电压增⼤到⼀定程度,管⼦就击穿了。
V BE I B V CE I C V ≤BE V BE (on )V >V ,V >BE BE (on )C V >B V E I C V BE V >V ,V >BE BE (on )B V C
2.2 MOSFET
MOS (Mental-Oxide-Semiconductor)就是⾦属氧化物半导体,是它最初的制作材料,不过现在已经不⽤⾦属氧化物了,改⽤多晶硅了。FET (Field-Effect-Transistor)指的是场效应管,是指载流⼦的运动形成了沟道,形成了电场。
网络视频传输MOS管有4个极:栅极、源极、漏极、体极。根据沟道类型分为NMOS和PMOS。
根据沟道的形成,MOS管的⼯作状态分了三种:截⽌区、线性区、饱和区。截⽌区 阈值电压 , 没有
沟道;线性区,有沟道形成,根据沟道的类型分为NMOS和PMOS,如NMOS,栅极和源极之间的外加电压,让漏极和源极之间的半导体层的载流⼦,也就是电⼦累积,靠近栅极,形成⼀个N型的反型层,就是N型沟道。但是只有沟道是没有电流的,还需要增⼤漏极和源极之间的电压,吸引电⼦靠近源极,才有沟道电流, 随着的增⼤⽽接近线性增⼤,并且靠近源极处的电⼦更多,沟道更宽,靠近漏极处沟道宽度随着的增⼤,越来越窄;直到漏极的沟道夹断,只有靠近源极处还有沟道,就是饱和区,对应,饱和区不再随着增⼤⽽增⼤。
BJT和MOS区别:
1. BJT是电流驱动型的,功耗⼤,传输延迟⼩,基极电流限制了它的集成度没法很⾼。
2. MOS管是电压驱动型的,功耗⼩,输⼊阻抗⼤,输出阻抗⼩,栅极⼏乎没有电流,因此集成度⾼。
MOS管栅极的SiO2层形成多晶硅⽽不是直接覆盖⾦属:
最早的栅极⼆氧化硅绝缘层上覆盖的是⾦属,在做栅极之前先做好源和漏,源漏退⽕后才能做栅极,因为栅极⽤⾦属不能承受⾼温。同时栅极的⾦属和互连的⾦属线是⼀起做的,为了保证栅极和源漏能连接起来,所以栅极和源漏的重叠部分要求⽐较宽(0.5um以上),导致栅源和栅漏的重叠电容很⼤。⽽多晶硅的熔点⾼,并且可以掺杂后的电阻低,可以先做多晶硅的栅极,再做源漏阱,然后退⽕。并且随着MOS管尺⼨越做越⼩,⽤多晶硅也不⽤考虑栅极和源漏之间重叠宽度的问题。
2.3 CMOS
下拉⽹络⾥,输⼊驱动NMOS的栅极,上拉⽹络⾥,输⼊驱动PMOS的栅极,因为NMOS传强0,PMOS传强1,这样输出总是强驱动的。
2.4 锁存器与触发器:
RS/D/JK/T
V <gs V T V >GS V ,V ≤T ds V −gs V T V gs V ds I ds I ds V gs V ds V >gs V ,V >T ds V −gs V T I ds V gs
1. RS锁存器&触发器:是锁存器,电平触发。基本的RS锁存器是当S=1&R=0时,输出Q=1;S=0&R=1时,输出Q=0;R=S=0时状
态保持;但是不能同时给R=S=1,输出和同时置1之后会不确定。
同步RS锁存器:加了同步时钟,只有CLK=1时,输出状态会改变,其他时候,状态保持。时钟有效时,输出逻辑和基本RS锁存器⼀样。此外,同步RS锁存器有空翻现象,即CLK=1时,S和R若多次改变,每次改变都会影响输出,会出现每个时钟脉冲下输出状态会发⽣很多次转换,但时序电路我们⼀般都希望每个时钟节拍最多对应⼀次电路的输出转变。
为了解决同步RS锁存器的空翻现象,就有了主从RS触发器,级联两个同步RS触发器,连接RS输⼊的触发器是主触发器,是时控信号,连接和输出的是从触发器,是时控信号。两个时控信号的组合让只有时钟下降沿时输出转变,解决空翻现象。
2. JK触发器:(JK触发器是主从RS触发器加了反馈,解决了RS触发器不允许R=S=1的约束)有两个激励信号J和K,输出,时钟边沿触发,J=0&K=1时置0(复位)、J=1&K=0时置1,J=K=0时保持(状态不变)、J=K=1时翻转(状态翻转)。
3. D触发器:(JK触发器+⼀个反相器:,)次态⽅程,时钟边沿触发
4. T触发器:(JK触发器的J=K=T)异或操作,,时钟边沿触发
5. 触发器和锁存器的区别:触发器是边沿触发,锁存器是电平触发。锁存器在不锁存数据时,输出会随输⼊变化,但⼀旦锁存数据,输
出不受输⼊影响。
2.5 最⼤项,最⼩项
最⼤项即最⼩项的取反/补集。如对于3变量,则最⼩项为,最⼤项为2.6 加法器的种类和区别
1. 1-bit的半加器:sum = A xor B, C_out = A·B
2. 1-bit的全加器:两个半加器和⼀个或门实现全加器,sum = (A xor B) xor C_in, C_out = (A xor B) · C_in + A·B
3. Ripple-Carry Adder⾏波进位加法器:N个全加器直接级联,前级的C_out连后级的C_in,缺点是加法器的延时⾼,电路⼯作频率
低。延时,其中  是每个全加器⾥C_in到C_out的延时,  是C_in到sum的延时
4. Carry-Bypass Adder进位旁路加法器:在最后加⼀个选择器,选择器的输⼊是第⼀级的C_in和最后⼀级的C_out,选择信号是
BP,BP等于每⼀级全加器的两个输⼊的异或相与,如果BP=1说明每⼀级的进位都是输⼊传递到输出,所以选择器选择直接输出第⼀级的C_in,⽽不⽤进⾏进位传递,降低了延时
5. Carry-Select Adder进位选择加法器:每⼀级的内部先算好C_in来0和1时分别输出的结果,再根据实际的C_in⽤mux选,降低了延
6. Carry-Look-Ahead Adder超前进位加法器:引⼊了⽣成信号和传播信号的概念,对于第i级全加器,⽣成信号Gi=Ai与Bi,传播信号
Pi=Ai或Bi,有⼀个推论是Ci+1 = Gi:j + Pi:j ·Ci(第i+1级的进位输出Ci+1 = Gi:j 或上 Pi:j和第i级的进位相与的结果),通过这个推论可以实现降⽐特运算,每⼀级的进位的都可以通过第⼀级进位加⼀个组合电路产⽣,⾼位运算不需要低位⼀级级传递,直接由第⼀级算出来,因此速度很快,但是如果位数⽐较⾼,额外增加的组合电路会导致电路变得很复杂。
2.7 SRAM 的结构和基本原理
Q Q CLK Q Q CLK Q =
n +1J ⋅+n Q n ⋅Q K n n J =D K =D Q =n +1D n Q =n +1T ⊕n Q n A =0,B =0,C =0ABC A +B +C
t =adder (n −1)∗t +carry t sum t carry t sum
螺钉加工1. SRAM的结构:主要是⼀个Memory的array阵列,⾥⾯是具体存放的数据;通过control模块来控制读写操作,控制模块有CS⽚选
端,WE(Write Enable)和OE(Output Enable);还有row decoder和column decoder,功能类似是⼀个N输⼊的选择器,⽤来选择具体哪⼀⾏和哪⼀列;还有⼀般会有个FIFO,来作为写memory时候的缓冲;memory输出那边还有⼀个Sense Amplifier,是⼀个放⼤器,因为数据信号是0还是1,是通过电平来判断的,但是⽐如说在某⼀⾏,01的变化在电压上的体现其实很⼩,所以Sense Amplifier是通过把这种电压上的微⼩变化放⼤到可以判断出逻辑0还是1的电平变化。
2. SRAM的读写操作:
(1)读数据:⾸先通过地址总线来传地址,送到整个SRAM的Addr 输⼊引脚;之后⽤CS具体选到某⼀个SRAM⾥,把地址送到row decorder和column decoder⾥;然后使能OE来知道是要读出数据;之后decorder定位到的地址⾥的数据读出来,从Dout送到数据总线。
(2)写数据:通过地址总线传地址,送到Addr输⼊引脚;并且数据总线把数据传到Data in引脚;然后CS⽚选选到某⼀个SRAM,使能WE,并且通过送到decorder的地址来定位到要写数据的具体某⼀⾏某⼀列,然后把数据写进去。
3. SRAM和DRAM:都是可擦除的,也就是掉电数据会消失的。SRAM主要⽤在CPU cache⾥,因为它的访问速度很快,但它存储量
不⼤;DRAM⼀般⽤在主Memory⾥,需要周期性地刷新,因为DRAM的cell是⼀个MOS管+⼀个电容组成的,通过电容的电压来判断数据时0还是1,但是因为是电容,电容⾥储存的电荷是会慢慢泄露的,所以需要周期刷新,充电。⽽SRAM的⼀个cell单元是4个MOS管+2个电阻组成,通过改变MOS管的导通截⽌来改变数据是0还是1。
2.8 竞争与冒险
1. 什么是竞争与冒险:在组合逻辑中,由于向相反⽅向变化的输⼊信号经过不同的路径,有不同的延时,导致到达某个门的时间不⼀
致,叫竞争(Race);由于竞争现象所引起的电路输出产⽣了⽑刺,就叫冒险(Hazard)。有竞争不⼀定有冒险,但出现了冒险⼀定存在竞争。
2. 如何判断是否存在竞争与冒险:(1)通过布尔表达式来判断:如果布尔表达式中有相反的信号,⽐如Y=A·B+A_not·C,当B和C
都为1的时候,如果A的值跳转,就会发⽣竞争,进⽽在跳转的过渡时间段可能会产⽣⽑刺,也就是冒险。(2)通过卡诺图来判断:如果有相切的框,就可能会有竞争冒险。
3. 竞争与冒险的解决⽅法:⽤D-FF,格雷码计数器,同步电路等消除竞争与冒险。(1)修改逻辑设计,增加冗余项,⽐如对布尔表达
式添加消去项,⽐如Y=A·B+A_not·C,可以添加消去项BC。(2)引⼊封锁脉冲,也就是负脉冲,在输⼊信号发⽣竞争的时间段内,把可能产⽣⽑刺的门锁住,不过要求封锁脉冲的宽度不应⼩于过渡时间(⽑刺的时间)且与输出信号转换同步。(3)引⼊选通脉冲,在⽑刺结束后,再选通稳定的信号输出,不过对脉冲宽度和产⽣的时间有严格要求。(4)在门电路的输出端引⼊滤波电容,来滤掉⽑刺,但输出波形本⾝的边沿也会被滤得更平滑。(5)改⽤时序逻辑,⽤D-FF打⼀拍,对于D触发器的数据输⼊端,只要⽑刺不出现在时钟沿并且没有建⽴时间和保持时间违例,输出就不会有冒险。(6)转换成格雷码再输⼊,因为格雷码每次只有1bit变化
4. 冒险的分类:根据冒险的产⽣原因分为逻辑冒险和功能冒险:逻辑冒险是指因为电路中⼀个输⼊信号发⽣变化产⽣的冒险,⽐如对应
的布尔表达式⾥有A和A⾮,这种因为A的变化产⽣的冒险就是逻辑冒险;功能冒险指因为两个或者多个信号同时发⽣变化,但到达门的输⼊端有时间差⽽产⽣了⽑刺,叫功能冒险。根据输出信号中⽑刺的个数,分为静态冒险和动态冒险:由于信号和电路的延迟,在输出信号产⽣了单个⽑刺,就叫静态冒险;产⽣了多个⽑刺,就是动态冒险。
3 Verilog基础
清扫车扫刷gen语句的使⽤,怎么避免latch
金桥通联轴器
⼿撕代码部分:帧头检测、⽆⽑刺时钟切换、按键去抖动,红绿灯、斐波那契数列求解器、fir滤波器等等。然后⽤verilog的语法写tb 3.1 阻塞和⾮阻塞
1. 阻塞:阻塞语句在执⾏完后才会执⾏下⼀个语句(assign⼀定要⽤阻塞=)
2. ⾮阻塞:当前语句的执⾏不会阻塞下⼀语句的执⾏,⾮阻塞语句之间是并⾏的(<=)
3.2 状态机
1. 分类:Moore状态机和Mealy状态机。⼆者的次态都取决于当前状态和当前输⼊。
铸造模具2. Moore状态机的输出只取决于当前状态,与当前输⼊⽆关,就是每个状态对应⼀个输出。
3. Mealy状态机的输出不仅取决于当前状态,还取决于当前输⼊。如果不对输出做同步处理,输出容易出现glitch, 由于输出不仅取决于
状态还取决于输⼊,因此输出的译码电路会更复杂,可以认为mealy能跑的频率⽐moore更低⼀点

本文发布于:2024-09-21 23:29:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/308545.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:输出   电路   冒险   设计   栅极
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议