论综合 | 是什么让一个数字前端实现硅农开始学习Floorplan 的?

2019-12-19 17:06:45 浏览数 (1)

如题,是什么让一个数字前端实现硅农开始学习Floorplan 的?是制造工艺的进步,是实现方法学的被迫更新,是养家糊口生的本能,正可谓:头发落完终不悔,为伊消得人胖颓,一言难尽!

言归正传,照例温故续新:《论综合:为什么做physical aware synthesis》《论综合:如何做physical aware synthesis》讨论了为什么需要做physical aware 综合及如何做,论及了physical aware 综合的桥梁的灵魂的基点是DEF 文件,有了DEF 才有了一切存在的可能。然而在去年之前,DEF 大都依赖于后端同学给出,在DEF ready 之前,前端同学只能用30% 或更多的过约自嗨。五年前老驴就时不时地哭着喊着要去学后端,有时候是为了接近某些优秀的姐姐妹妹,有时候是为了去怼胖秃的哥哥弟弟,但一直并没有执行。

从去年开始,就时不时听到关于Genus ispatial flow 的消息,直到前不久其与众硅农相见,老驴也算最早接触到这货的一农,各种尝试都显示出该flow 在PPA, Congestion, Correlation 上的优势,但是要用该flow 就必须要有DEF, 要将该flow 发挥到极致就要对Floorplan 跟placement 有深入理解,在现实的『逼迫』下,老驴终于开始学习后端知识了。

在驴号幼年时期,老驴曾做了系列P&R 问答,请教了业内30多位资深优秀老硅农,拿到了20多份精彩回答,总结发表了十四篇,这30多位资深优秀老硅农一致认为Floorplan 是后端的精神跟精髓跟灵魂所在,是性能、面积、功耗、拥塞跟是否可收敛的基础。

老驴一贯愚笨,没有特别有效的学习方法,整个过程可以总结为两个字:查干!

  • 查:广泛搜集相关资料,从基础起,然后大致过一下留个印象,有问题时可以大致明确去哪里翻看;
  • 干:从熟悉的工具入手,工具没什么高深莫测的东西,跟用扳手用铁锹没什么区别,熟能生巧。

《论综合 | DEF 解析》论述了综合所需要的DEF 应该包含哪些信息,基于此结合下图,可以生成一个简单可用的Floorplan 并完成ispatial flow 综合。该flow 关键的一步是Floorplan predict, 在Genus 中加上相应变量后,可以用如下两种方式完成Floorplan predict:

  • 如将generic_enable_predict_floorplan 设为1 , syn_gen -physial 如果检测到当且无可用DEF, 自己会调用predict_floorplan 来做一个floorplan.
  • 显示用命令predict_floorplan 来做floorplan.

工具默认做出的Floorplan 是个正方形,macro 也不做leagal, 可通过attribute predict_floorplan_script 或predict_floorplan -script 来指定一个Floorplan 约束文件,约束floorplan 的形状、density, macro 的位置、pin 的位置,特殊cell 的位置, 该组约束命令就是Innovus 做floorplan 的命令,predict_floorplan 其实就是Genus 自己调用Innovus 去完成Floorplan 的动作,有了这个接口,用户可以根据自己对Innovus 的熟悉程度,更详细的去加相应的约束,使得Floorplan 更接近真实情况。更进一步可以结合Innovus 的mix placement 去做一个更完备的Floorplan.

初学Floorplan 会遇到很多新名词,如:Row, SITE, Guide, Fence, Region, Blockage 等等,这篇水文算该topic 的开篇,大概解释一下各名词。其中,老驴困惑过Halo 跟Blockage, 请教后端同学,得到的答复是:可以理解为Halo 是跟hard macro 绑定到一起的,hard macro 移动Halo 随着移动,在功能上相当于Hard blockage 即不允许任何cell 摆放进来。

FLoorplan 相关:

  • Floorplan - the process of deriving the die size, allocating space for soft blocks, planning power, and macro placement.
  • SITE - A site is the minimum unit of placement. It represents a slot where a cell can be placed.
  • ROW - Rows are multiples of sites and define locations where the placement tool places cells.
  • Blockage - Placement blockages prevent the placer from placing standard cells in a specified area.
  • Halo - A placement halo prevents the placement of blocks and standard cells within the specified halo distance from the edges of a hard macro, black box, or committed partition in order to reduce congestion. A block halo value is specified based on the current block orientation.

Placement constraint:

  • None - The module is not pre-placed in the core design area. The contents of the module are placed without any constraints.
  • Guide - The module is preplaced in the core design area. A module guide represents the logical module structure of the netlist. The purpose of a module guide is to guide placement to place the cells of the module in the vicinity of the guide's location. The preplaced guide is a soft constraint. After the design is imported, but before floorplanning, you can locate module guides on the left side of the core area, which appear as pink objects (by default) in the Floorplan view.
  • Fence - The module is a hard constraint in the core design area. After specifying a hierarchical instance as a partition, the constraint type status of a module guide is automatically changed to a fence. Instances belonging to a module of type fence must be placed inside the fence boundary.
  • Region - This constraint is the same as a fence constraint except that instances from other modules can be placed within its physical outline by placement.
  • Soft Guide - This constraint is similar to a guide constraint except there are no fixed locations. This provides stronger grouping for the instances under the same soft guide. The soft guide constraint is not as restrictive as a fence or a region constraint, so some instances might be placed further away if they have connections to other modules.

Placement blockage types:

  • Hard - The area cannot be used to place blocks or cells. This is the default.
  • Partial - Sets a percentage for the maximum cell utilization in this area. Use the Blockage Percentage pull-down menu to select a percentage.
  • Soft - The area cannot be used to place blocks or cells during standard cell Yplacement, but can be used during in-place optimization, clock tree synthesis, ECO placement or placement legalization (refinePlace).
  • Macro-Only - Enables planDesign to keep macros out of the placement blockage; however, it enables standard cells to be placed inside the box if no blockage is present.

0 人点赞