第六课:数字ASIC设计基础知识点

主要内容

1.设计流程

总的流程与第一课类似,此处把逻辑综合也划归后端部分;后端部分主要的工作分为两类:①功能验证,确保每经历一步转换步骤后,功能是等价的;②时序分析,确保每一步转换后的时序都满足要求;

2.组合与时序电路

组合电路特点:对电平敏感,输入变输出立刻变,不能存储,故在用verilog编程时,用阻塞赋值(可理解为该步在执行时,其他的语句不能执行);

时序电路特点:可以存储数据,即各种触发器构成的,对时钟沿敏感,只有在时钟沿到来时,才可能改变数值;在执行时允许其他语句同时执行,用非阻塞赋值;

3.锁存器

锁存器特点:可以存储,但同时对电平敏感,而不是时钟有效沿,故对毛刺敏感,时序难以分析;一般在coding时,不推荐使用latch,但有时由于编码不成熟/不规范,在逻辑综合过程中,易形成锁存器,一般要避免;

面试问题:组合逻辑中,对于比较容易产生latch的coding,一般都是出现了部分语句描述不清晰/不全的情况,工具在做逻辑综合时,对于不清晰/不全的问题,只能默认选择保留当前值-即存储,而组合逻辑又对电平敏感,就形成了锁存器; 大致有三种情况:

①:case描述不全,2bit应该有四种情况,而只描述了三种,对于b11的值没有描述,故当取b11时,a只能保留(存储)当前值,得到锁存器;

②:只描述了if(en=1),没有写else的情况,所以当en≠1时,a只能保留当前值;

③:同样的问题,敏感列表没列全-en不在列表内,当en变化时,出现列表外的情况,c只能保留当前值;

4.同步复位和异步复位

posedge / negedge:上升/下降沿,后面带的表示信号来源;

同步复位:看这个coding可以理解为,复位语句的执行条件(括号内条件判断)与其自身无关,而只与时钟上升沿同步,仅当时钟上升沿来临时,才会执行复位coding,二者同步;

异步复位:复位语句的执行条件除了时钟上升沿外,还与其自身相关,当上时钟上升沿or复位信号来临时,就执行复位coding,二者可异步;

5.RTL vs Gate,从RTL到网表的过程

图二是一个简单的二分频电路;

6.建立保持时间

Tx1建立时间:表示当时钟有效沿到来之前,准备写入寄存器的数据必须要准备好,这个准备的时间根据工艺库来定,是寄存器的物理特性;例:在xx nm工艺下,该寄存器的Tsetup >0.1ns;

Tx2保持时间:表示当时钟有效沿到来后,数据写入寄存器时必须要的保持时间;也就是数据要写入该寄存器,在有效沿到来后,必须要保持一会才能写的进去,如果恰好在时钟沿来临时数据就消失,那么是写不进去的;可以理解为该寄存器的反应时间,也是寄存器的物理属性,由工艺库决定;例:在xx nm工艺下,该寄存器的Thold >0.01ns;

(注:整个过程就像接力赛,在交接时,前一棒的人要准备好,然后交接时,不能立马松手,必须等后面人拿稳了以后才松手;)

建立时间分析:

所有的时序电路都可以简化为这种简单的结构:寄存器DFF1,经过一定的组合逻辑处理行为后,把信号传给DFF2,这正好对应了RTL(寄存器传输级)的过程;复杂电路一定可以拆分为很多个这种基本的传输结构;这就出现了一个问题,如何保证经过DFF1发出的信号Q1,在一个CK1的周期内经处理后,能被DFF2接收到并成功保存呢,换句话说,要保证信号数据D2必须满足DFF2的建立保持时间的要求;

如上图及下图,先假设CK1与CK2完全相等无延时①从CK1的一个上升/下降开始分析,当跳变沿到来时,信号D1转换为Q1会存在一个跳变延迟,无法突变,这是物理特性,延时记为Tck;②然后,Q1信号经过加减乘除取反等一系列处理后变为信号D2,耗时记为Tcmb(CMB:combination);③D2要在时钟周期T内先准备好,满足DFF2的建立时间要求Tx1>Tsetup;

经过分析后发现,Tck+Tcmb+Tsetup<T,而在这其中,Tck是跳变延迟,Tsetup是建立时间,二者都是物理参数,与工艺库有关,故其中容易变化的就是Tcmb,这就要求中间的组合电路延时不要太复杂太长,Tcmb<T-Tck-Tsetup;如果Tcmb太长了,就会出现亚稳态,即不清楚DFF2寄存器是否会成功接收并保存数据D2;所以,当定义了时钟周期后,就约束了电路内的行为不能太复杂,而如果CMB无法简化,就必须增加时钟周期!

而事实是,CK1与CK2不一定是完全相等无延时的,很可能存在线路延时;此时,若CK2晚于CK1,则是有利的若CK2超前CK1(worse),存在时钟偏差Tskew,则Tcmb<T-Tck-Tsetup-Tskew,对Tcmb的要求将更加严格;

一般是时序调整时,调整Tskew来满足时序要求是常见的一种方法

保持时间分析:

保持时间分析和建立时间分析类似:

假设CK1完全等价CK2无延时,根据D1/Q1/D2的高电平脉冲时间均为一个T周期可知,可得出 Tx2=Tck+Tcmb>Thold;这么来看的话,保持时间Thold与时钟周期T没有直接的关系;在时序分析时,出现hold违规,也会出现亚稳态,且是无法通过加/减时钟周期T来改变的;但可以通过在组合逻辑中加些延时来满足Thold,即将Tcmb增大,Thold要求中间的组合电路延时不要太小;

当CK2早于CK1时,有利于Thold满足;当CK2晚于CK1时(worse),Tck+Tcmb-Tskew>Thold,即Tcmb>Thold+Tskew-Tck;

静态时序分析:

综上,静态时序分析就是对电路中所有的时序路径进行Thold及Tsetup的检查,使Tcmb不要太大,也不要太小

7.流水线设计

流水线设计就是以面积来换速度;

在非流水线设计中,在fetch,decode后面没有加入FF,仅为组合电路,故不能同时执行解析与执行,因为组合电路输入变了输出会立刻变,就会导致执行改变,故只能一条一条的解析执行;

而在流水线设计中,每一步后面都加入了FF,形成时序电路,用来存储数据,从而实现边执行边解析的动作;由于加入了更多的寄存器,从而使得芯片面积增加,但处理速度大大提高,即用面积换速度;

换句话说,在进行静态时序分析时,CMB过程即为两个FF之间的延时,非流水线设计的CMB过程包含fetch&decode&excute三步过程,就要求其时钟周期T要更大,即频率更低;流水线设计每两个FF之间仅一步流程,CMB延时大大降低,时钟周期T降低,频率更高;

8.时钟树综合CTS(针对时序电路延时分析)

引入时钟树目的(在APR的Place完成后,确定了各个寄存器的位置,才可以做CTS):

①时钟控制了所有寄存器的同步,如果随意连线,那么会导致高扇出fanout(即表示带的负载的个数,越多扇出越大),为此可以加入多个缓冲器buffer,将时钟一分二,二分四,从而最后每个buffer所驱动寄存器个数将少很多,降低fanout,每种工艺库对buffer驱动的FF个数都是有限制的,不能太多,否则会出现DRC问题;

②同时,要尽可能将不同寄存器之间的时序偏差skew降到最低,满足时序约束

9.Cell延时(针对组合电路,即CBM部分延时)

对于Cell延时,每次需要计算两个部分(具体的数值是查工艺库的表格的):

Cell自身延时,这与输入信号的转换时间Tinput_transsition扇出个数Fanout均呈正相关;Tinput_transsition越大,那么Tcell显然越大;而Fanout个数越多,则可以理解为等效电容越大,延时越大;

输出信号转换时间Toutput_transsition,这与该cell的输入信号的转换时间Tinput_transsition及扇出个数Fanout均呈正相关;很显然,Tinput_transsition越大,那么Toutput_transsition肯定越大;计算输出信号转换时间的目的是为了确认下一级cell的输入信号转换时间,从而确定下一级的Cell延时;

在芯片中,若某路径的延迟很大,有很多原因,比如该路径cell过多,那就拆分为两条路径;若某个cell的延时很大,那么可能是给cell带的负载太多了,降低fanout;

10.PVT特性

cell延时同时还和制备工艺及工作环境相关;

常见工艺角命名含义:SS:slow; TT:Typical; FF:Fast; 0p765v/0p85v/0p9v:0.765/0.85/0.9v; 0C/25C:0/25℃;

11.Wire连线延时

在后端中,遇到线路延时大的,一般都通过插入Buffer来解决!这其中单位长度寄生电容/电阻的值由工艺库决定

从前面的建立时间时序图看,setup的修复有两种思路:①T&Tck不变,减小Tcmb,Tx1增大;②把超前的时钟信号拉回来;上述的增加流水线和采用驱动能力大的cell都是思路1降低Tcmb的方法;在capture clock路径增加delay cell用的是把超前的时钟信号拉回来的思路,如CK2超前CK1,那就在CK2路径上加一点delay cell;

hold的修复因为与时钟周期无关,故比较简单,增大Tcmb即可,如加delay cell,一般都是等CTS之后;

这属于前端内容,门控时钟(Clock Gating)主要用来进行低功耗设计,因为时钟信号一直是跳变的,当信号不变时,此时的时钟跳变就没有意义,浪费功耗;故设计成只有信号变化时才出现时钟;

当将时钟与en信号直接相与时,会使时钟信号出现毛刺,影响电路功能;一般采用Latch Based方案;

异步时钟信号没有固定的相位关系,无法通过建立保持关系来消除亚稳态,不是后端的活,只能通过前端代码来解决;

两个前端用到的工具;

在前述修复setup的方案中,有一条就是使用驱动能力大的cell(增大cell面积,利用面积换速度),此处LVT思路是一样的,都是降低cell自身的延时,但LVT会影响电路功耗和稳定性;

RVT又称SVT(Standard);

Multi-Vth:多阈值电压设计,如上述LVT,RVT,HVT;

Multi-Vdd:多电压设计,高电压域就给高电压,低电压域就给低电压;

DVFS:动态调控电压与功耗,高功耗时就给高电压,低功耗时就给低电压;

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值