布局(placement)是物理设计的一个非常重要的阶段,所有标准单元都放置在core boundary内。设计的整体 QoR 在很大程度上取决于布局的好坏。
布局是将标准单元放置在core boundary内的最佳位置的过程。该工具试图以这样一种方式放置标准单元,即设计应具有最小的拥塞和最佳的时序。每个 PnR 工具都提供各种命令/开关,以便用户可以根据自己的要求在时序、拥塞、面积和功率方面以更好的方式优化设计。根据用户设置的偏好,PnR工具进行布局并对其进行优化以获得更好的 QoR。布局不仅place synthesized netlist中存在的标准单元,还place许多physical only cells,并根据要求添加BUFFER/INVTER以满足时序、DRV 和工艺制造要求。以下是PnR工具在placement和optimization阶段执行的基本步骤。
Placement的主要步骤:
1.Pre Placement
2.Initial Placement / Course Placement / Global Placement
3.Legalization
4.HFNS (Hign Fanout Net Synthesis)
5.Iteration for Congestion, Timing, DRV, and Power Optimization
6.Multibit flop conversion
7.Timing optimization iterations
8.Scan-Chain Reorder
9.Tie Cell insertion
10.Save Design
Pre Placement
在开始实际place synthesized netlist中存在的标准单元之前,我们需要place各种physical only cells,如end-cap cells, well-tap cells, IO buffers, antenna diodes和spare cells。
Initial Placement / Global Placement / Course Placement
完成pre placement阶段后,我们可以开始标准单元的place,但在此之前,我们必须提供我们希望在工具进行place和optimize时应用的所有正确place和optimize设置。这些设置可能像partial placement blockage(局部布局阻塞设置) density screen setting(即maximum utilization constraint,最大利用率控制), 打bound 或region, cell/instance padding, path_groups 和优化effort设置, enabling the early clock flow (ECF,可以提高placement阶段的ppa的准确性), enabling the extreme flow, enabling the useful skew, global congestion effort, global timing effort, power effort, Multibit flop conversion等.
在提供所有这些placement设置后,我们可以调用placement命令(在 innovus 中为 place_opt_design)。该工具首先进行global placement,其中该工具根据时序、拥塞和多电压约束确定每个单元的大致位置(在此步骤中调用 innovus Gigaplace 引擎的情况下)。任何pre placed的macro都将当作placement blockage。在此阶段,该工具不会检查任何instance overlap。
Legalization
在global placement阶段,instances会overlap。在此阶段,该具将移动附近位置的instances以解决overlap。为了匹配正确的power/ground pin,例如标准单元的 vdd pin,应该在 vdd rail上,vss 在 vss rail上,如果需要翻转实例,工具也应该进行翻转。这个过程称为legalization。在此步骤之后,每个instance都应放置在legal location,并且不应有overlaps。此步骤也称为refine placement。
HFNS (Hign Fanout Net Synthesis)
最初,有些net具有非常高的fanout。Flow中有max fanout的约束,因此我们需要将net上的sinks分配给不同的drivers。Add buffer和split fanout的过程称为high fanout net synthesis(HFNS)。
Iteration for Congestion, Timing, DRV, and Power Optimization
在此步骤工具中,首先进行early global route并估算设计中的routing overflow/congestions。工具最初尝试在此阶段最小化拥塞。接下来,工具开始 RC 提取以计算建立时间分析的延迟。工具尝试在此步骤中最小化建立时间的WNS 和 TNS。同样,工具还会尝试在此阶段最小化 DRV 和 Power。
Multi-bit flop conversion
如果用户在flow中启用了multi-bit flop conversion,则该工具将首先检查库中可用的多位触发器。工具会再考虑与single-bit flop相关的时序关键性和多位转换的用户约束集的前提下,将single-bit flop转换为multi-bit flops。
Timing optimization iterations
这是一个漫长的步骤,工具试图在各种迭代中最小化每个timing path group的 WNS 和 TNS。根据effort setting和initial WNS 数量,需要多次迭代才能获得最小 WNS 和 TNS。如果这个阶段之后效果不好,我们可以进一步对时序进行incremental optimization(多加一轮opt command)。同样,对于拥塞,我们可以运行拥塞修复,然后进行incremental optimization以获得更好的结果。但是这些额外的步骤会增加运行时间。
Scan-Chain Reorder
扫描链插入和拼接在逻辑综合阶段已经完成。在place和optimize之后,我们为每个扫描触发器设置了一个位置,因此需要对其重新排序以获得更好的可布线性。该工具在此步骤中执行扫描链的重新排序,这对时序和拥塞都有好处。
Tie Cell Insertion
Netlist有一些未使用的逻辑门输入与 vdd 或 vss 相关联。我们不能让标准单元的任何input保持floating,它必须tie到 高电平 或 低电平。不建议将作为晶体管栅极的逻辑单元的输入直接连接到 vdd 或 vss,所以在这一步工具中放置了tie high 和tie low 单元,这基本上是一个单一的输出逻辑单元,它连接了需要分别连接vdd或vss的逻辑门的输入。
Save Design
最后,保存database,我们将在下一阶段使用这个database。
7445