今天想来聊一聊STA相关的内容。GBA和PBA是在做STA分析的时候的两种分析模式,在PrimeTime里是这么命名的,在Quantus(cadence家的STA工具)里面好像是别的名字,但实质内容是一样的。我就简单梳理一下这两种模式到底是什么。
GBA全称为graph based analysis,是工具默认的分析方式。它是说工具在从lib中读取cell的delay的时候,永远是读取由最差transition产生的delay。Transition又可以叫slew,是指信号跳变所需的时间,rise transition一般会定电压从10%到90%的时间,fall transition一般是90%到10%的时间。最差transition是什么意思呢?实际上电路在工作的过程中,一个cell收到的input transition是由前一级cell影响的,如果前一级cell的输入有多个,不同pin的输入所带来的output transition会有所不同。举一个简单的例子,一个二输入与门后面接了一级buffer,与门的input有A,B,输出Z,假设原来AB都是1,Z是1,当A从1变成0,B不变的时候,Z的transition假设是10ps,而当B从1变成0,A不变的时候,Z的transition可能不是10ps,可能是5ps。而读取后一级buffer lib的时候,是需要查input transition & output load那个二维表的,10ps和5ps所带来的delay是不一样的。这样工具就会疑惑,我在算这个buffer的delay时,到底用前一级带来的哪个transition呢?而我们的GBA模式,就是总是用最差的transition,10ps。假设某条timing path是经过B pin的,尽管对这条path来说,后一级buffer实际上应该用B所带来的5ps的transition,GBA模式下还是会用10ps。可想而知,这样的分析模式速度会比较快,它可以在timing分析之初就把所有cell的delay都算好,哪条path经过什么cell直接拿现成的结果就行了。但是GBA的结果较为悲观,可能有些path产生了violation,但实际芯片工作时这条path上的transition不可能是另外那个更大的值的。这样的悲观我们是需要剔除掉的,因此引入了PBA的概念。
了解了GBA,PBA也就很好理解了。PBA是path based analysis,指的是我要分析哪条timing path,就用这条timing path的transition来查cell的delay。对应上面的例子,如果用PBA模式就会用B的5ps来算buffer的delay值了。这种算法时间复杂度大大提高,但结果更为精确。
GBA和PBA都有其存在的意义。我们在做STA分析的时候,首先都要快速做一遍GBA,如果没有任何violation,那做PBA肯定也会没有violation,timing可以确保clean。而如果有violation,我们会再诉诸于PBA,但是也不必再分析所有的timing path了,只需要分析那些GBA模式下产生violation的path即可。如果这些path在PBA模式下都pass,那我们同样可以确保芯片timing clean;如果这些path在PBA模式下还遗留几条有violation,那么这几条就是我们真正需要去修的。这其中蕴含了一种很朴素的思想:首先用比实际更苛刻的标准快速筛选数据,再用实际的标准来筛选上一轮的数据,这样可以大大提高筛选效率。
在primetime中pba模式还有path与exhaustive的区别。Path是指重新计算指定的最差path,exhaustive是要重新计算所有产生violation的path。这就不展开讲了,因为我觉得path没什么用,一般项目都会用exhaustive模式。
这是我的第21篇文章。微信公众号:伟酱的芯片后端之路
|