想要彻底掌握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

想要彻底掌握placement各种技巧,这个一定可以如你所愿相关推荐

  1. 想要学好C++有哪些技巧?

    学C++能干什么?  往细了说,后端.客户端.游戏引擎开发以及人工智能领域都需要它. 往大了说,构成一个工程师核心能力的东西,都在C++里. 跟面向对象型的语言相比,C++是一门非常考验技术想象力的编 ...

  2. 不想露脸的6个拍照技巧,给人无限想象,速速收藏

    我们在拍照的时候,很多朋友都会遇到不想露脸的情况,可是,风景那么美,不拍两张照片纪念一下真的很可惜.下面,就跟大家分享一些不用露脸也能拍出好照片的姿势. 1:拍背影 不想露脸最简单的方法就是拍几张可爱 ...

  3. CAD想要快速绘图的基本技巧

    想要用CAD快速绘图,以下的这些基本技巧一定要掌握好.下面我将为大家讲解一下都有哪些基础技巧. 一.熟悉对CAD中基本操作命令/快捷图标的使用 这一点大多数人都知道,古人云:熟能生巧.基本命令与快捷图 ...

  4. 在网上搜索想要的答案的好技巧

    网上搜索,已成为现代人必不可少的技能,有的人搜东西,几分钟就找到了,有的人却要花几十分钟.所以,提高"搜商"很重要.下面提一个搜科技知识的小技巧: 先明确自己要搜索的是什么东西,如 ...

  5. 首席新媒体黎想教程:视频运营的技巧与方法

    随着短视频的崛起,短视频营销已经成为了继图文.直播之后的第三大主流营销方式,越来越多的商家都意识到做视频营销的重要性. 如今,"短视频+"的互联网新生态已经越来越火了,到目前为止它 ...

  6. 的标题形状工具在哪里_一分钟教你做一款让人眼前一亮的标题!你想学吗?「Word技巧」...

    在日常编辑文档的时候,通常都会在文档页眉处添加标题,相信添加标题都难不倒小伙伴,今天我们来学习制作不一样的标题:侧边标题. 侧边标题效果图 平时添加标题是直接在页眉处添加,这侧边页码怎么制作呢?其实, ...

  7. 年后想做包工头的,这些技巧你们知道吗?

    现在很多人应该已经回家过年了吧,虽然回家团圆是大家期待了一年的,但是几家欢喜几家愁,赚到钱人的回家是充满阳光,光宗耀祖,没赚到钱的人回家是垂头丧气,无语凝噎. 这年头钱不好挣,但花销不小,过完年孩子的 ...

  8. 首席新媒体运营商学院创始人黎想:做好活动策划推广的技巧

    很多人都觉得这是一个很简单的工作,毕竟大学社团就开始策划,到了工作肯定也不难.但在实际工作中,很多人总是策划不出好的活动,主要的原因有这么几个: 1.拍脑袋的策划 拍脑袋策划,顾名思义就是依据自己感觉 ...

  9. 首席新媒体运营商学院创始人黎想:全新新媒体运营选题技巧

    做新媒体运营,两大难题跑不掉. 一个是标题.一个是选题.先有标题后有点击,选题方向更在前! 选题一定是每一个运营日常都要做的事,当然,大概率也是最头疼的一件事.有建立自己选题库的还好,不然就是从早到晚 ...

最新文章

  1. 软件测试人员用python_【答知友问】软件测试人员能用python做哪些事情?
  2. 2017 ACM/ICPC(西安)赛后总结
  3. IBM专家谈(一)能源效率是POWER7的另一个优势
  4. django restful 请求_利用 Django REST framework 构建 RESTful Web API
  5. c++ 人脸识别_应用层下的人脸识别(四):人脸研判
  6. java资源文件获取属性_Java读写资源文件类Properties
  7. 4023-基于双向链表的双向冒泡排序法
  8. 【ElasticSearch】Es 启动流程 初始化流程 源码分析
  9. 机器学习入门笔记(四):朴素贝叶斯分类
  10. 云计算网络基础第一天
  11. GPS/BDS:AGPS定位基本机制
  12. Binary Tree Paths(leetcode 257)
  13. python绘制国际象棋规则口诀_学好国际象棋必须知道的小口诀技巧
  14. php 打印出心形,利用php输出不同的心形图案_PHP
  15. ionic start myApp 报错
  16. 唧唧DOWN闪退的原因
  17. vue获取浏览器的指纹码
  18. Windows安装程序遇到错误:0x80240037
  19. 服务器 u盘制作系统盘,制作U盘系统盘(WinToFlash)
  20. PHP求日期函数公式,PHP中日期和时间函数简介

热门文章

  1. 推荐5款edge浏览器插件
  2. 网易乐商北京(电面一)
  3. 在 vue 中使用 SVG 建立图标系统并且使用
  4. Linux虚拟地址和物理地址的映射
  5. matlab 向量_COMSOL与MATLAB联合仿真+RBF神经网络预测输出
  6. 什么是供应链管理及其重要性?
  7. Gem5模拟器,详解官网教程Debugging gem5(四)
  8. 服务器显示ipv4有两个ip地址,ipconfig命令后为什么出现两个IPV4地址?
  9. 三星android pie更新,三星Android Pie更新路线图公布 Galaxy Note9需等明年二月
  10. 多目标跟踪评价指标总结——MOTA、IDF1、HOTA等