自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Tcl脚本介绍(一)

有的时候,需要输出一个带空格的字段,就必须要使用””,如puts “Great Wall”,就不能写成puts Great Wall,否则tcl解释器会将Wall这个字符写到Great这个句柄当中。如2<5这个成立,那么得到的结果就是1,反之为0。应很多粉丝的要求,小编在此开一个介绍tcl脚本的系列专题,结合数字后端的核心eda工具innovus,给大家讲一讲tcl的门道。我们发现a前面多了个$,这个符号是变量置换符号,它会将变量a的值5给取出来,然后再执行5+2等于7,再将7赋值给b。

2024-11-01 16:27:06 19

原创 浅谈setup & hold timing到底是什么

由于延迟的存在,在CLK到达高电平时,TG1和TG4不会立刻关闭,需要经过2td(CLK到达C的时间)后,C’=0,C=1时,TG1和TG4才会完全关闭,TG2和TG3也会开启,如果在2td这段时间内出现数据变化,由于TG1还未完全关闭,这样变化的数据就会传输下去,从而导致我们输出的数据是错误的;从图6中可以看出,假如要让D信号正确传输下去,我们需要保证在C’处于高电平时,Q1’’不能处于X态(必须得到0或1),若不能满足此情况,则Q1’’的X态会在C变为高电平后,传输下去,从而导致输出结果处于亚稳态;

2024-10-22 09:26:23 1129

原创 Endcap作用及其摆放规则

而我们在布局布线时,为了减少面积的浪费,每两个相邻的row中的cell摆放方向都是沿着x轴进行折叠的。而此时, EndCap处于MX状态时,可以看到std cell 的Nwell处于 Endcap的上边。此处的-topEdge是指endcap处于R0时,std cell nwell处于endcap之上,应采用的endcap cell。那么,有的童鞋会问,为什么block附近摆放的endcap是完全相反的?因此,-right_edge便采用nwell在右侧的endcap,即CAPL类型的endcap。

2024-10-21 14:50:31 173

原创 D触发器构成及原理

当CLK=1的状态下,CLK1=0,CLK2=1,FF1处于锁存状态,所以无论D发生什么样的变化,Q1都保持原状不变;当CLK由1跳变为0时, CLK1=1,CLK2=0, FF1解除锁存状态,D值可以传递到Q1端,但是Q2已经处于锁存状态了,所以Q1值传递不到Q2处,Q端保持原来状态不变。当CLK=1时,CLK1=0,CLK2=1,FF1处于锁存状态,Q1保持原来状态不变;然而由于锁存器在EN=1下,Q=D,若D不稳定,产生毛刺的话,毛刺会被传输下去,因此使用D锁存器无法完全避免毛刺。

2024-10-15 13:51:21 269

原创 Library介绍(四)

timing主要包括cell的input pin到output pin的rise delay和fall delay。图2定义了buffer output pin的相关参数,即buffer Z端的功能和internal power相关信息。图1定义了buffer的一些基本属性、 leakage power值和input pin的相关信息。接下来,我们再看一下时序单元的timing arc是啥样的,以寄存器为例。图5定义了D pin的相关信息和CK到Q的hold timing arc。#小编是一个入行多年的。

2024-10-08 15:42:26 584

原创 Library介绍(三)

那么,便可以通过k库的方式,通过k factor,便可根据tt_1.2v_25c lib生成tt_1.1v_25c的lib。压摆值(slew)是基于库中指定的测量阈值点,通常是根据转换时间(transition time)来定义的,大多数上一代的库都使用10%和90%作为slew的测量阈值点。那么,如果将tt_1.1v_125c的库k到tt_1.2v_115c时,我们可以知道Δprocess= 0 ,kvolt = -0.042,ktemp = 0.0012。即上文所说的k库的参数(见图6)。

2024-09-30 09:03:33 1531

原创 Library介绍(二)

约束时序弧包括setup timing arc、hold timing arc、recovery timing arc、removal timing arc和width timing arc等。其中,combination timing arc主要分为以下三种类型,正单边(如buffer),负单边(如inverter)和非单边类型,见图1。正单边类型,即input信号由0跳转到1时,output信号也由0跳转至1的情况。负单边类型,即input信号由0跳转到1时,output信号由1跳转至0的情况。

2024-09-29 10:42:51 1308

原创 Library介绍(一)

如果选择match_footpring,那么工具根据需要,可以将相同footprint,且替换和被替换的cell具有相同数量和名字的输入和输出端口。通过set_operating_conditions –library 进行设置,表示该design使用了那一个library的参数进行timing、功耗等计算。像buffer的foot print为SCC_BUF(图4),那么工具将SCC_BUF一类的cell都当成同一类型的cell,可以进行swap操作。主要包含了库的版本、日期和注释。

2024-09-27 13:25:41 635

原创 Postmask eco flow – pr工具相关操作(innovus)

一般在进行postmask eco时,我们是不会动到base layer的,所以是不可以引入新的cell,只能使用预留的spare cell来修改电路,因此它进行修改范围比较局限,一般只会对逻辑进行修改,动到的cell较少;当然eco并不是万能的,不是前端想怎么改就怎么改的,毕竟地方就那么点,想大改功能,仿佛是天方夜谭,这个时候需要我们后端工程师与他们进行battle了,不过也得配合他们去不断改进eco方案(这个过程相当痛苦,小编刚经历过。e. 指定绕线层次,进行ecoRoute。

2024-09-26 13:13:43 1186

原创 跑lvs出现soft connect怎么处理?

如果有soft connect的话,lvs是没法pass的,会发现很多一堆std cell连接了错误的ground信号。那么这个时候,如果设计中涉及2个以上ground时,便可以往这个方向来debug。这里小编提供2种解决方法。第一种,按照图1所示,如果VSS和AVSS最终就是要接到一起的。为了过lvs,可以在VSS或者AVSS下方打上PSUB2,将这两个net的soft connect断开,如图2所示。如图1所示,VSS和AVSS都接到了p+上,它们通过psub便有了soft connect。

2024-09-24 13:58:14 1034

原创 viewict小工具使用

上图是ict文件对alpa这一层的描述,里面包含了min_space,min_width,height,thickness,方块电阻等信息。本文给大家介绍一个小工具,能够将ict文件图形化显示的方法。如上图,可以很直观地看到不同金属的厚度,如顶层的alpa_inter为厚金属,可以很明显地看出其厚度要远大于其他金属层的厚度。工程师,本身对编程方面比较感兴趣,在数字后端的脚本、flow上比较擅长,可以为大家提供答疑咨询服务。工具便可以根据ict里面的信息产生qrcTechfile。#小编是一个入行多年的。

2024-09-23 13:19:41 860

原创 Innovus跑到中途想要更换library怎么办?

其实,每次保存的innovus database里面都有专门存放这些数据的文件。有的小伙伴在跑innovus时,可能会碰到library更新等问题。但此时,place已经跑完了,又不想重新跑,怎么办呢?比如,我们要更新一下lib文件,那么可以到对应的dat文件下的viewDefinition.tcl,去更新一下相应文件。工程师,本身对编程方面比较感兴趣,在数字后端的脚本、flow上比较擅长,可以为大家提供答疑咨询服务。另外,像一些global的设置,都放在*.globals文件下。#小编是一个入行多年的。

2024-09-19 13:20:30 918

原创 综合时如何计算net delay?

那么,根据上述计算方法,假设一个buffer后面drive了5个cell,那么fanout就是5,根据查找表便可以计算得到net长度为3.5,电阻为3.5*2=7,电容为3.5*1=3.5,面积为0.02*3.5=0.07。有了上面的计算值,也便得到了net的RC。一般,互连线的连接结构有以下三种模型,为了方便理解,图中红色的线代表的net其含有RC,黑色的线的R&C为0。top:该模式下,所有hierarchy下的net都应采用top module下的wire load model,具体如图4所示。

2024-09-18 10:04:12 1642

原创 clock gate为什么不直接使用与门来搭建?

小编想说的是,方案是是可行的。enable1在latch高电平产生的glitch都会被过滤掉,而enable1在latch低电平产生的glitch虽然能经过latch到达enable2处,但是此时由于AND是高电平生效,所以enable2的glitch依然传达不到output clock中。因此,通过这个设计,就可以规避掉glitch的问题。另外,由于AND是在高电平生效的,如果此时enable信号有glitch,那么便会导致output clock也会产生glitch,而这是不被允许的,会导致电路失效。

2024-09-14 15:56:21 1086

原创 Clock Tree为什么要用inverter进行生长?

根据clock定义,我们可以获得clock的波形图如下,其为一个周期为10ns,上升沿分别在0ns、10ns,下降沿在5ns的一个clock。知道了脉宽的概念,那么为什么会有最小脉宽的问题呢?如果,我们采用特殊的clock buffer,foundry会特地将pmos做大一些,确保pmos导通速度和nmos一致,那么也可以做到clock信号经过ck buffer后脉宽不发生改变。我们知道,clock信号有最小脉宽的要求,当clock信号无法满足最小脉宽时,其便不能够准确地发出信号了。

2024-09-13 15:28:39 601

原创 为什么先进工艺需要check那么多corner?

那么hold slack = launch clock path delay + data path delay - capture_clock_path_delay = -capture_clock_path_delay,也就是说,capture clock path delay越大,hold越难满足。而且,我们在设计的时候,一般clock频率都会过约,所以是有较大的margin的。有的foundry还会对rc的取值范围进行了约束,如cworst_T,采用的是1.5 sigma的取值范围。

2024-09-12 15:26:29 841

原创 如何通过插值法计算cell delay?

插值法的公式:Z = A + B * X + C * Y + D * X * Y,其中X为input transition,Y为output load,A、B、C、D为四个参数,Z为delay值。从而得到Z=-0.086176 + 11.5493 * x + 0.65917 * y - 24.859 * x * y,当X=0.014930、Y=0.296311时,得到Z=0.1716ns。从而得到A = 0.08075,B = 3.47539,C = 0.04008,D = 0.01648。

2024-09-11 13:55:45 507

原创 有关Latch借timing问题讲解

但如果发生了time borrow情况时,如图2所示,假设reg1到latch的setup存在了1ns的time borrow情况,意味着latch到reg2的data信号便晚了1ns。对于setup来说,如果没有time borrow的情况时,其与DFF情况是一致的。可以看到,没有time borrow时,hold check不再是同沿check,这是因为latch是高电平触发,信号稳定传输要等到高电平时间结束后,为了确保信号能够正确传输,下一级信号传输一定要在高电平结束之后才能到达。

2024-09-10 14:48:20 738

原创 跑pt时出现net反标不上怎么办?

那有的时候,小伙伴也会碰到以上三种情况都没出现的情况下,依然会出现net反标不上的问题。但是,如果def上来看,由于出了2个相同的pin,那么net其实也被分成了2部分。如果一定要出2个相同的pin时,也要在模拟ip的lef时,将这两个pin的shape连接在一起(见图3)。在抽rc的时候,该net就没与rc值,那么在跑pt时就会导致net反标不上的问题。有的小伙伴可能比较粗心,网表和def拿的不是一个版本的,这就导致了网表和def的net数量不一致的情况,从而导致了pt反标率不是100%。

2024-09-09 16:09:20 1022

原创 Shrink工艺当中的“坑”你知道吗?

对于QRC工具,如果qrc.cmd文件中设置了scale factor,qrctechfile也包含了scale factor 0.9,那么运行QRC的时候,工具会报错。而在STARRC中,如果cmd file设置了scale factor 0.9,而nxtgrd也包含scale factor 0.9,那么starrc会将scale factor设置为0.9*0.9=0.81。#小编是一个入行多年的数字后端工程师,本身对编程方面比较感兴趣,在数字后端的脚本、flow上比较擅长,可以为大家提供答疑咨询服务。

2024-09-08 10:57:15 578

原创 浅谈芯片制造过程中的天线效应

本文主要介绍了芯片制造过程中的天线效应以及如何在芯片设计过程中规避这类问题。

2024-09-03 15:52:35 750

原创 综合后的sdc能够直接进行APR吗?

本文提供了解决数字APR所需要用到的sdc的处理方法。

2024-09-03 10:11:58 306

原创 Cell delay有的时候为什么是负值?

因此,在数字后端脚本、flow上比较擅长,大家如果有相关的问题,可以提供答疑咨询服务。假设一个信号,经过buffer以后,其信号delay值得计算方法如图1所示,其delay值由input信号上升沿50%处至output信号上升沿50%的delay值。那么,为了搞清楚这个问题,我们先看一下cell delay是如何定义的?在我们常规的理解中认为,一个信号经过一个标准单元后,必然会有一个delay。那么,假设如图2这种特殊的情况,即input信号上升沿特别大,便有可能出现cell delay。

2024-09-02 13:18:12 345

原创 为什么reg2cgate的setup难以满足?

从图上我们可以看出,clock gate的clock latency是delay1,reg1的clock latency是delay1+delay2,可以明显的看出,reg2cgate的setup,其launch clock path delay天生是要比capture clock path delay要多delay2的,因此其setup相对于reg2reg是不好满足的。因此,在数字后端脚本、flow上比较擅长,大家如果有相关的问题,可以提供答疑咨询服务。因此,能够让我们去处理的就是delay2的值。

2024-08-31 10:33:17 648

原创 为什么innovus跑出来的timing结果和pt有时会相差很大?

本文旨在讲解innovus的timing为什么和pt的timing相差很大。

2024-08-30 14:02:54 940

原创 网表里面是否需要带上tie cell?

另外,在没有tie cell的网表中,我们其实可以看到,某些cell的pin需要接tie high,在网表中是用1'b1标识,而需要接tie low的cell,在网表中是用1'b0去表示的。很多小伙伴在进行PR的时候,发现前端在综合的时候已经将tie cell加好了,到后端APR的时候发现,有些tie cell距离目标cell距离过远,或者被tie cell drive的cell过多。因此,我们在拿到网表以后,需要对网表进行相关检查,其中就是在网表中搜一下是否存在相关的tie cell。

2024-08-29 16:02:03 497

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除