马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
主要有这两个文件看不懂,希望有人能讲讲这两个文件在干什么,如果想要深入了解学习,需要往哪个方向学习,有哪些知识储备
脚本1
## gflow proc gflow_exec_plug_cmds
proc gflow_exec_plug_cmds { var_name } {
global gflow
puts "GFLOW INFo: exec plug cmds var $var_name"
if { [ info exists $var_name] } {
eval "set all cmds \$$var name"
if { [ llength $all_cmds ] > 0 } {
foreach cmd $all_cmds {
puts "GFLOW INFO: plug cmd: $cmd"
if { [ catch {eval $cmd} err1 err2 ] } { puts $err1 ; puts $err2 }
}
puts "GFLOW INFO: finish exwc plug cmds $var_name"
} else {
puts "GFLOW INFO : var $var_name defined is empty"
}
} else {
puts "GFLOW INFO: can't find var $var_name defined"
}
return
}
##gflow proc gflow_source_plug_file
proc gflow_source_plug_file { file_path } {
global gflow
puts "GFLOW INFO: source plug file $file_path"
if { [ file exists $file_path ] } {
if { [ catch { source -verbose $file_path } err1 err2 ] } { puts $err1 ; puts $err2 }
puts "GFLOW INFO: finish source plug file $file_path"
} else {
puts "GFLOW INFO: can't find plug file $file_path"
}
return
}
#gflow fer gflow no empty value
proc gflow_get_gflow_no_empty_vaule { init mode args } {
global gflow
set result $init
foreach var $args {
if { [ info exists $var ] && $mode == 0 } { eval "if { ! \[ regexp {^\s*$} \$${var} \] } { set result \$${var} } " }
if { [ info exists $var ] && $mode == 1 } { eval "set result \$${var}" }
}
return $result
}
脚本2
if { [array exists gflow] } { unset gflow }
global gflow
set gflow(block_eco_signoff_targets) {staeco preco prfinish genrc gandm gencdl mergedm lvs drc ant sta gentwf sir dir sem}
set gflow(block_signoff_targets) {prfinish genrc gendm gencdl mergedm lvs drc ant sta gentwf sir dir sem}
set gflow(boundart_cell,addEndCap,-prefix){END_CAP}
set gflow(boundary_cell,setEndCapMode,-bottomEdge) {GDCAPBWP7T FILL1BWP7T}
set gflow(boundary_cell,setEndCapMode,-boundary_tap) {true}
set gflow(boundary_cell,setEndCapMode,-leftEdge) {DCAPBWP7T}
set gflow(boundary_cell,setEndCapMode,-rightEdge) {DCAPBWP7T}
set gflow(boundary_cell,setEndCapMode,-topEdge) {GDCAPBWP7T FILL1BWP7T}
set gflow(boundary_cell,set_well_tap_mode,-bottom_tap_cell) {TAPCELLBWP7T}
set gflow(boundary_cell,set_well_tap_mode,-cell) {TAPCELLBWP7T}
set gflow(boundary_cell,set_well_tap_mode,-rule) {28}
set gflow(boundary_cell,set_well_tap_mode,-top_tap_cell) {TAPCELLBWP7T}
set gflow(boundary_cell,use_gflow_script) {true}
set gflow(boundary_cell,user_script) {}
set gflow(calibre,lvs,post_includes) {
{ LVS BOX EE0256X1CA180GM01 EE0256X1CA180GM01 }
}
set gflow(ccopt_property,buffer_cells) {CKBD1OBWP7T CKBD8BWP7T CKBD6BWP7T CKBD4BWP7T}
set gflow(ccopt_property,clock_gating_cells) {CKLNQD8BWP7T CKLNQD6BWP7T CKLNQD4BWP7T CKLNQD2BWP7T CKLHQD8BWP7T CKLHQD6BWP7T CKLHQD4BWP7T CKLHQD2BWP7T}
set gflow(ccopt_property,inverter cells) {CKND1OBWP7T CKND8BWP7T CKND6BWP7T CKND4BWP7T}
set gflow(ccopt_property,logic_cells) {CKXOR2D4BWP7T CKXOR2D2BWP7T CKMUX2D2BWP7T CKMUX2D1BWP7T CKAN2D8BWP7T CKAN2D4BWP7T CKAN2D2BWP7T CKND2D4BWP7T CKND2D3BWP7T CKND2D2BWP7T}
set gflow(ccopt_property,max_fanout) {20}
set gflow(ccopt_property,max_source_to_sink_net_length) {350}
set gflow(ccopt_property,primary_delay_corner) {ss_1p62v_125c_cmax_125c}
set gflow(ccopt_property,target_max_trans) {0.5}
set gflow(ccopt_property,target_skew) {0.5}
set gflow(ccopt_property,use_inverters) {true}
|