• 后端学习笔记-Design Planning


    FloorPlan 基础知识

    1、FloorPlan的内容?

    规划芯片的面积和形状,
    创建Physical-only cell,摆放IO
    摆放Macro
    做Power plan,包括创建电压域、创建power ring和power mesh,进行一些电源预布线,包括标准单元的Power Rail及IO

    BNN项目的一些问题

    1、Power ring使用哪几层金属?

    使用M8(H)和M7(V),线宽4.5um,间距1.1um
    还使用了M6(H)和M5(V),线宽4.5um,间距1.1um

    2、Power mesh怎么做的?

    TOP_PG 区域,TOP_MESH_HIGH: 使用M8和M7,线宽4.5um,间距1.1um,VDD_top_net、VSS_top_net、VDD_core_net
    TOP_PG 区域,TOP_MESH_LOW:使用M6和M5,线宽0.28um,间距2.52um, VDD_top_net、VSS_top_net,在做这一个power mesh时需要指定VDD_top_net的blockage,避免其延伸到CORE_PG区域,但是VSS_top_net不需要
    CORE_PG区域,CORE_MESH_LOW:使用M6和M5,线宽0.28um,间距2.52um, VDD_core_net,这一个power mesh只需要布VDD_core_net,因为在上一个TOP_MESH_LOW中已经布了VSS_top_net

    Memory Block

    1、指定block的宽和高,创建floorplan

    create_floorplan -control_type width_and_height -core_width 120 -core_height 60
    

    2、在block四周创建placement blockage

    create_placement_blockage -bbox {0.00 0.00 5.00 60.00} -type hard -name placeblock_left
    
    hard placement blockage: 不允许摆放任何std cell,inv,buffer,用来解决congestion
    soft placement blockage: 在coarse placement阶段不允许摆放任何标准单元或者hard macros,但是在optimization或legalization阶段允许摆放。
    partial placement blockage:可以控制某些模块中std cell的摆放,解决cell density问题
    routing blockage:指导某些金属层的走线
    HALO(keepout margin):跟随在macro周围,不允许std cell的摆放,只允许inv和buffer摆放
    

    3、添加一些physical only单元

    http://www.360doc.com/content/18/0807/22/26654031_776466562.shtml

    add_end_cap
    add_tap_cell_array
    
    endcap cell: 主要加在std row的两端,以及memory或者其他block的包边,作用是确保每个nwell都是nwell enclosed
    tap cell:将衬底接到电源和地网络,避免衬底悬空,防止latch up
    decap cell:去耦单元,作用是在瞬态电流增大,电压下降时为电路补充电流以保持电源和地线之间的电压稳定,防止电源线的电压降和地线电压的升高
    filler cells:来填充I/O单元和I/O单元之间的间隙,作用主要是把扩散层连接起来满足DRC
    

    4、derive_pg

    create_net VDD_net -power
    derive_pg_connection -power_net VDD_net -power_pin VDD -cells [get_cells -all] -reconnect
    

    5、创建scenario

    用于setup:
    create_scenario func_wcl_ud_cworst
    set_scenario_options -setup true -hold false
    set_tlu_plus_files ……
    set_operating_conditions ……    设置最坏工作条件
    
    set_timing_derate -early -cell_delay -clock 0.99
    set_timing_derate -early -net_delay -clock 0.99
    set_timing_derate -late -cell_delay -clock 1.01
    set_timing_derate -late -net_delay -clock 1.01
    
    set_timing_derate -late -cell_delay -data 1.01
    set_timing_derate -late -net_delay -data 1.01
    
    时钟路径会有-early和-late两种,捕获时钟路径用-early,发射时钟路径用-late
    数据路径只有-late
    
    用于hold的scenario创建与此类似
    
    之后再激活某个scenario:set_active_scenarios ……
    

    6、创建power plan,进行电源布线

    创建power ring

    先指定power plan的区域:create_power_plan_regions -polygon {{坐标点1} {2} {3} {4}} region_name
    再设置strategy:set_power_ring_strategy your_strategy …… ,这一步会指定一个power_ring的template,在template里会指定水平和垂直方向的布线金属层、线宽、线间距和offset等
    对strategy进行编译:compile_power_plan -ring -strategy {your_strategy} -verbose
    

    左-上-右-下:side1-side2-side3-side4,引脚顺序为从下至上,从左至右, 上面脚本-skip选项表示不在左右2边打ring

    创建power strap

    在以上例子中,power ring使用了金属层M4,上下VDD_net和VSS_net各1条,Power strap使用了金属层M5,VDD_net和VSS_net交错排布,端头与power ring相连
    

    7、设置通孔规则

    set_preroute_advanced_via_rule
    

    8、插入filler,置预布线的金属层,并对标准单元进行预布线,再移除插入的filler

    insert_stdcell_filler ……
    set_preroute_drc_strategy -min_layer M2 -max_layer M5
    preroute_standard_cells -nets {VSS_net} ……
    preroute_standard_cells -nets {VDD_net} ……
    remove_stdcell_filler -stdcell 
    
    以上几步的作用是将标准单元的power rail连接到power strap上
    

  • 相关阅读:
    代码之美
    一点对互联网的浅薄理解
    angularjs填写表单
    一种通用数据采集的schema定义形式
    maven常用命令
    find which process occupy the PORT
    Mac上安装boost开放环境
    codeforces 581B Luxurious Houses
    codeforces 599A Patrick and Shopping
    codeforces 597A Divisibility
  • 原文地址:https://www.cnblogs.com/wt-seu/p/13405894.html
Copyright © 2020-2023  润新知