您好,我在芯片后端领域工作有十年时间,负责过多颗SoC芯片顶层的STA的工作。从这一篇文章开始,我会尝试着系统性地去介绍STA,力争让这个领域的新人能有一份“读这一本就够了”的原理性材料,也希望让更多有经验的人了解STA的底层的逻辑。
静态时序分析(Static Timing Analysis, 以下统一简称STA)是验证数字集成电路时序是否合格的一种方法,其中需要进行大量的数字计算,需要依靠工具进行,但是我们必须了解其中的原理。在综合工具(DC/Genus 等),布局布线工具(ICC2/Innovus 等),时序分析工具(PrimeTime/Tempus 等)中都嵌入了不同的STA引擎,这些引擎往往在时间和精度方面有一些折衷,但是目的就是以尽量小的误差去模拟物理器件和绕线的SPICE模型,从而更接近芯片生产出来后真实的性能。
为了更好地理解STA,有必要提一下时序仿真,它是另外一种验证数字集成电路时序是否合格的方法。下面用一张表来对比一下这两者之间的区别:
第一点是激励波形,STA是不需要的激励波形的,但是需要SDC(Synopsys Design Constraint,时序约束),后续的文章会具体介绍SDC的内容, 而时序仿真时严重依赖激励波形的;
第二点是完整度,STA能够对数字电路中所有的时序路径进行全面的检查,而时序仿真在覆盖率上有一定限制;
第三点是效率,STA的比较简单,速度更快,而生成仿真需要的激励,建立仿真环境可能费时费力;
第四点是鲁棒性,STA能够考虑到电路中串扰噪声以及OCV(On Chip Violation, 片上偏差)的影响,提高芯片制成后的良率,而时序仿真做不到这一点。
既然,STA在数字集成电路中如此不可或缺,那具体是由哪些人负责,又是做什么具体的工作呢?关于这个问题,在不同的公司各有不同,但是负责STA的人一般都会同时负责综合,生成SDC,标准单元工艺库的选择,时序签核(Timing Signoff)及相关标准的制定等等。他们需要对设计有一定了解,更加需要对工艺的时序特性有全面地掌握,在系统性能指标的定义时需要提供参考意见。作为芯片时序性能检查的最后的把关人,需要一定经验的积累,同时也需要敏锐发现并解决潜在新问题的能力。(有没有感觉像是招聘JD:)
当然,STA也有它的局限性,需要通过仿真进行交叉验证。下面简单列举几个方面:
STA针对的是数字电路,和模拟电路相关的路径无法通过STA验证
数字电路中产生的不定态在STA不会验证,这个需要通过仿真进行仔细检查确认
电路中不同状态机之间的同步需求不能通过STA来验证
对时钟生成电路的验证无法通过STA完成
时序约束中会有例外情况,需要人工处理
历史文章推荐:
相关文章,在仿真秀官网搜索:
为什么PrimeTime修timing时,带physical aware还不如不带physical aware
关于Virtual clock
为什么异步时钟不要设false path