在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1075|回复: 4

[原创] S家PT dmsa ECO 带location的icc2innovus脚本:亲测有效

[复制链接]
发表于 2024-6-15 22:03:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
基于论坛的脚本修改了一下,折腾了一天,弄了个带lcation的:
首先在pt_shell添加下面 option:
set all_lef_list " \
     ./pathto/sc12mc_tech.lef  \
     ./pathto/sc12mc_logic0040ll_base_lvt_c40.lef \
    .pathto/dlm_sram.lef \
                    "

set DECAP_CELLS   "FILLCAP4_A12TL40 FILLSGCAP4_A12TL40 FILLCAP8_A12TL40 FILLSGCAP8_A12TL40 FILLCAP16_A12TL40 FILLSGCAP16_A12TL40 FILLCAP32_A12TL40 FILLSGCAP32_A12TL40 FILLCAP64_A12TL40 FILLSGCAP64_A12TL40 FILLCAP128_A12TL40 FILLSGCAP128_A12TL40 FILLCAP128_A12TL40 FILL64_A12TL40 FILL32_A12TL40 FILLCAP16_A12TL40 FILL8_A12TL40 FILL4_A12TL40 FILL2_A12TL40"
set FILLER_CELLS  "FILL1_A12TL40 ENDCAPTIE3_A12TL40 FILLTIE8_A12TL40 "
set FILLER_CELL_NAMES_PT   "$DECAP_CELLS $FILLER_CELLS"


#set for physic inf
set_app_var eco_allow_filler_cells_as_open_sites true
set read_parasitics_load_locations true
set_eco_options -physical_lib_path $all_lef_list \
                  -physical_design_path "../../nets/${design}.def.gz" \
               -filler_cell_names $FILLER_CELL_NAMES_PT  

##-log_file ../system_log/set_eco_options_dmsa.err.log
report_eco_options

....

fix_eco_timing -physical_mode open_site -type hold -group {clk_main clk_dft   **clock_gating_default**   **async_default**} -methods {insert_buffer} -buffer_list { DLY2_X0P5M_A12TL40 DLY2_X2M_A12TL40   DLY2_X4M_A12TL40 DLY4_X0P5M_A12TL40  DLY4_X2M_A12TL40  }

...icc eco:fix_hold.tcl如下:
current_instance
current_instance u_sram_sp_64x20_wrap
insert_buffer [get_pins {U12/A}] DLY2_X0P5M_A12TL40 -new_net_names {FIX_HOLD_ECO_NET_2024061512391} -new_cell_names {FIX_HOLD_ECO_CELL_2024061512391} -location {547.192 371.7} -orientation N
current_instance
current_instance u_cic
insert_buffer [get_pins {in_differentor1_dly_reg_0_/D}] DLY2_X0P5M_A12TL40 -new_net_names {FIX_HOLD_ECO_NET_2024061512392} -new_cell_names {FIX_HOLD_ECO_CELL_2024061512392} -location {561.36 299.46} -orientation FS
current_instance
current_instance u_clk_gen
insert_buffer [get_pins {cnt_clk_sdm_reg_1_/D}] DLY2_X0P5M_A12TL40 -new_net_names {FIX_HOLD_ECO_NET_2024061512393} -new_cell_names {FIX_HOLD_ECO_CELL_2024061512393} -location {560.315 368.34} -orientation N
.....



.......................source ../scr/icc_2_innovus.tcl  如下:只对insert_buffer做了match修改,其他请类似修改:

set in_icctcl_file   [open ${file_fix_hold_icc} r+]
set out_innovus_file [open ${file_fix_hold_inn} w]

while {[gets $in_icctcl_file line]>=0} {
    #current_instance#for root instance
    if {[regexp {current_instance$} $line ]} {
        set hinstGuide $design
        set hier_inst  ""
        puts $out_innovus_file "#$line"
        continue
    }

    #current_instance u_cic#some icc has {} some has no {},so we add [\{]* to match
    if {[regexp {current_instance [\{]*(\S+)[\}]*} $line uselessvar_a hier_inst]} {
        set hinstGuide  $hier_inst
        set hier_inst   $hier_inst/
        puts $out_innovus_file "#$line"
        continue
    }

    switch -regexp $line {
        {size_cell} {
            regexp {size_cell\s*\{(\S+)\}\s*\{(\S+)\}} $line uselessvar_a inst cell_type
            puts $out_innovus_file "#$line"
            puts $out_innovus_file "ecoChangeCell -inst $hier_inst$inst -cell $cell_type \n"
        }

        {remove_buffer} {
            regexp {remove_buffer\s*\[get_cells\s*\{(\S+)\}\]} $line uselessvar_a inst
            puts $out_innovus_file "#$line"
            puts $out_innovus_file "ecoDeleteRepeater -inst $hier_inst$inst -nonPhysical \n"
        }

        {insert_buffer} {
            #insert_buffer [get_pins {sram_csn_reg/QN}] XXX -new_net_names {FIX_ECO_NET_xx} -new_cell_names {FIX_HOLD_ECO_CELL_xx}
            #insert_buffer [get_pins {U12/A}] XX -new_net_names {FIX_HOLD_ECO_NE_XX} -new_cell_names {FIX_HOLD_ECO_CELL_xx} -location {547.192 371.7} -orientation N
            regexp {insert_buffer\s*\[get_pins\s*\{(\S+)\}\]\s*(\S+)\s*-new_net_name.*\s*\{(\S+)\}\s*-new_cell_name.*\s*\{(\S+)\}\s*-location\s*\{(.*)\}} $line uselessvar_a term cell_type new_netname new_cellname cell_position
            puts $out_innovus_file "#$line"
            puts $out_innovus_file "ecoAddRepeater -term $hier_inst$term -cell $cell_type -new_net_name $new_netname -name $new_cellname  -hinstGuide $hinstGuide -loc {$cell_position} \n"
        }
    }
}

close $in_icctcl_file
close $out_innovus_file

.................................


运行后生成innovus运行的tcl如下:
#current_instance
#current_instance u_sram_sp_64x20_wrap
#insert_buffer [get_pins {U12/A}] DLY2_X0P5M_A12TL40 -new_net_names {FIX_HOLD_ECO_NET_2024061512391} -new_cell_names {FIX_HOLD_ECO_CELL_2024061512391} -location {547.192 371.7} -orientation N
ecoAddRepeater -term u_sram_sp_64x20_wrap/U12/A -cell DLY2_X0P5M_A12TL40 -new_net_name FIX_HOLD_ECO_NET_2024061512391 -name FIX_HOLD_ECO_CELL_2024061512391  -hinstGuide u_sram_sp_64x20_wrap -loc {547.192 371.7}

#current_instance
#current_instance u_cic
#insert_buffer [get_pins {in_differentor1_dly_reg_0_/D}] DLY2_X0P5M_A12TL40 -new_net_names {FIX_HOLD_ECO_NET_2024061512392} -new_cell_names {FIX_HOLD_ECO_CELL_2024061512392} -location {561.36 299.46} -orientation FS
ecoAddRepeater -term u_cic/in_differentor1_dly_reg_0_/D -cell DLY2_X0P5M_A12TL40 -new_net_name FIX_HOLD_ECO_NET_2024061512392 -name FIX_HOLD_ECO_CELL_2024061512392  -hinstGuide u_cic -loc {561.36 299.46}
..........


发表于 2024-6-18 13:35:16 | 显示全部楼层
据我了解,pt吐出的physical aware的eco脚本有一些hier bug,特别是对于同一net连续插入buff的时候。
 楼主| 发表于 2024-6-19 18:42:31 | 显示全部楼层
我目前没碰到,这个具体是连续插入buffer后eco脚本有location问题吗?
发表于 2024-6-27 15:53:54 | 显示全部楼层
请教下  location 是什么意思,你的pt 是什么版本,为啥我的insert buff 没有这个location 选项解释?
 楼主| 发表于 2024-6-28 07:56:18 | 显示全部楼层
pt 2016
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 01:56 , Processed in 0.017949 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表