数字IC后端实现之Innovus中各种cell名字前缀物理含义
社区新一期T28 a7core 和T12nm A55数字IC后端实现训练营直播课开始预约报名啦!
今天给大家分享下Innovus中各种常见cell命名规则及其物理含义。知道这些信息后,后续我们在debug后端项目问题时就可以更高效地定位到具体问题。做为数字IC后端工程师,我们应该做到对时序路径timing path的每颗buffer,inverter的作用用途非常清楚!
数字IC后端培训教程之数字后端项目典型案例分析
Innovus中cell的命名规则主要有以下几种:
1)buf_dummy__
这类buffer是工具为了解决设计中的assign语句而加入的buffer。
2)FE_FEEDX_BUF
这个是使用addBufferForFeedthrough或insertPtnFeedthrough给FeedThough添加的buffer。FeedThrough buffer对应的net名字一般是FE_FEEDX_NET。
3)spr_gate
对于老一点的工艺,我们会在place阶段通过placeSpareModule来给设计添加后续postMask ECO要用的spare cell。加入进来的spare cell名字会带上spr_gate关键词。
一般spare cell添加完成后,我们会把这类cell fixed住,避免工具在后续流程对它们进行位置调整。
4)FE_ECOC
当我们使用ecoAddRepeater命令来修复长线或高fanout带来的transition violation时,工具默认插入的buffer或inverter名字就会带上ECOC这样的关键词。
如果想指定插入buffer或inverter名字,我们可以通过下面的命令来实现。
setEcoMode -prefixName
5)FE_OCPC
工具做optDesign时序优化阶段在时序关键路径上添加的instance名字前缀。
6)FE_OFC
这类前缀名字的buffer是工具为了修复timing drv而插入的。
如果一条timing path中出现了比较多的FE_OFC的buffer和inverter cell,即便这条timing path的Slack是正的,这条路径也是极度不合理的,我们都应该想办法做优化,否则设计的面积,功耗都会偏大!
下图所示为咱们社区训练营项目的一个典型案例。PT中检查到这条时序路径是WNS最差的,但逻辑关键路径就不应该出现在这个地方!
7)FE_PSBC
这类cell是工具在postRoute阶段做时序优化引入的buffer和inverter,这些cell对应的net名字会带上FE_PSBN,这里的N即Net的缩写。
出现这种情况一般是route阶段出现了routing detour。具体可以看看咱们这个案例innovus中展示的这条timing path。
8)FE_PHC
这类cell相信只要做过后端的人都知道这类cell就是工具插入的hold buffer。那为什么要关注这类cell呢?
以咱们社区T12nm A55项目为例,下图所示为postCTS后的高亮的PHC hold buffer图。通过高亮我们可以很清晰看到工具为了修hold violation到底插了多少hold buffer以及这些hold buffer都插在什么样的位置了。
数字IC后端教程之Innovus hold violation几大典型问题
很显然从这个高亮图我们就知道当前工具修hold violation的效果我们是不满意的,必须重新做优化!
一般hold buffer插入太多主要有以下几方面原因:
- data path太短
- clock skew太大
- clock tree长度太长
- hold的clock uncertainty ,ocv derating 等margin预留太大
- 异步时钟之间的路径当做同步处理了
- 采用分段长clock tree策略,但遗漏了部分clock tree
9)FE_USKC
这类cell只会出现在clock path上,而且只有当我们使用useful skew技术后!本质是工具在优化data path的同时会自动帮助我们调clock tree来进一步优化时序!
默认情况工具会根据时序的需求把它认为该调整的clock tree长度都调整一遍,而且调tree的范围不受限制,即有的sink点的tree长度可能会被拖长若干ns。
很显然这种操作对于我们的hold,clock tree功耗都是极度不利的。因为我们在PR flow中一定要限制useful skew可以使用的范围,一般尽量控制在100ps内!
10) antenna
我们知道innovus在route阶段是支持通过让工具插天线二极管antenna diode来自动修复antenna violation的。工具插入的这些antenna diode名字会带上antenna的关键词。
setNanoRouteMode -quiet -drouteFixAntenna true
setNanoRouteMode -quiet -routeInsertAntennaDiode true
setNanoRouteMode -quiet -routeAntennaCellName "ANTENNABWP16P90CPD"