想要彻底掌握placement各种技巧,这个一定可以如你所愿!
文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。
大家应该也都知道最近小编在忙项目,而且是相当的忙,到处救火。所以如果有问题未来得及回复的,望见谅。等忙好了一定加大火力,继续做更多的分享。
正因为是救火,项目中存在一堆烂七八糟的问题。而解决这些问题虽然需要消耗较多的时间,但能够增长更多的经验。数字后端实现本身没有太多技术含量,真心不难,更多的是经验的积累。数字后端工程师的价值在于碰到一个比较奇怪的难题时,你是否具备高效解决这种疑难杂症的能力。
吾爱 IC 社区之前推送过数字后端设计实现中 floorplan 的绝密经验。今天将做一个 placement 方面的经验分享。
【机密】从此没有难做的 floorplan(数字后端设计实现 floorplan 篇)
placement 之前的 check items
-
检查 placement blockage 是否正确添加,以及确认 blockage 的类型
-
整理 dont use list
-
设置好 dont_touch 的 cell
-
确保时钟 clock 已经被设置为 ideal network
-
FIX 住所有的 Macro 和预先想 place 好的 cell
-
检查 pin access
Pre-placement
- Spare cell 或者 Metal ECO cells 比如 ECOCAP CELL
Spare cell 和 ECO cell 各自的应用场景及其各自的优缺点希望大家能够非常清楚,留给各位思考
-
Magnet placement,比如 Isolation cell 以及 level-shifter cell 的 magnet placement
-
预先插 DECAP CELL
-
在模块级的接口 port 出插入 port buffer
Placement
这个阶段是将设计中的所有标准单元摆放到 core 区域中。整个 placement 过程可以基于以下几种因素来进行,不同的条件下 placement 的结果和质量,也是不一样的。placement 的好坏,直接决定了时钟树的质量和绕线,最终体现为影响芯片的性能。
- Timing Driven
Timing Driven 顾名思义就是指基于时序驱动进行的 placement。大部分的设计都是需要做 timing driven 的 placement 优化。
- Congestion Driven
Congestion Driven 是指基于 congestion 做优化的 placement。可能初学者会觉得 place 阶段还没绕线,如何做 congestion 优化呢?那是因为 place 过程 tool 会通过 global route 来估算 design 中的绕线情况,从而根据估算的 congestion 状况来进行 placement 的优化。
数字后端实现时 congestion 比较严重,你 hold 得住吗?
- Power Optimization
随着工艺节点越做越小,芯片的规模也越来越大。芯片的功耗问题显然更为重要。在 28nm 及其以下工艺,没有做功耗优化和做 low power 的芯片,绝对是不好意思拿出去流片的。即使流片了,估计也没人用。EDA tool 都支持 power 优化的 placement。
功耗优化的方法有很多。简单的有 place_opt 带上 power 选项来进行功耗的优 化。也有 CCD 结合 saif 来进行功耗的优化方法。这些都在小编之前在星球上推 送的 “基于 28nm 工艺 ARM Cortex-A35 的数字后端实现教程” 介绍过。
基于 Physical Aware 的动态功耗优化实现方案
Placement 详细步骤
- Initial placement (Coarse placement)
这个步骤就是通常我们所说的 Coarse placement。将标准单元粗略摆放好,此时不考虑 overlap 问题。
- Legalization
有了第一步的 coarse placement 后,这步需要将粗略摆放好的 cell,进行 legalization 操作,将所有的标准单元放置在 row 上,并且保证所有的 cell 处于 legal 的状态,即不存在 overlap 或者不在对应的 row 上。
- Removing existing buffer trees
这步是将 design 中已经存在的 buffer tree 移除。
- High Fan-out Net Synthesis (HFNS)
这个步骤需要将 design 中高扇出的点(时钟信号,reset 信号等除外),进行解 high fanout 操作,优化时序。所以用来做 placement 的 constraint,请务必将其中那些不必要的 ideal network 移除。
- Iterations of timing/power optimizations
这个过程主要有 cell sizing, moving, net spitting, gate cloning, buffer insertion 和 area recovery 这些小步骤组成。
- Scan-chain re-ordering
scan chain reordering 并不是每个 design 中都要做的,视不同的情况而定。这个过程主要是用来缓解绕线资源紧张问题。
Scan chain reordering 怎么用你知道吗?
- TIE cell insertions
将设计中的 1‘b0 和 1’b1,通过 Tie cell 连接起来。
Placement 目标
-
PPA 最优化
-
global congestion 和 local congestion 合理
-
避免高 pin density 区域和 hot spot 区域
-
Timing DRCs 满足要求
-
利用率最优化
一个好的 placement 结果,时钟树做起来是非常轻松的。反之一个 cell 分布不符合数据流向的 placement,时钟树质量会大大折扣,因为整个 tree 可能会被” 不明的妖怪 “拖长,从而影响 timing signoff 和项目进度。整个 tree 变长,意味着 clock tree 的级数更多,power 更大,同时受 OCV 效应影响就更深,timing 就变得更不可收敛。
Timing 优化技术
-
细分 group path
-
为 critical timing group 设置更高 weight 权重
-
将 timing driven 的 effort 设置 high
-
使用少量低阈值的 cell,比如 LVT,甚至 ULVT
-
调整 critical range
Congestion 优化技术
在整个数字后端实现过程中,congestion 一直是个大问题,大挑战。对于一个 design,想把 PPA 做到极致,往往是存在一定难度的,都是需要通过很多次的迭代实验出来的。而一个比较资深的数字后端工程师可能需要的迭代次数会比较少,而且每次的实验都能够做到心中有数。因此,有必要介绍下几种常用的解 congestion 的方法。
-
placement cell density 和 local congestion 的控制
-
Congestion driven placement (根据不同需求设置 medium 或者 high effort)
-
blockage 的利用
-
keepout margin 的利用
What if the design has different power domains?
现在的设计基本上都是要做 power domain 和 voltage domain 的。它的 placement flow 和普通的 placement flow 是类似的。之前在数字后端实现 floorplan 篇介绍过 Feed-Through 和 channeless 的概念。利用 Feed-Through 可以节省很多 channel,一方面节省了芯片的面积,另外一方面改善了绕线问题。
所以,现在很多大规模的芯片设计实现,我们经常要用到不同的模块之间使用 channeless 的技术。使用这项技术可能存在以下几方面的问题:
- 前端工程师集成
由于采用 channeless 后,前端集成时需要将那些有特殊要求的信号做特殊处理。比如 PD1 中的某部分接口出来的走线,需要穿过 PD2,再到 PD4,最后达到 top 的 core 区域。集成时就需要将那些特殊信号额外添加在 PD2 和 PD4 的模块中去。
- Feed-Through 信号的处理
实现时对于 feedthrough 信号中那些是时钟信号需要特别注意,需要定义好时钟,千万别漏长时钟树。同时对于时钟树质量要求比较高的时钟,还需要做 shielding 处理。
另外,还需要跨 VA 的信号处理。比如有一个信号从一个 AON 的 domain 到一个 可以 powerdown 的 domain,需要特别留意这样信号的处理。
如何 qualify placement
- 检查 cell 的 legalization
检查所有的 cell 是否均已摆放好,并且是 leagal 的。
- 检查 congestion, density 和 pin density map 的合理性
placement 做完,需要查看 place 后的 congestion map,cell density map 以及 pin density map。这样可以提前控制风险。如果 map 特别差,如果继续做时钟树综合和绕线,其实就是在浪费资源。
- Timing QOR
主要查看 placement 后 setup 的 WNS 和 TNS。这里当然还涉及到 ICC/ICC2 和 PT 之间的 correlation 问题。
教你轻松调 DCT 和 ICC 之间 Timing 与 Congestion 的一致性
- Timing DRC 检查
主要检查 max transition,max cap,max fanout 等 timing drc 是否存在违例
- 检查 dont touch 和 dont use list
检查设计中规定的 dont touch cell 是否被工具优化掉,以及检查工具在优化的 过程中是否引入 foundary 厂指定的 dont use cell
小编知识星球简介:
在这里,目前已经规划并正着手做的事情:
-
ICC/ICC2 lab 的编写
-
基于 ARM CPU 的后端实现流程(已经发布)
-
利用 ICC 中 CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布)
-
基于 ARM 四核 CPU 数字后端 Hierarchical Flow 实现教程(准备中)
-
时钟树结构分析(规划中)
-
低功耗设计实现(规划中)
-
定期在星球布置作业题(星球已经支持布置作业功能)
在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在 24 小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。
反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有四十三 **** 星球成员,感谢这四十三位童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。 (星球的门槛将会越来越高,有需求的朋友趁早上车)****
相关文章推荐
IC 自媒体访谈:吾爱 IC 社区
教你轻松玩转天线效应 (Process Antenna Effect)
深度揭秘异步复位同步释放原理
数字后端面试问答 No.19-21(每日三问)
这些低功耗设计实现经验,你真的懂了吗?
Lockup latch 的用法,看这个就够了!
深度解析 Create_clock 与 Create_generated_clock 的区别
盘点数字后端设计实现用到的各种文件
clock jitter 是否对 hold time 有影响?(文末有福利)
为什么时钟树上要用 clock inverter(min pulse width check)
LVS 就是这么简单!(数字后端物理验证篇)
揭秘为何 net delay 是负值(数字后端实现时序篇)
PBA(Path Base Analysis)想说爱你不容易(静态时序分析基础篇)
一网打尽时钟树综合 Clock Skew
数字后端设计实现之时钟树综合实践篇
【惊呆了!】你居然还在用 flatten 方式进行 timing signoff
数字后端面试问答 No.16-18
合理的时钟结构能够加速 Timing 收敛(时钟树综合中级篇)
数字后端面试问答 No.13-15(每日三问)
【机密】从此没有难做的 floorplan(数字后端设计实现 floorplan 篇)
数字后端面试问答 No.10-12(每日三问)
数字后端面试问题 No.7-9(每日三问)
听说 Latch 可以高效修 hold 违例(Timing borrowing 及其应用)
15 天零基础入门到精通 python - 最全的视频教程
数字后端面试问答 No.4-6(每日三问)
IR Drop 分析之 Redhawk 分析流程
CRPR 能补偿 crosstalk 吗?
原来电路最高工作频率是这么算出来的(STA 基础篇)
数字后端面试问答 No.1-3(每日三问)
秒杀数字后端实现中 clock gating 使能端 setup violation 问题
教你轻松调 DCT 和 ICC 之间 Timing 与 Congestion 的一致性
数字芯片设计实现中修复 setup 违例的方法汇总
数字 IC 设计中 ECO 的那些事,其实并不是事!
Scan chain reordering 怎么用你知道吗?
如何评价数字后端设计中 floorplan 的好坏?
数字后端实现时 congestion 比较严重,你 hold 得住吗?
数字后端实现 place 过程进阶
Final netlist release 前,你应该做好哪些工作?
基于 Physical Aware 的动态功耗优化实现方案
深入浅出讲透 set_multicycle_path,从此彻底掌握它
【大师必备】最全的数字 IC 设计经典书籍电子版下载
你与数字后端大神的差距在这里,快来瞧瞧!
数字后端实现时 congestion 比较严重,你 hold 得住吗?
时钟树综合(clock tree synthesis)基础篇
【福利】数字 IC 后端各种 Userguide 下载
好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏,你的转发和赞赏是我不断更新文章的动力。小编在此先谢过!与此同时,吾爱 IC 社区(52-ic.com)也正式上线了。吾爱 IC 社区(52-ic.com)是一个专业交流和分享数字 IC 设计与实现技术与经验的 IC 社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。
https://mp.weixin.qq.com/s/oZKZD74nhBueRWyENEVTjw