place_opt_design

本文介绍了place_opt_design的功能和选项。其功能是执行pre - CTS flow,集成placement和optimization以实现更快运行时间和更好PPA。选项包括-expanded_views、-incremental、-incremental_timing等,分别用于打印时序信息、增量模式改善placement、执行增量DRV修复和timing优化等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.place_opt_design的功能描述

执行pre-CTS flow即placement和pre-CTS optomization,该命令集成了placement和optimization实现更快的运行时间和更好的PPA。

2.place_opt_design的option的描述

-expanded_views

在命令的结束打印每个active view的时序信息,如果不存在导入已存在的时序信息

-incremental

指定该命令在incremental mode下,place_opt_design基于关键路径和congestion以增量模式改善现有的placement,该命令在新的placement完成后会更新netlist,在incremental模式下 的place_opt_design会修复DRV、WNS、TNS优化但不会进行扫描连重组(scan-reorder)。early clock flow mode 在place_opt_design -incremental命令下重用已存在的early clock flow clock tree不做任何逻辑和物理修改,只使用virtual delay对useful skew做调整。还要注意,时钟树spec必须在初始和incremental的place_opt_design 步骤中删除,就像在place_opt_design 和ccopt_design中间不能被删除,不然useful skew会丢失。

-incremental_timing

 该icremental_timing mode的下,place_opt_design会执行incremental DRV 修复和 timing 优化

-out_dir

指定timing/drv 报告的存放位置。

-prefix

报告的前缀

-timing_debug_report

产生machine-readle机器可读的报告,可指定报告path数量默认50条。

Genus Ispatial flow 自2019 年推出以来,广受客户青睐,AE 们接客接到腰酸腿软颈椎弯。Ispatial flow 除了跟Innovus 更好的correlation 之外还有两大特点,其一是CRR: Critical region restructure, 也就是逻辑重构;其二就是Early clock flow, 为了知其然老驴研读了几天Early clock flow, 今天以一篇appNote 为参考,做个学习小结。 WeChat Image_20210208100114.png Early Clock Flow 是个啥? Early Clock flow 是前几年Innovus 中的一项技术革新,其呈现是在Placement 的时候做clock tree; 其思路同样是『早发现早治疗』;其做法是在place\_opt\_design 时调用CCOpt 的fast clock tree clustering 来build clock tree; 其好处大致有二:其一是可以及早看到CTS cell 对congestion 的影响, 其二是可以及早精确看到ICG 相关的timing. Early Clock flow 自面世以来已经过上千个设计的检验,虽然Early Clock flow 跟设计强相关,但是对大部分设计都大有裨益,尤其是时钟简单的高性能核。此外Early Clock flow 跟CCOpt 的useful skew 相结合可以进一步改善PPA. WeChat Image_20210208100121.jpg Early Clock Flow 怎么用? WeChat Image_20210208100126.png 因为Early Clock Flow 是在place\_opt\_design 中调用fast CCOpt CTS clustering, 所以必须在place\_opt\_design 之前将CTS 的设置设上,如: WeChat Image_20210208100130.jpg 然后在place\_opt\_design 中将Early Clock Enable: WeChat Image_20210208100134.jpg 在Innovus 里做CTS 需要clock tree spec, 可以读入一个已有的spec 或用命令create\_ccopt\_clock\_tree\_spec 创建一个spec. 如果没有读入也没有创建spec, Innovus 在place\_opt\_design 的时候会自己创建一个spec 并且在place\_opt\_design 结束时将其删除。在log 中可以找到如下信息: WeChat Image_20210208100143.jpg WeChat Image_20210208100144.png 如果db 中已有了spec 则会在log 中找到如下信息: WeChat Image_20210208100151.png place\_opt\_design 创建了CTS spec 之后,先会做一次global placement, 然后build clock tree. 在log 中找DAG (Directed Acyclic Graph) 可得到: Number and type of buffers and inverters used for the clock tree Clock tree wire lengths for top trunk and leaf nets clock net violations skew group summary together with its minimal, maximal insertion delay, skew, skew targets WeChat Image_20210208100155.jpg Clock Tree build 好之后,工具会在如下步骤间多次迭代: incremental placement timing optimization useful skewing congestion repair power optimization 在log 中会看到如下信息: WeChat Image_20210208101519.jpg Early Clock Flow 结果呈现 如果enable 了Early Clock Flow 在place\_opt\_design 的log 中会找到许多跟CCOpt 相关的信息,在place\_opt\_design 结束时会将useful skew advancing 和Delaying 的信息写到log 中,也可以用report\_ccopt\_pin\_insertion\_delays 报出相应信息。 WeChat Image_20210208100201.png 如果同时enable 了Early Clock Flow 和Useful Skew, place\_opt\_design 结束时会生成一张如下的summary table: WeChat Image_20210208100207.jpg 同样可以在log 中找到insertion Delay 的信息: WeChat Image_20210208102243.png 如果enable了 Early Clock Flow, place\_opt\_design 之后report timing 展开clock path 会看到在clock path 上已经有了真正的clock tree cell. 但是由于clock network 是ideal 的所以在timing report 中看到的clock cell delay 都是0. insertion delay 会用命令set\_clock\_latency 以latency 的形式写到下面文件中: \<DB>/mmmc/views/\<view>/latency.sdc 如果enable 了Early Clock Flow, 在ccopt\_design 之前不要做reset\_cts\_config 或reset\_ccopt\_config, 否则前面的insertion delay 值会被删掉。Innovus 读入latency.sdc 后,会将set\_clock\_latency 转化成命令set\_ccopt\_property insertion\_delay. 但是需要注意的是,在set\_clock\_latency 命令中,负值表示往前推clock, 正值表示往后推clock; set\_ccopt\_property insertion\_delay 正好相反,负值表示往后推clock,正值表示往前推clock, 其对应关系是: WeChat Image_20210208102426.jpg ccopt\_design 会将place\_opt\_design Early Clock Flow 中插入的clock tree cell 都删掉,并重新build tree. 如果在run ispatial flow 时enable 了Early clock flow, 在Innovus 中不论是netlist handoff 的full place\_opt\_design 还是db handoff 的incremental place\_opt\_design 都不会删掉前面build 的clock tree cell, 数据交互同样是用set\_clock\_latency. 举个栗子 这是一个简单的设计,这个设计没有congestion 问题,但是有ICG timing 的问题。 WeChat Image_20210208102442.jpg run1 without Early Clock Flow WeChat Image_20210208100223.jpg run2 with Early Clock flow WeChat Image_20210208100227.jpg place\_opt\_design 之后可以用clock tree debugger (CTD) 来显示clock tree 及insertion delay. WeChat Image_20210208100231.png WeChat Image_20210208100235.png 最后一点 在Ispatial flow 里除了Early Clock Flow 也有useful skew 的控制,useful Skew 在place\_opt\_design 中默认是开启的,可用如下变量控制: WeChat Image_20210208100201.png Early Clock Flow 跟useful skew 是相对独立的。
03-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值