ICC - Floorplan


  • 在Floorplan之前,需要首先阅读一下IP和Stdcel的文档,观察是否有特别的要求,因为Floorplan的很多工作是跟stdcel和macro的设计风格有关,跟tf也有关。

1. 实现流程

  • (1)定义大小和形状

    • 可以在手册中查找create_floorplan指令的相关选项配置。
      create_floorplan -left_io2core 10...
      
  • (2)Macro Cell 摆放

    • 注意事项
      • macro的摆放需要考虑timing、congestion以及IR Drop。
      • 注意signal pin的方向,以及PG pin的分布。
      • 注意Macro之间的连接关系,Hierarchy分析以及DataFlow分析。
      • Macro的堆叠需要考虑congestion、timing、si的影响。
      • 留一些空间给decap插入,用于减小Dynamic IR-Drop。
      • 也要留一些空间处理走线较长的信号线,留有空间,可以插入buffer。
    • 对于一些大型的设计,可以使用指令首先让工具摆放,作为一个初始参考。指令如下,可以选择多个选项。
      • 其中 -no_hierarchy_gravity 为指定不按照module的hierarchy分块。
        create_fp_placement -timing_driven -congestion_driven...
        
    • 一般都是手动摆放macro,摆放好了之后可以导出脚本,方便下一次直接使用。
    • 摆放完之后要固定住,防止后面操作更改。
  • (3)Ports/Terminals的摆放

    • port是逻辑存在的端口,而terminal是port的物理层实现。
    • 注意port的金属层选择,不同金属层有不同的方向,选择合适的金属层让port接口“顺着放”。
    • 也可以使用脚本让工具自动摆放,人为可以添加约束。
      place_fp_pins -block_level
      
  • (4)EndCap Cell(Boundary Cell)

    • 放在Row的边界,主要为了满足DRC,保护处于边界位置的stdcell;以及match stdcell environment。
  • (5)Tap Cell

    • N 阱和P 衬底形成了一个PN结,为了避免这个PN结被正向偏置(Forwad Bias),形成Latch-Up效应,从而损坏整个芯片。最容易的办法是把N-Well连接到最高电压上,同时把P-Substrate连接到最低电压上。
    • 而tap cell的目的就是这个,但是tap cell的作用范围有限,所以需要间隔一定距离就放置一个,具体的数据可以看Foundry给的文档。
    • 也可以在标准单元设计时,集成well tie,这种情况就不需要单独的tap cell了。
    • 可以使用下面语句添加tap cell。
      add_tap_cell_array
      
  • (6)PG Network

    • 目的:给所有的Macro和StdCell供上电。
    • 评估标准:IR Drop。
    • 摆放注意点
      • 查看stdcell的metal layer及其方向。
      • 查看macro的PG Pin的使用和方向。
      • 注意Top给整个block的供电方案,连接关系(Via)。
        • 从Top给底层金属供电,通过一层一层的Via孔打下去,这个从Top到底层金属的过程也有电压降的问题,但是如果Via孔打的多,电阻变小(具体公式可上网查),电压降就会减小。
      • 注意Macro之间的channel的供电方案。
    • 实现流程
      • (a)Logically Connect PG Pins with PG Nets
      • (b)设置Macro Rings
      • (c)设置PG Strap
        • pitch within group:一组VDD和VSS之间的间距,建议两者不要间隔太近,因为两者都要向下打Via,可能会导致Route阻塞。
        • 建议strap细但密,还是考虑到strap太宽,打多个via,导致走线不好走。
      • (d)Preroute Macros
        • 对于Macro的pins需要preroute instances连接到电源网络上。
      • (e)Preroute Rail
        • 使用指令preroute_standard_cells布置Rail 供电网络给Stdcell的供电。
        • 在Floorplan阶段可以使用下面指令快速将stdcell摆进去,然后检查供电网络是否布置出错或遗漏。
          create fp placement -effort low
          
        • 在Placement阶段可以使用下面指令将Floorplan阶段placement的StdCell remove掉;重新布置。
          remove_placement
          
      • (f)Verify PG Connection
        • 使用下面指令检查是否存在未供上电的cell/区域。
          verify_pg_nets
          
      • 注意:可以通过下面指令指定选择layer范围(M4到M1之间的金属层)进行Via连接。上面介绍的多个步骤中可能会使用到。
        set_preroute_drc_strategy -max_layer M4 -min_layer M1
        
  • (7)额外的物理约束

    • stdcell的摆放区域设定:例如靠近Core的边缘没必要摆放(硬性要求),部分区域指定部分stdcell可以摆(软性,自己定义的要求)。
      • create_placement_blockage:不允许在指定区域摆放指定cell。
      • create_bounds:在指定区域摆放指定cell。
      • create_route_guide / create_routing_blockage
        • 在Floorplan就指定Route相关设置的原因是,可能会虚拟走线计算时序等信息,所以需要提前把Route相关设置好。
  • (8)Write Floorplan

    • 目的是将Floorplan信息指定部分写出DEF等文件,可以给DCT使用,做连线延时估计。
posted @ 2023-08-18 13:11  可达达鸭  阅读(706)  评论(0编辑  收藏  举报