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

article/2025/8/30 11:32:45

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


http://chatgpt.dhexx.cn/article/9cSDgDOp.shtml

相关文章

openstack 【T版】(四)——部署placement

openstack 【T版】(四)——部署placement 一、Placement概念二、OpenStack-Placement组件部署1.创建数据库实例和数据库用户2.创建placement用户、授权、创建placement服务3.注册API端口到placement的service中;注册的信息会写入到mysql中4.安…

牛血清白蛋白标记微囊藻毒素(MCLR)(BSA-MCLR)

本制品以牛血清白蛋白BSA-微囊藻毒素MCLR经化学交联获得的偶联物。 微囊藻毒素(Microcystin,MC)是一类具有生物活性的环状七肽化合物 MC具有水溶性和耐热性,加热煮沸都不能将毒素破坏;自来水处理工艺的混凝沉淀、过滤、加氯、氧化、活性炭吸…

you-get使用二三谈 (亲测感想 )

1.you-get是什么 you-get是Github上的一个项目,源项目托管地址对其介绍如下:You-Get is a tiny command-line utility to download media contents (videos, audios, images) from the Web, in case there is no other handy way to do it. You-Get是一…

预训练语言模型论文分类整理

© 作者|王晓磊 机构|中国人民大学高瓴人工智能学院博士生 导师|赵鑫教授 研究方向 | 对话系统 1. 引言 近年来,以 BERT 和 GPT 系列为代表的大规模预训练语言模型(Pre-trained Language Model, PLM&#…

Antigen for exchange 部署+评测

antigen系列是Forefront系列的早期版本,基本上除了换了个名字意外别的界面都没有换,微软的windows让我们家喻户晓,可是微软做杀毒软件却远不及诺顿等杀软大牌厂商,当微软推出Forefront的时候,又一次的给人以惊喜&#…

Windows10内置Linux子系统初体验

转载自: http://www.jianshu.com/p/bc38ed12da1d WSL 前言 前段时间,机子上的win10又偷偷摸摸升级到了一周年正式版,比较无奈。不过之前听闻这个版本已经支持内置的linux子系统,于是就怀着好奇心试玩了一把。虽然期间遇到了很多问…

《预训练周刊》第29期:Swin Transformer V2:扩大容量和分辨率、SimMIM:用于遮蔽图像建模的简单框架...

No.29 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了10篇预训练相关的论文,涉及图像处理、图像屏蔽编码、推荐系统、语言模型解释、多模态表征、多语言建模、推理优化、细胞抗原预测、蛋白结构理解和化学反应的探索。此…

《预训练周刊》第51期:无重构预训练、零样本自动微调、一键调用OPT

No.51 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,《预训练周刊》已经开启“订阅功能”,以后我们会向您自动推送最新版的《预训练周刊》。订阅方法: 方式1:扫描下面二维码,进入《预…

Antigen for LCS2005

Antigen For LCS2005<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /> Antigen for LCS2005是一款应用于即时通信内的杀毒&#xff0c;防毒软件。 试验拓扑图如下&#xff1a; Berlin是域LCS的域控制器也是DNS服务器&#xff0c;…

forefront for antigen

forefront for antigen antigen软件是保护企业Exchange 2003和Exchange 2000的。可以有效的防止病毒通过邮件的传输来危害计算机&#xff0c;而且antigen软件集合了八家杀毒公司的引擎&#xff0c;是让人心动的一面&#xff0c;如果能把杀毒的工作做好&#xff0c;那是很有潜力…

详解Microsoft Antigen for exchange9.0部署与测试

今天为大家介绍的是Microsoft Forefront系列的早期版本Antiget&#xff0c;Antigen for exchange9.0集成了九款杀毒引擎。微软的windows已经让我们家喻户晓了&#xff0c;当微软推出Forefront的时候&#xff0c;又一次的给人以惊喜&#xff0c;最具有竞争力的就是微软用自己雄厚…

antigen for exchange 部署

今天部署antigen for exchange。这是基于exchange 的安全软件&#xff0c;有扫描邮件病毒的功能&#xff0c;等。搭建exchange 就不说了。 拓扑图如下&#xff0c; <?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /><?xml:namespace pre…

Microsoft Antigen for Exchange 9.0+Exchangesp2 简单搭建与测试

网络的安全性一直是大家所讨论的问题&#xff0c;有完全的安全吗&#xff1f;呵呵&#xff0c;大家都是明白人&#xff0c;明白人不用细说&#xff0c;没有绝对的安全&#xff0c;只有相对意义下的安全&#xff0c;在企业中无所谓一些常用的服务安全性了&#xff0c;对于安全的…

Microsoft Antigen for LCS2005详细部署、客户端测试

前面的博文中我说了下Microsoft Antigen for Exchange搭建&#xff0c;今天我们在来说说微软在Forefront配合LCS详细搭建&#xff0c;大家知道LCS(Live Communications Server)即时通讯产品&#xff0c;和我们用的Q&#xff0c;MSN&#xff0c;旺旺一样&#xff0c;而我们有的企…

详解部署antigen for exchange及配置来实现邮件的安全及优化

详解部署antigen for exchange及实现邮件的安全及优化 现在科学技术越来越发达&#xff0c;竞争越来越激烈&#xff0c;安全成为忧患&#xff0c;尤其是自己发的邮件及给自己的邮件怕被别的公司知道&#xff0c;或者是怕别人利用邮件给自己发一些病毒之类的东西今天我们利用ant…

Antigen Detector(新冠试剂盒检测)

转自AI Studio&#xff0c;原文链接&#xff1a;Antigen Detector&#xff08;新冠试剂盒检测&#xff09; - 飞桨AI Studio 1、检测效果展示 2、Antigener_Detector思路说明 Antigener Detector通过两种方法串行&#xff0c;来完成检测。从而提高阳性样本的召回率。 首先是…

antigen简介

在Linux下经常需要进行终端操作&#xff0c;一个好的shell解释器可以帮助我们极大提高工作效率。有些同学可能听说过zshell和oh-my-zsh&#xff0c;前者是一个shell程序&#xff0c;由于功能比较强大&#xff0c;所以叫做z shell&#xff0c;意为终极shell&#xff1b;而后者是…

详解lcs+antigen的部署与配置来实现即时通讯的安全

详解lcsantigen的部署与配置来实现即时通讯的安全 我在上一篇中介绍了antigenexchange的配置不知大家是否能在工作中用到&#xff0c;今天我来介绍一下lcsantigen的部署与配置。 LCS( Live Communications Server)即时通讯服务&#xff0c;类似于QQ、MSN之类的。 今天我们做的实…

使用antigen轻松打造赏心悦目的shell环境

一提到Shell环境&#xff0c;很多人可能想到的就是那种神秘的黑框界面&#xff0c;但是其实Shell环境也可以设置成非常酷的样子&#xff0c;并带有自动完成、自动补全、人性化提示等各种功能。可能也有同学还听说过ohmyzsh这类集成了各种Zsh插件的方便项目&#xff0c;今天介绍…

tf.invert_permutation

tf.invert_permutation(x, nameNone) tf.math.invert_permutation(x, nameNone) TensorFlow目录总结 入参 / 出参含义取值范围xA Tensor. Must be one of the following types: int32, int64. 1-D.其中取值【i】的范围&#xff1a;y[x[i]] i for i in [0, 1, …, len(x) - …