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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 91|回复: 1

[求助] 求physical aware pt eco命令转成innovus的eco tcl脚本

[复制链接]
发表于 昨天 19:07 | 显示全部楼层 |阅读模式
悬赏10000资产未解决
本帖最后由 真我个性 于 2025-10-27 21:16 编辑

求physical aware pt eco命令(也就是含有物理位置信息的,例如add_buffer_on_route和set_cell_location等命令)转成innovus的eco tcl脚本

 楼主| 发表于 昨天 21:27 | 显示全部楼层
#!/usr/bin/tclshset f [open [lindex $argv 0 ]_text.tcl r ]set f2 [open [lindex $argv 0]_for_innovus.tcl w ]set f3 [open [lindex $argv 0]_tmp.tcl w ]while { [gets $f line ] != -1 } {        if { [regexp {size_cell in ([\w|\/]+): '(\w+)' sized to '(\w+)'} $line j_all j_hinst j_inst j_cell ] } {                puts $f2 "ecoChangeCell -inst $j_hinst/$j_inst -cell $j_cell"        }        if { [regexp {insert_buffer in ([\w|\/]+): added one '(\w+)'.* on pin (.*) named '(\w+)' '(\w+)'} $line j_all j_hinst j_cell j_all_pins j_net j_inst ] } {                set j_all_pins_list [lsort -unique [regexp -all -inline {('[\w|\/|\[|\]]+')} $j_all_pins ] ]                regsub -all {'} $j_all_pins_list {} j_all_pins_list                set j_all_pins_list_full ""                foreach j_obj $j_all_pins_list {                        append j_all_pins_list_full "$j_hinst/$j_obj "                }                if { [llength $j_all_pins_list_full]  > 1 } {                        puts $f2 "ecoAddRepeater -cell $j_cell -hinstGuide $j_hinst -name $j_inst -newNetName $j_net -term { $j_all_pins_list_full }"                } else {                        puts $f2 "ecoAddRepeater -relativeDistToSink 0.01 -cell $j_cell -hinstGuide $j_hinst -name $j_inst -newNetName $j_net -term { $j_all_pins_list_full }"                }        }        if { [regexp {remove_buffer in ([\w|\/]+): cells '(\w+)'} $line j_all j_hinst j_inst ] } {                puts $f3 "ecoDeleteRepeater -inst $j_hinst/$j_inst"        }}close $fclose $f3set f [open [lindex $argv 0 ]_icc2.tcl r ]while { [gets $f line ] != -1 } {        if { [regexp {current_instance \{([\w|\/]+)\}} $line j_all j_hinst ] } {#                puts $f2 "# current_instance $j_hinst"        }        if { [regexp {set_cell_location -coordinates \{(.*)\} -orientation (\w+) \[get_cells \{(\w+)\} -hier\]} $line j_all j_coord j_ori j_inst ] } {                if { $j_ori == "FS" } {                        set j_ori "MX"                } else {                        set j_ori "R0"                }                puts $f2 "placeInstance $j_hinst/$j_inst $j_coord $j_ori -placed"        }}set f3 [open [lindex $argv 0]_tmp.tcl r ]while { [gets $f3 line ] != -1 } {        puts $f2 $line}close $fclose $f2close $f3

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X 关闭广告

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

GMT+8, 2025-10-28 22:23 , Processed in 0.010959 second(s), 3 queries , Gzip On, Redis On.

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