首页 理论教育如何正确摆放宏单元?

如何正确摆放宏单元?

【摘要】:从实际应用中来看,虽然ICC提供的自动放置宏单元的方式能够实现不错的设计效果,但与设计人员手动摆放还是有差距。设计人员应当根据整个芯片的形状大小、供电端口位置、各个宏单元所在模块的大小、功耗情况来合理规划宏单元摆放位置,在保证宏单元供电需求的前提下,让逻辑相近的单元尽量靠近,使后续的综合更容易满足时序约束。在完成后将所有宏单元的位置导出成一个单独的脚本,下次再布局时直接运行该脚本即可。

完成了芯片布局空间的创建后可以看到,芯片中所用的宏单元和标准单元都还放置在芯片外面,接下来首先要放置宏单元的位置。设计人员可以采用ICC自动摆放的脚本来进行,其大致流程如下:

1.设置宏单元摆放相关参数

主要通过set_fp_placement_strategy命令来进行,如-min_distance_between_macros(设置宏单元直接最小距离)和-sliver_size(能够在宏单元之间插入标准单元的最小宽度)等。设置完后可以用命令report_fp_placement_strategy来确认。另外也可以通过set_keepout_margin来对标准单元在宏单元周围的布局进行约束。

2.进行初步布局

使用命令create_fp_placement可以将所有未固定的宏单元和标准单元布局完毕,可以通过调整命令中的相关选项来调整布局效果。

3.通过布线congestion来判断宏单元的布局是否合理

通过命令route_zrt_global-congestion_map_only true-exoloration true可以看到整个芯片的congestion的情况,从而判断宏单元的布局是否符合要求。如果有部分区域布线密度过高就需要调整,如某些宏单元之间的区域较小,如果没有设置为不可布标准单元的区域,就有可能出现布线密度过高的情况。如果芯片整体布线密度都非常高,则需要调整芯片的面积,通过增大面积来改善。

4.通过多次布局来挑选最优化的宏单元布局方式

通过调整set_fp_placement_strategy及set_fp_macro_options可以尝试不同的自动布局结果。通过布线congestion以及QoR来对布局结果进行比较,挑选最佳的结果作为后续步骤的基础。需要注意的是挑选完布局结果后需要将所有的宏单元固定,方法为set_dont_touch_placement[all_macro_cells],否则会在后续的步骤中引发错误而无法正常运行。

从实际应用中来看,虽然ICC提供的自动放置宏单元的方式能够实现不错的设计效果,但与设计人员手动摆放还是有差距。设计人员应当根据整个芯片的形状大小、供电端口位置、各个宏单元所在模块的大小、功耗情况来合理规划宏单元摆放位置,在保证宏单元供电需求的前提下,让逻辑相近的单元尽量靠近,使后续的综合更容易满足时序约束。当然设计人员也可以先采用自动布局命令、然后手动修改的方式来进行。在完成后将所有宏单元的位置导出成一个单独的脚本,下次再布局时直接运行该脚本即可。