APR,全称为auto placement & route。目前已经基本成为芯片后端设计的代名词了,因为在芯片后端设计中,可以说placement and route是至关重要的两步,并且在EDA tool如此发达的今天,靠人工一个个手摆cell,再去绕线是不现实的。因此使用工具可以说是现代芯片设计的必须的事情,所以我们经常说做芯片后端,有的时候就是指代做APR,或者说做芯片物理设计等等。当然需要明确的是,芯片后端所涵盖的内容不仅仅是APR,只是APR是其中一个重要的部分了。

可能在早期,我们还会说P&R,placement&route。但现在,几乎没有谁可以绕过auto,也就是利用tool。所以渐渐的大家的称呼也就变成APR了。那么,它的具体含义是什么呢?从名字就可以看出,中文就是摆放和绕线,实际上,APR大致可以分为4个步骤:布局floorplan、单元摆放placement、时钟树综合CTS(clock tree synthesis)、绕线route。下面我就进行一下简单的介绍。

Floorplan,布局规划。要知道,我们在进行任何项目的时候,都要首先对所要做的工作有一个大致的蓝图规划,比如建高楼需要先想这个楼要在哪建,建几层,建多高等等,芯片的规划也不例外。我们首先要确定芯片的面积,确定core和die的尺寸,io的位置,bump的位置,先把macro ip什么的摆好。Floorplan有的时候也可以说包含了powerplan,我们一般在这一步就要画好PG,确定芯片的电压域,保证PG和macro连接正常。Floorplan是至关重要的一步,它深刻影响了之后的芯片性能会是什么样子。这里介绍的比较简单,以后我可能会专门各个stage都来写一篇。

Placement,单元摆放。这一步我们特指标准单元的摆放,io单元和macro等都是在floorplan阶段摆放完成的。我们在导入netlist和各个cell的物理库文件后,不论是icc2还是innovus,初始状态这些cell全部是叠在一起的,都在一个位置。而placement最重要的任务,就是把这些cell摆好,不能有重叠,不能有legalization的问题,不能有FE DRC。这就很类似于一堆散乱的乐高积木,我们要把它一个个的在地上铺好。在place的时候,并不仅仅要求把cell铺开就行了,这个时候就要考虑cell之间的绕线了,尽量把联系比较紧密的cell放在相近的位置啊,但又不能放的过于密集导致density过高出现congestion的问题啦,power能不能供上电啦等等,需要考虑的因素有很多。而它的核心任务就是摆放这些标准单元。

CTS,时钟树综合。我们的芯片设计中包括组合逻辑和时序逻辑,时序逻辑器件包括flip-flop和latch。所有的时序逻辑器件都需要接时钟信号,时钟信号就像芯片的心脏一样,芯片的运转就在它的跳动中产生。因此,我们的net就可以分为一般的信号线signal net和时钟线clock net,时钟网络上的cell可以成为clock cell。显然,我们要对芯片的timing有约束要求,那么保证一个良好时钟是非常重要的,因此clock net的优先级要比signal net的优先级高,所以我们要在route之前先做CTS。而CTS也不单单指clock net的绕线,它要生成一个clock tree,就需要插入一些buffer、inverter,其最基本的目的,就是想要保证时钟信号到达每个时序逻辑器件的时间都相同,也就是clock skew要等于0。先不深入太多了,总之CTS就是来生成一个时钟网络并且把clock net绕好。

Route,绕线。特指signal net的绕线。这一步需要绕的线就多如牛毛,需要避开前面的PG和时钟线,不能有open、short,不能有drc,在能绕通的情况下要考虑timing、power等。要知道,有的时候可能是绕不通的,可能是从floorplan开始这里的绕线资源就很紧张,或者placement摆了太多cell在附近,这样就必须回到floorplan或者placement重新来过,这样就很费时间。要知道现在的电脑来跑一个芯片,每个stage可能要十几个小时,所以在每个stage跑完适时进行check是很有必要的。有的时候可以绕通,但是会产生很长的detour,这也是我们不愿看到的。现在的芯片越来越复杂,之前的教材可能写的绕线层有五六层,现在的芯片多的绕线可以达到十几层了。如何在这些纷繁复杂的十几层里找到千万根线想要绕的位置,实在是一件非常难的事,更别说要附带考虑那么多其他的优化因素了。而这一切都已经必须由EDA工具帮我们完成,借助现代计算机的强大性能,还有不断优化的算法,我们就可以得到相对比较好的route结果。其实我一直很佩服那些EDA工具,总是想知道他们具体的算法是什么,不过这就属于非常机密的东西了。

Route结束也不代表APR结束了,一般还会做插filler的动作,后面就是交给signoff了。好了,这样就非常非常简略讲了一下APR要做的事,可能文中出现了一些不懂得名词,还有一些概念,以后我也会写文章慢慢一个个讲的。希望对大家有所帮助。

微信公众号D:伟酱的芯片后端之路

芯片后端的APR指什么?相关推荐

  1. 给在校学生的科普文:数字芯片后端工程师的日常

    芯片后端设计,看似只是将网表中的晶体管摆放好.但并不是如同砖头砌墙那样简单粗暴.它是一门兼具形式美和工程实践需求的技术.形式美,直接来源于功能内容和需求,在后端设计的环节中,数以万计的标准单元如散乱的 ...

  2. 一文看懂芯片后端报告

    首先,笔者要强调,我不是做后端的,但是工作中经常遇到和做市场和芯片同事讨论PPA(Performance,Power,Area).这时,后端会拿出一个表格.下图是一个A53的后端实现结果,节点是TSM ...

  3. multipartfile 后端怎么接受_精华 | 前端必看,一文教你读懂芯片后端报告!

    来源:知乎 作者:重走此间路 首先,我要强调,我不是做后端的,但是工作中经常遇到和做市场和芯片同事讨论PPA.这时,后端会拿出这样一个表格: 上图是一个A53的后端实现结果,节点是TSMC16FFLL ...

  4. 芯片后端开发基础知识(一)

    目录 1 概要 2 术语和定义 3 网表和系统划分 4 布局布线 4.1 布图规划 4.2 电源规划 4.3 布局 4.4 布线 5 时钟树综合 参考文献 1 概要 1.物理设计包含哪些流程和阶段?每 ...

  5. 数字芯片后端设计——Memory Complier使用及库导入

    ARM公司MC软件使用 Memory Compiler用于生成数字芯片中片上存储SRAM的生成. 关于所生成SRAM的结构和参数概念,参考1即可.在这里只谈一下自己平时需要设置的参数.下图为软件界面, ...

  6. 芯片后端:flatten和hierarchical

    1.flatten 展平化的设计方法是一种自下而上的设计思路,这种设计方法会一下子导入所有芯片中所需要的元件,而每个元件都要经过充分的验证,确保各个元件的功能无误.而后将所有这些原件组合,构成整个芯片 ...

  7. 数字芯片后端设计——SRAM宏模块布局布线

    在40nm SMIC工艺下,根据手册总结单端SRAM的布局布线问题. ArtiGrid power structure options:以下图为例,memory的电源布线,无论是core核还是外围pe ...

  8. java前段与后端是什么意思_java前端后端分别是指什么?

    详细内容 在介绍java前端后端之前,大家需要简单了解什么是Java?下面我们就给大家详细介绍Java以及Java前端后端的概念,希望对需要的朋友有所帮助! Java是一门面向对象编程语言,不仅吸收了 ...

  9. 芯片后端开发基础知识(二)

    目录 1 静态时序分析(Static Timing Analysis) 2 波形的压摆(Slew) 3 信号偏斜(Skew) 4 时序路径(Clock Path) 5 时序弧(Timing Arc) ...

  10. 数字芯片后端 LVT, RVT, HVT 的区别

    最近接触到了不同DC库,码一下区别.         这几个都是CMOS集成电路的Vth阈值电压相关的基本概念.通常将传输特性曲线中输出电压随输入电压改变而急剧变化转折区的中点对应的输入电压称为阈值电 ...

最新文章

  1. Java-Web 编码和路径
  2. 大头贴计算机教程,推荐!自家电脑也能拍大头贴的秘密
  3. vue中webpack编译打包使用之Vue知识点归纳(十一)
  4. 支付宝小程序升级,一统阿里大生态!
  5. Java 已老,Kotlin 或将取而代之!
  6. (工作中)Apache常见配置
  7. 求1000以内的素数c语言程序设计,C语言程序设计报告 C 实验名称 计算并输出1000以内最大的10个素数以及它们的和.doc...
  8. 与原子操作相关的 volatile 和 sig_atmotic_t
  9. H264封装为FLV
  10. OpenLinux平台学习(参照Neoway N720/N75 系列产品)
  11. 工作被拥抱变化了该怎么办?
  12. R语言McSpatial_R语言天气可视化应用
  13. 5G工业网关下工业自动化设备远程监控系统
  14. java hotspot 默认垃圾回收器_怎么查看服务器默认的垃圾的收集器是哪个?生产环境上如何配置垃圾回收收集器?谈谈你对垃圾收集器的理解?...
  15. 大学生职业规划策划书
  16. 无需烦恼的设置,一劳永逸解决Win10输入法烦人的切换问题
  17. SpringBoot启动时报错
  18. 用 Python Turtle画图学习(紫色樱花树) 附源代码
  19. 掀开CC攻击的头盖骨
  20. 谷歌安装ElasticSearch-head插件

热门文章

  1. html5游戏 搭积木,搭积木游戏,搭积木游戏创意名字
  2. 中国农业大学计算机专业硕士研究生,中国农业大学计算机专业2020考研复试分数线...
  3. android前置录像,Android Camera2video使用前置摄像头(Android Camera2video use front camera)
  4. 数字信号和模拟信号区别
  5. Windows下定时运行程序
  6. html鼠标点击后变换样式,css鼠标样式(css鼠标点击切换样式)
  7. 洪水填充算法_计算机图形:洪水填充算法
  8. 简述信息都有哪些特征?
  9. Python list列表---学习总结
  10. C/C++ 16进制转IEEE754