在所有的后端工具里边,有三个重要的引擎:auto-place,CTS,auto-route三个。这里边的auto-place是决断了整个设计时序的基点。由于,auto-place的动作是在设计的preCTS阶段,所以这里的设计时序就是广义上说的:数据路径(datapath)时序(timing )。当然,就算是到了CTS/route阶段后,也可以继续利用auto-place数据优化的功能,在数据库上做数据路径增量优化(optDesign -increment)。可以说,数据路径的优化手段,实际上是贯穿在整个后端流程上的。
这里结合过往的经验,以及invs特有的先进策略,一起来看看,数据路径优化里边的重要知识点:路径分组(path group)。看看这其中的奥妙和有趣的事情。ICer GO!
众所周知,无论是综合工具(DC、genus或者precision等)抑或是APR工具(icc、icc2或者invs等),数据路径优化(data path optimization)一直是影响时序质量的重要因素。由于综合使用了ideal clock,可以说,data path的优化就是综合阶段的主要工作,这个和后续的APR工具的第一个主动作:auto-place,形成了前后连贯,相辅相成。尽管这两个引擎和所处工具的位置不同,但是目标是高度一致:优化数据路径的时序。这也是最近两年聚合型R2G工具大行其道的一个重要原因。
- S家的Fusion Compiler: DCG + ICC2
- C家的iSpatial: genus + innovus
无论什么工具,数据路径优化(data path optimization)一直是基于路径分组(path group)进行的,想要提高数据路径优化就需要了解路径分组(path group)的理论。
经典路径分组(path group)理论
在经典的数据路径优化理论(主要是基于S家,因为DC是综合界的长期主导),对于数据路径优化,DC采用了基于**时钟域(clock domain)**的方式进行处理:每一个时钟域都会被工具判定为一个路径分组(path group)。
路径分组(path group)的基础知识
PS:虽然最新的DC也提供了基于违例(violation)和设计层次(hierarchy)的自动路径分组(path group)创建命令;create_auto_path_groups
,但是这个命令只是一个补充性的,并没有动摇S家传统的路径分组方式。
S家的这种分组方式对用户是很友好的,基本就是将SDC的create_clock
和create_generate_clock
命令直接翻译成了group_path
命令,映射关系见下表:
SDC命令 | 类group_path命令 | comment |
---|---|---|
create_clock PCLK1 |
group_path -to $FF_under_PCLK1 |
主clock |
create_generte_clock -name gen_clk1_pclk1 -master PCLK1 -add -pin ...... |
group_path -to $FF_under_gen_clk1_pclk1 |
分频clock |