这段时间懒惰了,故今天再补上一篇文章。应读者要求,讲讲时钟树。
时钟树没达到预期?是我哪里设置错了吗?怎么debug?
debug时钟树,方法千万种,一般我先看log。一上来先search "CTS STEP":
-----------------------------------------------------------
* CTS STEP: Design Initialization for Clock Synthesis
* CTS STEP: Existing Clock Tree Removal
* CTS STEP: Clock Tree Initialization
* CTS STEP: Clock Cell Relocation
* CTS STEP: Gate-By-Gate Clock Tree Synthesis
* CTS STEP: Latency Bottleneck Analysis
* CTS STEP: DRC Fixing Beyond Exceptions
* CTS STEP: Clock Net Global Routing
* CTS STEP: Pre-Optimization DRC Fixing
* CTS STEP: Skew Latency Optimization and Area Recovery
* CTS STEP: Post-Optimization DRC Fixing
* CTS STEP: Postlude
* CTS STEP: Summary report
-----------------------------------------------------------
以上是一个典型的build_clock的步骤(不做CCD)。看起来好多好复杂啊,其实不然。
让我们静下心来,一个一个来看。
* CTS STEP: Design Initialization for Clock Synthesis
这步是打印出user对时钟树的主要设置。
比如user选用的cts cell(buffer,inverter,icg等等)。很多时候发现时钟树里用了不该用的cell,那么可以先来这里看看是不是我们自己设置错了。
还会打印cts相关的app option,NDR rule等。这些信息很有价值,有时候看脚本会比较辛苦,不知道到底设上没有,那么log里告诉你的便是最真实的。
Information: 'wc' is identified as primary corner for initial clock tree building. (CTS-103)
还有这个CTS-103也很重要,当你用多个corner做