change_icctcl_to_innovstcl


############################################
# edit by wangnengxue 20200911 #
# Email : nengxuew@cadence.com #

###########################################

proc write_eco_change {args} {




set output ""
parse_proc_arguments -args $args results
foreach argname [array names results] {
if {[regexp -nocase {-output} $argname ]} { set output $results($argname) }
}






write_change -format icctcl -output ${output}_icctcl



set in_icctcl_file [open ${output}_icctcl r+]
set out_innovus_file [open ${output} w]



while {[gets $in_icctcl_file line]>=0} {



if {[regexp {current_instance$} $line ]} {
set hier_inst ""

set hier_inst1 ""
puts $out_innovus_file "#$line"
continue
}



if {[regexp {current_instances*(S+)} $line uselessvar_a hier_inst]} {
set hier_inst1  $hier_inst

set hier_inst $hier_inst/

puts $out_innovus_file "#$line"
continue
}



switch -regexp $line {


{size_cell} {
regexp {size_cells*{(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 "
}


{remove_buffer} {
regexp {remove_buffers*[get_cellss*{(S+)}]} $line uselessvar_a inst
puts $out_innovus_file "#$line"
puts $out_innovus_file "ecoDeleteRepeater -inst $hier_inst$inst -nonPhysical "
}

{insert_buffer} {
regexp {insert_buffers*[get_pinss*{(S+)}]s*(S+)s*-new_net_names*{(S+)}s*-new_cell_names*{(S+)}} $line uselessvar_a term cell_type new_netname new_cellname
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 $hier_inst1   "
}
}
}



close $in_icctcl_file
close $out_innovus_file



}


define_proc_arguments write_eco_change -info "User change pt_script format to innovus script format Examble: write_eco_change -output ./wangnengxue.innovus.tcl"
-define_args {
{-output "Specifies the output script filenane and path"}
}



 
原文地址:https://www.cnblogs.com/learnsure/p/13652268.html