当前位置: 首页 > news >正文

Formality:参考设计/实现设计以及顶层设计

相关阅读

Formalityicon-default.png?t=O83Ahttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482​​​


        Formality存在两个重要的概念:参考设计/实现设计和顶层设计,本文就将对此进行详细阐述。参考设计/实现设计是中两个重要的全局概念,在使用verify命令时,默认是对它们两者之中的比较点进行验证;而顶层设计则是属于一个容器的局部概念,每个容器只能拥有一个顶层设计,且确定之后就无法更改。

顶层设计

        使用set_top命令可以将容器中某一个设计设置为顶层设计并进行展开(Elaborate)或者说链接(Link)时,Formality会在容器范围内解析引用并构建层次结构(只会对与顶层设计相关的设计进行解析),此后可以使用report_hierarchy命令报告层次中任意设计的结构。如果这个容器是默认容器r,则顶层设计还会被自动设置为参考设计;如果这个容器是默认容器i,则顶层设计还会被自动设置为实现设计。

参考设计/实现设计

        使用set_reference_design命令将已设置顶层设计的容器中的某个设计设置为参考设计(要求必须在顶层设计的层次结构中),设置完成后用变量$ref表示;使用set_implementation_design命令将已设置顶层设计的容器中的某个设计设置为参考设计(要求必须在顶层设计的层次结构中),设置完成后用变量$ref表示。

        虽然参考设计/实现设计常常不需要显式指定,它们在使用set_top命令指定默认容器r和i的顶层设计时就自动设置了,但会有一些特殊情况,比如层次化验证(hierarchical verification)过程中就是从下到上将层次结构中的各个设计设置为参考设计/实现设计依次进行验证,并在高层次验证时将低层次设置为黑盒来进行验证。

        使用write_hierarchical_verification_script命令即可生成一个用于层次验证的脚本,该脚本应该在之前的验证基础上执行,下面是一个层次验证脚本的例子。

###
### Formality (R) hierarchical verification script: /home/zhangchen/Desktop/test1/hier.tcl
###
### Reference design: r:/WORK/TopModule
### Implementation design: i:/WORK/TopModule
### Generated Fri Jan 17 00:32:42 2025
###global ref
global impl
global verification_constant_prop_mode
global signature_analysis_match_blackbox_input
global signature_analysis_match_blackbox_output
global signature_analysis_match_primary_input
global signature_analysis_match_primary_output
global verification_status
global fm_tmp_result_count
global fm_hier_result_arrayredirect         /home/zhangchen/Desktop/test1/fm_hier.log {echo "**************************************************************************************************"}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {echo "Results of hierarchical verification script: /home/zhangchen/Desktop/test1/hier.tcl"}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {echo "**************************************************************************************************"}setupif [info exists verification_constant_prop_mode] {set fm_write_hier_saved_vars(verification_constant_prop_mode) $verification_constant_prop_mode
}
set verification_constant_prop_mode noneif [info exists signature_analysis_match_blackbox_input] {set fm_write_hier_saved_vars(signature_analysis_match_blackbox_input) $signature_analysis_match_blackbox_input
}
set signature_analysis_match_blackbox_input falseif [info exists signature_analysis_match_blackbox_output] {set fm_write_hier_saved_vars(signature_analysis_match_blackbox_output) $signature_analysis_match_blackbox_output
}
set signature_analysis_match_blackbox_output falseif [info exists signature_analysis_match_primary_input] {set fm_write_hier_saved_vars(signature_analysis_match_primary_input) $signature_analysis_match_primary_input
}
set signature_analysis_match_primary_input falseif [info exists signature_analysis_match_primary_output] {set fm_write_hier_saved_vars(signature_analysis_match_primary_output) $signature_analysis_match_primary_output
}
set signature_analysis_match_primary_output falseif [info exists fm_hier_result_array] {unset fm_hier_result_array
}
set fm_hier_result_count 0
set fm_tmp_result_count 0
set fm_session_files_saved 0
set fm_save_file_limit 1
set fm_save_time_limit 0proc get_verification_status {ref_inst imp_inst} {global fm_tmp_result_countglobal fm_hier_result_arrayfor {set i 0} {$i < $fm_tmp_result_count} {incr i} {if [expr (![string compare [lindex $fm_hier_result_array([expr $i + 1]) 0] $ref_inst])] {if [expr (![string compare [lindex $fm_hier_result_array([expr $i + 1]) 1] $imp_inst])] {return [lindex $fm_hier_result_array([expr $i + 1]) 2]}}}return UNKNOWN
}###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a1/c1
###   Imp: i:/WORK/TopModule/a1/c1
###
set_reference_design      r:/WORK/C_0
set_implementation_design i:/WORK/C_0
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/op_select $ref/op_select
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_constant -type port  $ref/op_select 0
set_constant -type port $impl/op_select 0
set fm_begin_cputime [cputime]
verify
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a1/c1} {i:/WORK/TopModule/a1/c1} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a1/c1} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a1/c1} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/op_select
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_constant -type port  $ref/op_select 
remove_constant -type port $impl/op_select ###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a1/c2
###   Imp: i:/WORK/TopModule/a1/c2
###
set_reference_design      r:/WORK/C_5
set_implementation_design i:/WORK/C_5
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/op_select $ref/op_select
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_constant -type port  $ref/op_select 1
set_constant -type port $impl/op_select 1
set fm_begin_cputime [cputime]
verify
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a1/c2} {i:/WORK/TopModule/a1/c2} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a1/c2} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a1/c2} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/op_select
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_constant -type port  $ref/op_select 
remove_constant -type port $impl/op_select ###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a1
###   Imp: i:/WORK/TopModule/a1
###
set_reference_design      r:/WORK/A_0
set_implementation_design i:/WORK/A_0
set at_least_one_black_box 0
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1/c1} {i:/WORK/TopModule/a1/c1}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/c1set_black_box $impl/c1set at_least_one_black_box 1set_user_match -type cell $impl/c1 $ref/c1set_user_match -type pin $impl/c1/out[3] $ref/c1/out[3]set_user_match -type pin $impl/c1/out[2] $ref/c1/out[2]set_user_match -type pin $impl/c1/out[1] $ref/c1/out[1]set_user_match -type pin $impl/c1/out[0] $ref/c1/out[0]set_user_match -type pin $impl/c1/op_select $ref/c1/op_selectset_user_match -type pin $impl/c1/input_a[3] $ref/c1/input_a[3]set_user_match -type pin $impl/c1/input_a[2] $ref/c1/input_a[2]set_user_match -type pin $impl/c1/input_a[1] $ref/c1/input_a[1]set_user_match -type pin $impl/c1/input_a[0] $ref/c1/input_a[0]set_user_match -type pin $impl/c1/input_b[3] $ref/c1/input_b[3]set_user_match -type pin $impl/c1/input_b[2] $ref/c1/input_b[2]set_user_match -type pin $impl/c1/input_b[1] $ref/c1/input_b[1]set_user_match -type pin $impl/c1/input_b[0] $ref/c1/input_b[0]set_user_match -type pin $impl/c1/clk $ref/c1/clkset_user_match -type pin $impl/c1/reset $ref/c1/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin  $ref/c1/op_select# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin $impl/c1/op_select
}
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1/c2} {i:/WORK/TopModule/a1/c2}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/c2set_black_box $impl/c2set at_least_one_black_box 1set_user_match -type cell $impl/c2 $ref/c2set_user_match -type pin $impl/c2/out[3] $ref/c2/out[3]set_user_match -type pin $impl/c2/out[2] $ref/c2/out[2]set_user_match -type pin $impl/c2/out[1] $ref/c2/out[1]set_user_match -type pin $impl/c2/out[0] $ref/c2/out[0]set_user_match -type pin $impl/c2/op_select $ref/c2/op_selectset_user_match -type pin $impl/c2/input_a[3] $ref/c2/input_a[3]set_user_match -type pin $impl/c2/input_a[2] $ref/c2/input_a[2]set_user_match -type pin $impl/c2/input_a[1] $ref/c2/input_a[1]set_user_match -type pin $impl/c2/input_a[0] $ref/c2/input_a[0]set_user_match -type pin $impl/c2/input_b[3] $ref/c2/input_b[3]set_user_match -type pin $impl/c2/input_b[2] $ref/c2/input_b[2]set_user_match -type pin $impl/c2/input_b[1] $ref/c2/input_b[1]set_user_match -type pin $impl/c2/input_b[0] $ref/c2/input_b[0]set_user_match -type pin $impl/c2/clk $ref/c2/clkset_user_match -type pin $impl/c2/reset $ref/c2/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin  $ref/c2/op_select# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin $impl/c2/op_select
}
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_dont_match -type port $ref/c_out_1[3]
set_dont_match -type port $ref/c_out_1[2]
set_dont_match -type port $ref/c_out_1[1]
set_dont_match -type port $ref/c_out_1[0]
set_dont_match -type port $ref/c_out_2[3]
set_dont_match -type port $ref/c_out_2[2]
set_dont_match -type port $ref/c_out_2[1]
set_dont_match -type port $ref/c_out_2[0]
set_dont_match -type port $impl/c_out_1[3]
set_dont_match -type port $impl/c_out_1[2]
set_dont_match -type port $impl/c_out_1[1]
set_dont_match -type port $impl/c_out_1[0]
set_dont_match -type port $impl/c_out_2[3]
set_dont_match -type port $impl/c_out_2[2]
set_dont_match -type port $impl/c_out_2[1]
set_dont_match -type port $impl/c_out_2[0]
# The following unmatched port(s) will cause verification failure at higher level if used there,
# therefore need not cause verification failure at this level.
set_dont_verify_points -type port  $ref/c_out_1[3]
set_dont_verify_points -type port  $ref/c_out_1[2]
set_dont_verify_points -type port  $ref/c_out_1[1]
set_dont_verify_points -type port  $ref/c_out_1[0]
set_dont_verify_points -type port  $ref/c_out_2[3]
set_dont_verify_points -type port  $ref/c_out_2[2]
set_dont_verify_points -type port  $ref/c_out_2[1]
set_dont_verify_points -type port  $ref/c_out_2[0]
# The following unmatched port(s) will cause verification failure at higher level if used there,
# therefore need not cause verification failure at this level.
set_dont_verify_points -type port $impl/c_out_1[3]
set_dont_verify_points -type port $impl/c_out_1[2]
set_dont_verify_points -type port $impl/c_out_1[1]
set_dont_verify_points -type port $impl/c_out_1[0]
set_dont_verify_points -type port $impl/c_out_2[3]
set_dont_verify_points -type port $impl/c_out_2[2]
set_dont_verify_points -type port $impl/c_out_2[1]
set_dont_verify_points -type port $impl/c_out_2[0]
set fm_begin_cputime [cputime]
verify
if [expr ($at_least_one_black_box) && \(![string compare $verification_status "FAILED"])] {setupset at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1/c1} {i:/WORK/TopModule/a1/c1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c1remove_black_box $impl/c1remove_user_match -type cell $impl/c1remove_user_match -type pin $impl/c1/out[3]remove_user_match -type pin $impl/c1/out[2]remove_user_match -type pin $impl/c1/out[1]remove_user_match -type pin $impl/c1/out[0]remove_user_match -type pin $impl/c1/op_selectremove_user_match -type pin $impl/c1/input_a[3]remove_user_match -type pin $impl/c1/input_a[2]remove_user_match -type pin $impl/c1/input_a[1]remove_user_match -type pin $impl/c1/input_a[0]remove_user_match -type pin $impl/c1/input_b[3]remove_user_match -type pin $impl/c1/input_b[2]remove_user_match -type pin $impl/c1/input_b[1]remove_user_match -type pin $impl/c1/input_b[0]remove_user_match -type pin $impl/c1/clkremove_user_match -type pin $impl/c1/resetremove_dont_verify_points -type pin  $ref/c1/op_selectremove_dont_verify_points -type pin $impl/c1/op_select}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1/c2} {i:/WORK/TopModule/a1/c2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c2remove_black_box $impl/c2remove_user_match -type cell $impl/c2remove_user_match -type pin $impl/c2/out[3]remove_user_match -type pin $impl/c2/out[2]remove_user_match -type pin $impl/c2/out[1]remove_user_match -type pin $impl/c2/out[0]remove_user_match -type pin $impl/c2/op_selectremove_user_match -type pin $impl/c2/input_a[3]remove_user_match -type pin $impl/c2/input_a[2]remove_user_match -type pin $impl/c2/input_a[1]remove_user_match -type pin $impl/c2/input_a[0]remove_user_match -type pin $impl/c2/input_b[3]remove_user_match -type pin $impl/c2/input_b[2]remove_user_match -type pin $impl/c2/input_b[1]remove_user_match -type pin $impl/c2/input_b[0]remove_user_match -type pin $impl/c2/clkremove_user_match -type pin $impl/c2/resetremove_dont_verify_points -type pin  $ref/c2/op_selectremove_dont_verify_points -type pin $impl/c2/op_select}verify
}
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a1} {i:/WORK/TopModule/a1} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a1} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a1} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
if [expr ($at_least_one_black_box)] {set at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1/c1} {i:/WORK/TopModule/a1/c1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c1remove_black_box $impl/c1remove_user_match -type cell $impl/c1remove_user_match -type pin $impl/c1/out[3]remove_user_match -type pin $impl/c1/out[2]remove_user_match -type pin $impl/c1/out[1]remove_user_match -type pin $impl/c1/out[0]remove_user_match -type pin $impl/c1/op_selectremove_user_match -type pin $impl/c1/input_a[3]remove_user_match -type pin $impl/c1/input_a[2]remove_user_match -type pin $impl/c1/input_a[1]remove_user_match -type pin $impl/c1/input_a[0]remove_user_match -type pin $impl/c1/input_b[3]remove_user_match -type pin $impl/c1/input_b[2]remove_user_match -type pin $impl/c1/input_b[1]remove_user_match -type pin $impl/c1/input_b[0]remove_user_match -type pin $impl/c1/clkremove_user_match -type pin $impl/c1/resetremove_dont_verify_points -type pin  $ref/c1/op_selectremove_dont_verify_points -type pin $impl/c1/op_select}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1/c2} {i:/WORK/TopModule/a1/c2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c2remove_black_box $impl/c2remove_user_match -type cell $impl/c2remove_user_match -type pin $impl/c2/out[3]remove_user_match -type pin $impl/c2/out[2]remove_user_match -type pin $impl/c2/out[1]remove_user_match -type pin $impl/c2/out[0]remove_user_match -type pin $impl/c2/op_selectremove_user_match -type pin $impl/c2/input_a[3]remove_user_match -type pin $impl/c2/input_a[2]remove_user_match -type pin $impl/c2/input_a[1]remove_user_match -type pin $impl/c2/input_a[0]remove_user_match -type pin $impl/c2/input_b[3]remove_user_match -type pin $impl/c2/input_b[2]remove_user_match -type pin $impl/c2/input_b[1]remove_user_match -type pin $impl/c2/input_b[0]remove_user_match -type pin $impl/c2/clkremove_user_match -type pin $impl/c2/resetremove_dont_verify_points -type pin  $ref/c2/op_selectremove_dont_verify_points -type pin $impl/c2/op_select}
}
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_dont_match -type port $ref/c_out_1[3]
remove_dont_match -type port $ref/c_out_1[2]
remove_dont_match -type port $ref/c_out_1[1]
remove_dont_match -type port $ref/c_out_1[0]
remove_dont_match -type port $ref/c_out_2[3]
remove_dont_match -type port $ref/c_out_2[2]
remove_dont_match -type port $ref/c_out_2[1]
remove_dont_match -type port $ref/c_out_2[0]
remove_dont_match -type port $impl/c_out_1[3]
remove_dont_match -type port $impl/c_out_1[2]
remove_dont_match -type port $impl/c_out_1[1]
remove_dont_match -type port $impl/c_out_1[0]
remove_dont_match -type port $impl/c_out_2[3]
remove_dont_match -type port $impl/c_out_2[2]
remove_dont_match -type port $impl/c_out_2[1]
remove_dont_match -type port $impl/c_out_2[0]
remove_dont_verify_points -type port  $ref/c_out_1[3]
remove_dont_verify_points -type port  $ref/c_out_1[2]
remove_dont_verify_points -type port  $ref/c_out_1[1]
remove_dont_verify_points -type port  $ref/c_out_1[0]
remove_dont_verify_points -type port  $ref/c_out_2[3]
remove_dont_verify_points -type port  $ref/c_out_2[2]
remove_dont_verify_points -type port  $ref/c_out_2[1]
remove_dont_verify_points -type port  $ref/c_out_2[0]
remove_dont_verify_points -type port $impl/c_out_1[3]
remove_dont_verify_points -type port $impl/c_out_1[2]
remove_dont_verify_points -type port $impl/c_out_1[1]
remove_dont_verify_points -type port $impl/c_out_1[0]
remove_dont_verify_points -type port $impl/c_out_2[3]
remove_dont_verify_points -type port $impl/c_out_2[2]
remove_dont_verify_points -type port $impl/c_out_2[1]
remove_dont_verify_points -type port $impl/c_out_2[0]###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a2/c1
###   Imp: i:/WORK/TopModule/a2/c1
###
set_reference_design      r:/WORK/C_4
set_implementation_design i:/WORK/C_4
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/op_select $ref/op_select
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_constant -type port  $ref/op_select 0
set_constant -type port $impl/op_select 0
set fm_begin_cputime [cputime]
verify
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a2/c1} {i:/WORK/TopModule/a2/c1} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a2/c1} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a2/c1} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/op_select
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_constant -type port  $ref/op_select 
remove_constant -type port $impl/op_select ###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a2/c2
###   Imp: i:/WORK/TopModule/a2/c2
###
set_reference_design      r:/WORK/C_3
set_implementation_design i:/WORK/C_3
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/op_select $ref/op_select
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_constant -type port  $ref/op_select 1
set_constant -type port $impl/op_select 1
set fm_begin_cputime [cputime]
verify
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a2/c2} {i:/WORK/TopModule/a2/c2} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a2/c2} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a2/c2} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/op_select
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_constant -type port  $ref/op_select 
remove_constant -type port $impl/op_select ###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a2
###   Imp: i:/WORK/TopModule/a2
###
set_reference_design      r:/WORK/A_2
set_implementation_design i:/WORK/A_2
set at_least_one_black_box 0
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2/c1} {i:/WORK/TopModule/a2/c1}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/c1set_black_box $impl/c1set at_least_one_black_box 1set_user_match -type cell $impl/c1 $ref/c1set_user_match -type pin $impl/c1/out[3] $ref/c1/out[3]set_user_match -type pin $impl/c1/out[2] $ref/c1/out[2]set_user_match -type pin $impl/c1/out[1] $ref/c1/out[1]set_user_match -type pin $impl/c1/out[0] $ref/c1/out[0]set_user_match -type pin $impl/c1/op_select $ref/c1/op_selectset_user_match -type pin $impl/c1/input_a[3] $ref/c1/input_a[3]set_user_match -type pin $impl/c1/input_a[2] $ref/c1/input_a[2]set_user_match -type pin $impl/c1/input_a[1] $ref/c1/input_a[1]set_user_match -type pin $impl/c1/input_a[0] $ref/c1/input_a[0]set_user_match -type pin $impl/c1/input_b[3] $ref/c1/input_b[3]set_user_match -type pin $impl/c1/input_b[2] $ref/c1/input_b[2]set_user_match -type pin $impl/c1/input_b[1] $ref/c1/input_b[1]set_user_match -type pin $impl/c1/input_b[0] $ref/c1/input_b[0]set_user_match -type pin $impl/c1/clk $ref/c1/clkset_user_match -type pin $impl/c1/reset $ref/c1/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin  $ref/c1/op_select# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin $impl/c1/op_select
}
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2/c2} {i:/WORK/TopModule/a2/c2}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/c2set_black_box $impl/c2set at_least_one_black_box 1set_user_match -type cell $impl/c2 $ref/c2set_user_match -type pin $impl/c2/out[3] $ref/c2/out[3]set_user_match -type pin $impl/c2/out[2] $ref/c2/out[2]set_user_match -type pin $impl/c2/out[1] $ref/c2/out[1]set_user_match -type pin $impl/c2/out[0] $ref/c2/out[0]set_user_match -type pin $impl/c2/op_select $ref/c2/op_selectset_user_match -type pin $impl/c2/input_a[3] $ref/c2/input_a[3]set_user_match -type pin $impl/c2/input_a[2] $ref/c2/input_a[2]set_user_match -type pin $impl/c2/input_a[1] $ref/c2/input_a[1]set_user_match -type pin $impl/c2/input_a[0] $ref/c2/input_a[0]set_user_match -type pin $impl/c2/input_b[3] $ref/c2/input_b[3]set_user_match -type pin $impl/c2/input_b[2] $ref/c2/input_b[2]set_user_match -type pin $impl/c2/input_b[1] $ref/c2/input_b[1]set_user_match -type pin $impl/c2/input_b[0] $ref/c2/input_b[0]set_user_match -type pin $impl/c2/clk $ref/c2/clkset_user_match -type pin $impl/c2/reset $ref/c2/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin  $ref/c2/op_select# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin $impl/c2/op_select
}
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_dont_match -type port $ref/c_out_1[3]
set_dont_match -type port $ref/c_out_1[2]
set_dont_match -type port $ref/c_out_1[1]
set_dont_match -type port $ref/c_out_1[0]
set_dont_match -type port $ref/c_out_2[3]
set_dont_match -type port $ref/c_out_2[2]
set_dont_match -type port $ref/c_out_2[1]
set_dont_match -type port $ref/c_out_2[0]
set_dont_match -type port $impl/c_out_1[3]
set_dont_match -type port $impl/c_out_1[2]
set_dont_match -type port $impl/c_out_1[1]
set_dont_match -type port $impl/c_out_1[0]
set_dont_match -type port $impl/c_out_2[3]
set_dont_match -type port $impl/c_out_2[2]
set_dont_match -type port $impl/c_out_2[1]
set_dont_match -type port $impl/c_out_2[0]
# The following unmatched port(s) will cause verification failure at higher level if used there,
# therefore need not cause verification failure at this level.
set_dont_verify_points -type port  $ref/c_out_1[3]
set_dont_verify_points -type port  $ref/c_out_1[2]
set_dont_verify_points -type port  $ref/c_out_1[1]
set_dont_verify_points -type port  $ref/c_out_1[0]
set_dont_verify_points -type port  $ref/c_out_2[3]
set_dont_verify_points -type port  $ref/c_out_2[2]
set_dont_verify_points -type port  $ref/c_out_2[1]
set_dont_verify_points -type port  $ref/c_out_2[0]
# The following unmatched port(s) will cause verification failure at higher level if used there,
# therefore need not cause verification failure at this level.
set_dont_verify_points -type port $impl/c_out_1[3]
set_dont_verify_points -type port $impl/c_out_1[2]
set_dont_verify_points -type port $impl/c_out_1[1]
set_dont_verify_points -type port $impl/c_out_1[0]
set_dont_verify_points -type port $impl/c_out_2[3]
set_dont_verify_points -type port $impl/c_out_2[2]
set_dont_verify_points -type port $impl/c_out_2[1]
set_dont_verify_points -type port $impl/c_out_2[0]
set fm_begin_cputime [cputime]
verify
if [expr ($at_least_one_black_box) && \(![string compare $verification_status "FAILED"])] {setupset at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2/c1} {i:/WORK/TopModule/a2/c1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c1remove_black_box $impl/c1remove_user_match -type cell $impl/c1remove_user_match -type pin $impl/c1/out[3]remove_user_match -type pin $impl/c1/out[2]remove_user_match -type pin $impl/c1/out[1]remove_user_match -type pin $impl/c1/out[0]remove_user_match -type pin $impl/c1/op_selectremove_user_match -type pin $impl/c1/input_a[3]remove_user_match -type pin $impl/c1/input_a[2]remove_user_match -type pin $impl/c1/input_a[1]remove_user_match -type pin $impl/c1/input_a[0]remove_user_match -type pin $impl/c1/input_b[3]remove_user_match -type pin $impl/c1/input_b[2]remove_user_match -type pin $impl/c1/input_b[1]remove_user_match -type pin $impl/c1/input_b[0]remove_user_match -type pin $impl/c1/clkremove_user_match -type pin $impl/c1/resetremove_dont_verify_points -type pin  $ref/c1/op_selectremove_dont_verify_points -type pin $impl/c1/op_select}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2/c2} {i:/WORK/TopModule/a2/c2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c2remove_black_box $impl/c2remove_user_match -type cell $impl/c2remove_user_match -type pin $impl/c2/out[3]remove_user_match -type pin $impl/c2/out[2]remove_user_match -type pin $impl/c2/out[1]remove_user_match -type pin $impl/c2/out[0]remove_user_match -type pin $impl/c2/op_selectremove_user_match -type pin $impl/c2/input_a[3]remove_user_match -type pin $impl/c2/input_a[2]remove_user_match -type pin $impl/c2/input_a[1]remove_user_match -type pin $impl/c2/input_a[0]remove_user_match -type pin $impl/c2/input_b[3]remove_user_match -type pin $impl/c2/input_b[2]remove_user_match -type pin $impl/c2/input_b[1]remove_user_match -type pin $impl/c2/input_b[0]remove_user_match -type pin $impl/c2/clkremove_user_match -type pin $impl/c2/resetremove_dont_verify_points -type pin  $ref/c2/op_selectremove_dont_verify_points -type pin $impl/c2/op_select}verify
}
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a2} {i:/WORK/TopModule/a2} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a2} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a2} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
if [expr ($at_least_one_black_box)] {set at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2/c1} {i:/WORK/TopModule/a2/c1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c1remove_black_box $impl/c1remove_user_match -type cell $impl/c1remove_user_match -type pin $impl/c1/out[3]remove_user_match -type pin $impl/c1/out[2]remove_user_match -type pin $impl/c1/out[1]remove_user_match -type pin $impl/c1/out[0]remove_user_match -type pin $impl/c1/op_selectremove_user_match -type pin $impl/c1/input_a[3]remove_user_match -type pin $impl/c1/input_a[2]remove_user_match -type pin $impl/c1/input_a[1]remove_user_match -type pin $impl/c1/input_a[0]remove_user_match -type pin $impl/c1/input_b[3]remove_user_match -type pin $impl/c1/input_b[2]remove_user_match -type pin $impl/c1/input_b[1]remove_user_match -type pin $impl/c1/input_b[0]remove_user_match -type pin $impl/c1/clkremove_user_match -type pin $impl/c1/resetremove_dont_verify_points -type pin  $ref/c1/op_selectremove_dont_verify_points -type pin $impl/c1/op_select}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2/c2} {i:/WORK/TopModule/a2/c2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c2remove_black_box $impl/c2remove_user_match -type cell $impl/c2remove_user_match -type pin $impl/c2/out[3]remove_user_match -type pin $impl/c2/out[2]remove_user_match -type pin $impl/c2/out[1]remove_user_match -type pin $impl/c2/out[0]remove_user_match -type pin $impl/c2/op_selectremove_user_match -type pin $impl/c2/input_a[3]remove_user_match -type pin $impl/c2/input_a[2]remove_user_match -type pin $impl/c2/input_a[1]remove_user_match -type pin $impl/c2/input_a[0]remove_user_match -type pin $impl/c2/input_b[3]remove_user_match -type pin $impl/c2/input_b[2]remove_user_match -type pin $impl/c2/input_b[1]remove_user_match -type pin $impl/c2/input_b[0]remove_user_match -type pin $impl/c2/clkremove_user_match -type pin $impl/c2/resetremove_dont_verify_points -type pin  $ref/c2/op_selectremove_dont_verify_points -type pin $impl/c2/op_select}
}
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_dont_match -type port $ref/c_out_1[3]
remove_dont_match -type port $ref/c_out_1[2]
remove_dont_match -type port $ref/c_out_1[1]
remove_dont_match -type port $ref/c_out_1[0]
remove_dont_match -type port $ref/c_out_2[3]
remove_dont_match -type port $ref/c_out_2[2]
remove_dont_match -type port $ref/c_out_2[1]
remove_dont_match -type port $ref/c_out_2[0]
remove_dont_match -type port $impl/c_out_1[3]
remove_dont_match -type port $impl/c_out_1[2]
remove_dont_match -type port $impl/c_out_1[1]
remove_dont_match -type port $impl/c_out_1[0]
remove_dont_match -type port $impl/c_out_2[3]
remove_dont_match -type port $impl/c_out_2[2]
remove_dont_match -type port $impl/c_out_2[1]
remove_dont_match -type port $impl/c_out_2[0]
remove_dont_verify_points -type port  $ref/c_out_1[3]
remove_dont_verify_points -type port  $ref/c_out_1[2]
remove_dont_verify_points -type port  $ref/c_out_1[1]
remove_dont_verify_points -type port  $ref/c_out_1[0]
remove_dont_verify_points -type port  $ref/c_out_2[3]
remove_dont_verify_points -type port  $ref/c_out_2[2]
remove_dont_verify_points -type port  $ref/c_out_2[1]
remove_dont_verify_points -type port  $ref/c_out_2[0]
remove_dont_verify_points -type port $impl/c_out_1[3]
remove_dont_verify_points -type port $impl/c_out_1[2]
remove_dont_verify_points -type port $impl/c_out_1[1]
remove_dont_verify_points -type port $impl/c_out_1[0]
remove_dont_verify_points -type port $impl/c_out_2[3]
remove_dont_verify_points -type port $impl/c_out_2[2]
remove_dont_verify_points -type port $impl/c_out_2[1]
remove_dont_verify_points -type port $impl/c_out_2[0]###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a3/c1
###   Imp: i:/WORK/TopModule/a3/c1
###
set_reference_design      r:/WORK/C_2
set_implementation_design i:/WORK/C_2
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/op_select $ref/op_select
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_constant -type port  $ref/op_select 0
set_constant -type port $impl/op_select 0
set fm_begin_cputime [cputime]
verify
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a3/c1} {i:/WORK/TopModule/a3/c1} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a3/c1} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a3/c1} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/op_select
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_constant -type port  $ref/op_select 
remove_constant -type port $impl/op_select ###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a3/c2
###   Imp: i:/WORK/TopModule/a3/c2
###
set_reference_design      r:/WORK/C_1
set_implementation_design i:/WORK/C_1
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/op_select $ref/op_select
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_constant -type port  $ref/op_select 1
set_constant -type port $impl/op_select 1
set fm_begin_cputime [cputime]
verify
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a3/c2} {i:/WORK/TopModule/a3/c2} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a3/c2} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a3/c2} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/op_select
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_constant -type port  $ref/op_select 
remove_constant -type port $impl/op_select ###
### Verifying instances: 
###   Ref: r:/WORK/TopModule/a3
###   Imp: i:/WORK/TopModule/a3
###
set_reference_design      r:/WORK/A_1
set_implementation_design i:/WORK/A_1
set at_least_one_black_box 0
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3/c1} {i:/WORK/TopModule/a3/c1}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/c1set_black_box $impl/c1set at_least_one_black_box 1set_user_match -type cell $impl/c1 $ref/c1set_user_match -type pin $impl/c1/out[3] $ref/c1/out[3]set_user_match -type pin $impl/c1/out[2] $ref/c1/out[2]set_user_match -type pin $impl/c1/out[1] $ref/c1/out[1]set_user_match -type pin $impl/c1/out[0] $ref/c1/out[0]set_user_match -type pin $impl/c1/op_select $ref/c1/op_selectset_user_match -type pin $impl/c1/input_a[3] $ref/c1/input_a[3]set_user_match -type pin $impl/c1/input_a[2] $ref/c1/input_a[2]set_user_match -type pin $impl/c1/input_a[1] $ref/c1/input_a[1]set_user_match -type pin $impl/c1/input_a[0] $ref/c1/input_a[0]set_user_match -type pin $impl/c1/input_b[3] $ref/c1/input_b[3]set_user_match -type pin $impl/c1/input_b[2] $ref/c1/input_b[2]set_user_match -type pin $impl/c1/input_b[1] $ref/c1/input_b[1]set_user_match -type pin $impl/c1/input_b[0] $ref/c1/input_b[0]set_user_match -type pin $impl/c1/clk $ref/c1/clkset_user_match -type pin $impl/c1/reset $ref/c1/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin  $ref/c1/op_select# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin $impl/c1/op_select
}
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3/c2} {i:/WORK/TopModule/a3/c2}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/c2set_black_box $impl/c2set at_least_one_black_box 1set_user_match -type cell $impl/c2 $ref/c2set_user_match -type pin $impl/c2/out[3] $ref/c2/out[3]set_user_match -type pin $impl/c2/out[2] $ref/c2/out[2]set_user_match -type pin $impl/c2/out[1] $ref/c2/out[1]set_user_match -type pin $impl/c2/out[0] $ref/c2/out[0]set_user_match -type pin $impl/c2/op_select $ref/c2/op_selectset_user_match -type pin $impl/c2/input_a[3] $ref/c2/input_a[3]set_user_match -type pin $impl/c2/input_a[2] $ref/c2/input_a[2]set_user_match -type pin $impl/c2/input_a[1] $ref/c2/input_a[1]set_user_match -type pin $impl/c2/input_a[0] $ref/c2/input_a[0]set_user_match -type pin $impl/c2/input_b[3] $ref/c2/input_b[3]set_user_match -type pin $impl/c2/input_b[2] $ref/c2/input_b[2]set_user_match -type pin $impl/c2/input_b[1] $ref/c2/input_b[1]set_user_match -type pin $impl/c2/input_b[0] $ref/c2/input_b[0]set_user_match -type pin $impl/c2/clk $ref/c2/clkset_user_match -type pin $impl/c2/reset $ref/c2/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin  $ref/c2/op_select# The following matched pin(s) are constant,# therefore need not be verified at this level.set_dont_verify_points -type pin $impl/c2/op_select
}
set_user_match -type port $impl/out[3] $ref/out[3]
set_user_match -type port $impl/out[2] $ref/out[2]
set_user_match -type port $impl/out[1] $ref/out[1]
set_user_match -type port $impl/out[0] $ref/out[0]
set_user_match -type port $impl/input_a[3] $ref/input_a[3]
set_user_match -type port $impl/input_a[2] $ref/input_a[2]
set_user_match -type port $impl/input_a[1] $ref/input_a[1]
set_user_match -type port $impl/input_a[0] $ref/input_a[0]
set_user_match -type port $impl/input_b[3] $ref/input_b[3]
set_user_match -type port $impl/input_b[2] $ref/input_b[2]
set_user_match -type port $impl/input_b[1] $ref/input_b[1]
set_user_match -type port $impl/input_b[0] $ref/input_b[0]
set_user_match -type port $impl/clk $ref/clk
set_user_match -type port $impl/reset $ref/reset
set_dont_match -type port $ref/c_out_1[3]
set_dont_match -type port $ref/c_out_1[2]
set_dont_match -type port $ref/c_out_1[1]
set_dont_match -type port $ref/c_out_1[0]
set_dont_match -type port $ref/c_out_2[3]
set_dont_match -type port $ref/c_out_2[2]
set_dont_match -type port $ref/c_out_2[1]
set_dont_match -type port $ref/c_out_2[0]
set_dont_match -type port $impl/c_out_1[3]
set_dont_match -type port $impl/c_out_1[2]
set_dont_match -type port $impl/c_out_1[1]
set_dont_match -type port $impl/c_out_1[0]
set_dont_match -type port $impl/c_out_2[3]
set_dont_match -type port $impl/c_out_2[2]
set_dont_match -type port $impl/c_out_2[1]
set_dont_match -type port $impl/c_out_2[0]
# The following unmatched port(s) will cause verification failure at higher level if used there,
# therefore need not cause verification failure at this level.
set_dont_verify_points -type port  $ref/c_out_1[3]
set_dont_verify_points -type port  $ref/c_out_1[2]
set_dont_verify_points -type port  $ref/c_out_1[1]
set_dont_verify_points -type port  $ref/c_out_1[0]
set_dont_verify_points -type port  $ref/c_out_2[3]
set_dont_verify_points -type port  $ref/c_out_2[2]
set_dont_verify_points -type port  $ref/c_out_2[1]
set_dont_verify_points -type port  $ref/c_out_2[0]
# The following unmatched port(s) will cause verification failure at higher level if used there,
# therefore need not cause verification failure at this level.
set_dont_verify_points -type port $impl/c_out_1[3]
set_dont_verify_points -type port $impl/c_out_1[2]
set_dont_verify_points -type port $impl/c_out_1[1]
set_dont_verify_points -type port $impl/c_out_1[0]
set_dont_verify_points -type port $impl/c_out_2[3]
set_dont_verify_points -type port $impl/c_out_2[2]
set_dont_verify_points -type port $impl/c_out_2[1]
set_dont_verify_points -type port $impl/c_out_2[0]
set fm_begin_cputime [cputime]
verify
if [expr ($at_least_one_black_box) && \(![string compare $verification_status "FAILED"])] {setupset at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3/c1} {i:/WORK/TopModule/a3/c1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c1remove_black_box $impl/c1remove_user_match -type cell $impl/c1remove_user_match -type pin $impl/c1/out[3]remove_user_match -type pin $impl/c1/out[2]remove_user_match -type pin $impl/c1/out[1]remove_user_match -type pin $impl/c1/out[0]remove_user_match -type pin $impl/c1/op_selectremove_user_match -type pin $impl/c1/input_a[3]remove_user_match -type pin $impl/c1/input_a[2]remove_user_match -type pin $impl/c1/input_a[1]remove_user_match -type pin $impl/c1/input_a[0]remove_user_match -type pin $impl/c1/input_b[3]remove_user_match -type pin $impl/c1/input_b[2]remove_user_match -type pin $impl/c1/input_b[1]remove_user_match -type pin $impl/c1/input_b[0]remove_user_match -type pin $impl/c1/clkremove_user_match -type pin $impl/c1/resetremove_dont_verify_points -type pin  $ref/c1/op_selectremove_dont_verify_points -type pin $impl/c1/op_select}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3/c2} {i:/WORK/TopModule/a3/c2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c2remove_black_box $impl/c2remove_user_match -type cell $impl/c2remove_user_match -type pin $impl/c2/out[3]remove_user_match -type pin $impl/c2/out[2]remove_user_match -type pin $impl/c2/out[1]remove_user_match -type pin $impl/c2/out[0]remove_user_match -type pin $impl/c2/op_selectremove_user_match -type pin $impl/c2/input_a[3]remove_user_match -type pin $impl/c2/input_a[2]remove_user_match -type pin $impl/c2/input_a[1]remove_user_match -type pin $impl/c2/input_a[0]remove_user_match -type pin $impl/c2/input_b[3]remove_user_match -type pin $impl/c2/input_b[2]remove_user_match -type pin $impl/c2/input_b[1]remove_user_match -type pin $impl/c2/input_b[0]remove_user_match -type pin $impl/c2/clkremove_user_match -type pin $impl/c2/resetremove_dont_verify_points -type pin  $ref/c2/op_selectremove_dont_verify_points -type pin $impl/c2/op_select}verify
}
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule/a3} {i:/WORK/TopModule/a3} $verification_status]
set fm_failure_comment ""
if [expr (![string compare $verification_status "FAILED"])] {set fm_failure_comment " (may be resolved in the parent level verification)"
}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s%s:" $verification_status $fm_failure_comment}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (instance of %s)" {r:/WORK/TopModule/a3} $ref}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (instance of %s)" {i:/WORK/TopModule/a3} $impl}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
if [expr ($at_least_one_black_box)] {set at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3/c1} {i:/WORK/TopModule/a3/c1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c1remove_black_box $impl/c1remove_user_match -type cell $impl/c1remove_user_match -type pin $impl/c1/out[3]remove_user_match -type pin $impl/c1/out[2]remove_user_match -type pin $impl/c1/out[1]remove_user_match -type pin $impl/c1/out[0]remove_user_match -type pin $impl/c1/op_selectremove_user_match -type pin $impl/c1/input_a[3]remove_user_match -type pin $impl/c1/input_a[2]remove_user_match -type pin $impl/c1/input_a[1]remove_user_match -type pin $impl/c1/input_a[0]remove_user_match -type pin $impl/c1/input_b[3]remove_user_match -type pin $impl/c1/input_b[2]remove_user_match -type pin $impl/c1/input_b[1]remove_user_match -type pin $impl/c1/input_b[0]remove_user_match -type pin $impl/c1/clkremove_user_match -type pin $impl/c1/resetremove_dont_verify_points -type pin  $ref/c1/op_selectremove_dont_verify_points -type pin $impl/c1/op_select}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3/c2} {i:/WORK/TopModule/a3/c2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/c2remove_black_box $impl/c2remove_user_match -type cell $impl/c2remove_user_match -type pin $impl/c2/out[3]remove_user_match -type pin $impl/c2/out[2]remove_user_match -type pin $impl/c2/out[1]remove_user_match -type pin $impl/c2/out[0]remove_user_match -type pin $impl/c2/op_selectremove_user_match -type pin $impl/c2/input_a[3]remove_user_match -type pin $impl/c2/input_a[2]remove_user_match -type pin $impl/c2/input_a[1]remove_user_match -type pin $impl/c2/input_a[0]remove_user_match -type pin $impl/c2/input_b[3]remove_user_match -type pin $impl/c2/input_b[2]remove_user_match -type pin $impl/c2/input_b[1]remove_user_match -type pin $impl/c2/input_b[0]remove_user_match -type pin $impl/c2/clkremove_user_match -type pin $impl/c2/resetremove_dont_verify_points -type pin  $ref/c2/op_selectremove_dont_verify_points -type pin $impl/c2/op_select}
}
remove_user_match -type port $impl/out[3]
remove_user_match -type port $impl/out[2]
remove_user_match -type port $impl/out[1]
remove_user_match -type port $impl/out[0]
remove_user_match -type port $impl/input_a[3]
remove_user_match -type port $impl/input_a[2]
remove_user_match -type port $impl/input_a[1]
remove_user_match -type port $impl/input_a[0]
remove_user_match -type port $impl/input_b[3]
remove_user_match -type port $impl/input_b[2]
remove_user_match -type port $impl/input_b[1]
remove_user_match -type port $impl/input_b[0]
remove_user_match -type port $impl/clk
remove_user_match -type port $impl/reset
remove_dont_match -type port $ref/c_out_1[3]
remove_dont_match -type port $ref/c_out_1[2]
remove_dont_match -type port $ref/c_out_1[1]
remove_dont_match -type port $ref/c_out_1[0]
remove_dont_match -type port $ref/c_out_2[3]
remove_dont_match -type port $ref/c_out_2[2]
remove_dont_match -type port $ref/c_out_2[1]
remove_dont_match -type port $ref/c_out_2[0]
remove_dont_match -type port $impl/c_out_1[3]
remove_dont_match -type port $impl/c_out_1[2]
remove_dont_match -type port $impl/c_out_1[1]
remove_dont_match -type port $impl/c_out_1[0]
remove_dont_match -type port $impl/c_out_2[3]
remove_dont_match -type port $impl/c_out_2[2]
remove_dont_match -type port $impl/c_out_2[1]
remove_dont_match -type port $impl/c_out_2[0]
remove_dont_verify_points -type port  $ref/c_out_1[3]
remove_dont_verify_points -type port  $ref/c_out_1[2]
remove_dont_verify_points -type port  $ref/c_out_1[1]
remove_dont_verify_points -type port  $ref/c_out_1[0]
remove_dont_verify_points -type port  $ref/c_out_2[3]
remove_dont_verify_points -type port  $ref/c_out_2[2]
remove_dont_verify_points -type port  $ref/c_out_2[1]
remove_dont_verify_points -type port  $ref/c_out_2[0]
remove_dont_verify_points -type port $impl/c_out_1[3]
remove_dont_verify_points -type port $impl/c_out_1[2]
remove_dont_verify_points -type port $impl/c_out_1[1]
remove_dont_verify_points -type port $impl/c_out_1[0]
remove_dont_verify_points -type port $impl/c_out_2[3]
remove_dont_verify_points -type port $impl/c_out_2[2]
remove_dont_verify_points -type port $impl/c_out_2[1]
remove_dont_verify_points -type port $impl/c_out_2[0]###
### Verifying instances: 
###   Ref: r:/WORK/TopModule
###   Imp: i:/WORK/TopModule
###
set_reference_design      r:/WORK/TopModule
set_implementation_design i:/WORK/TopModule
set at_least_one_black_box 0
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1} {i:/WORK/TopModule/a1}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/a1set_black_box $impl/a1set at_least_one_black_box 1set_user_match -type cell $impl/a1 $ref/a1set_user_match -type pin $impl/a1/out[3] $ref/a1/out[3]set_user_match -type pin $impl/a1/out[2] $ref/a1/out[2]set_user_match -type pin $impl/a1/out[1] $ref/a1/out[1]set_user_match -type pin $impl/a1/out[0] $ref/a1/out[0]set_user_match -type pin $impl/a1/input_a[3] $ref/a1/input_a[3]set_user_match -type pin $impl/a1/input_a[2] $ref/a1/input_a[2]set_user_match -type pin $impl/a1/input_a[1] $ref/a1/input_a[1]set_user_match -type pin $impl/a1/input_a[0] $ref/a1/input_a[0]set_user_match -type pin $impl/a1/input_b[3] $ref/a1/input_b[3]set_user_match -type pin $impl/a1/input_b[2] $ref/a1/input_b[2]set_user_match -type pin $impl/a1/input_b[1] $ref/a1/input_b[1]set_user_match -type pin $impl/a1/input_b[0] $ref/a1/input_b[0]set_user_match -type pin $impl/a1/clk $ref/a1/clkset_user_match -type pin $impl/a1/reset $ref/a1/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {
}
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2} {i:/WORK/TopModule/a2}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/a2set_black_box $impl/a2set at_least_one_black_box 1set_user_match -type cell $impl/a2 $ref/a2set_user_match -type pin $impl/a2/out[3] $ref/a2/out[3]set_user_match -type pin $impl/a2/out[2] $ref/a2/out[2]set_user_match -type pin $impl/a2/out[1] $ref/a2/out[1]set_user_match -type pin $impl/a2/out[0] $ref/a2/out[0]set_user_match -type pin $impl/a2/input_a[3] $ref/a2/input_a[3]set_user_match -type pin $impl/a2/input_a[2] $ref/a2/input_a[2]set_user_match -type pin $impl/a2/input_a[1] $ref/a2/input_a[1]set_user_match -type pin $impl/a2/input_a[0] $ref/a2/input_a[0]set_user_match -type pin $impl/a2/input_b[3] $ref/a2/input_b[3]set_user_match -type pin $impl/a2/input_b[2] $ref/a2/input_b[2]set_user_match -type pin $impl/a2/input_b[1] $ref/a2/input_b[1]set_user_match -type pin $impl/a2/input_b[0] $ref/a2/input_b[0]set_user_match -type pin $impl/a2/clk $ref/a2/clkset_user_match -type pin $impl/a2/reset $ref/a2/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {
}
set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3} {i:/WORK/TopModule/a3}]
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {set_black_box  $ref/a3set_black_box $impl/a3set at_least_one_black_box 1set_user_match -type cell $impl/a3 $ref/a3set_user_match -type pin $impl/a3/out[3] $ref/a3/out[3]set_user_match -type pin $impl/a3/out[2] $ref/a3/out[2]set_user_match -type pin $impl/a3/out[1] $ref/a3/out[1]set_user_match -type pin $impl/a3/out[0] $ref/a3/out[0]set_user_match -type pin $impl/a3/input_a[3] $ref/a3/input_a[3]set_user_match -type pin $impl/a3/input_a[2] $ref/a3/input_a[2]set_user_match -type pin $impl/a3/input_a[1] $ref/a3/input_a[1]set_user_match -type pin $impl/a3/input_a[0] $ref/a3/input_a[0]set_user_match -type pin $impl/a3/input_b[3] $ref/a3/input_b[3]set_user_match -type pin $impl/a3/input_b[2] $ref/a3/input_b[2]set_user_match -type pin $impl/a3/input_b[1] $ref/a3/input_b[1]set_user_match -type pin $impl/a3/input_b[0] $ref/a3/input_b[0]set_user_match -type pin $impl/a3/clk $ref/a3/clkset_user_match -type pin $impl/a3/reset $ref/a3/reset
}
if [expr true] {
}
if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {
}
set fm_begin_cputime [cputime]
verify
if [expr ($at_least_one_black_box) && \(![string compare $verification_status "FAILED"])] {setupset at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1} {i:/WORK/TopModule/a1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/a1remove_black_box $impl/a1remove_user_match -type cell $impl/a1remove_user_match -type pin $impl/a1/out[3]remove_user_match -type pin $impl/a1/out[2]remove_user_match -type pin $impl/a1/out[1]remove_user_match -type pin $impl/a1/out[0]remove_user_match -type pin $impl/a1/input_a[3]remove_user_match -type pin $impl/a1/input_a[2]remove_user_match -type pin $impl/a1/input_a[1]remove_user_match -type pin $impl/a1/input_a[0]remove_user_match -type pin $impl/a1/input_b[3]remove_user_match -type pin $impl/a1/input_b[2]remove_user_match -type pin $impl/a1/input_b[1]remove_user_match -type pin $impl/a1/input_b[0]remove_user_match -type pin $impl/a1/clkremove_user_match -type pin $impl/a1/reset}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2} {i:/WORK/TopModule/a2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/a2remove_black_box $impl/a2remove_user_match -type cell $impl/a2remove_user_match -type pin $impl/a2/out[3]remove_user_match -type pin $impl/a2/out[2]remove_user_match -type pin $impl/a2/out[1]remove_user_match -type pin $impl/a2/out[0]remove_user_match -type pin $impl/a2/input_a[3]remove_user_match -type pin $impl/a2/input_a[2]remove_user_match -type pin $impl/a2/input_a[1]remove_user_match -type pin $impl/a2/input_a[0]remove_user_match -type pin $impl/a2/input_b[3]remove_user_match -type pin $impl/a2/input_b[2]remove_user_match -type pin $impl/a2/input_b[1]remove_user_match -type pin $impl/a2/input_b[0]remove_user_match -type pin $impl/a2/clkremove_user_match -type pin $impl/a2/reset}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3} {i:/WORK/TopModule/a3}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/a3remove_black_box $impl/a3remove_user_match -type cell $impl/a3remove_user_match -type pin $impl/a3/out[3]remove_user_match -type pin $impl/a3/out[2]remove_user_match -type pin $impl/a3/out[1]remove_user_match -type pin $impl/a3/out[0]remove_user_match -type pin $impl/a3/input_a[3]remove_user_match -type pin $impl/a3/input_a[2]remove_user_match -type pin $impl/a3/input_a[1]remove_user_match -type pin $impl/a3/input_a[0]remove_user_match -type pin $impl/a3/input_b[3]remove_user_match -type pin $impl/a3/input_b[2]remove_user_match -type pin $impl/a3/input_b[1]remove_user_match -type pin $impl/a3/input_b[0]remove_user_match -type pin $impl/a3/clkremove_user_match -type pin $impl/a3/reset}verify
}
set fm_end_cputime [cputime]
set fm_this_verification_cputime [expr $fm_end_cputime - $fm_begin_cputime]
set fm_cumulative_memory [expr [memory] / 1000]
set fm_tmp_result_count [expr $fm_tmp_result_count + 1]
set fm_hier_result_array($fm_tmp_result_count) [list {r:/WORK/TopModule} {i:/WORK/TopModule} $verification_status]
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  "}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "Verification %s:" $verification_status}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Ref: %s (top)" {r:/WORK/TopModule}}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Imp: %s (top)" {i:/WORK/TopModule}}
redirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  %s, %4.0fMB (cumulative), %7.2fsec (incremental)" [date] $fm_cumulative_memory $fm_this_verification_cputime}
if [expr (![string compare $verification_status "INCONCLUSIVE"]) && \($fm_session_files_saved < $fm_save_file_limit) && \($fm_this_verification_cputime >= $fm_save_time_limit)] {save_session -replace /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fsslappend fm_hier_result_array($fm_tmp_result_count) /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fssredirect -append /home/zhangchen/Desktop/test1/fm_hier.log {format "  Session file: /home/zhangchen/Desktop/test1/fm_hier.tcl.$fm_tmp_result_count.fss"}set fm_session_files_saved [expr $fm_session_files_saved + 1]
}
setup
if [expr ($at_least_one_black_box)] {set at_least_one_black_box 0set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a1} {i:/WORK/TopModule/a1}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/a1remove_black_box $impl/a1remove_user_match -type cell $impl/a1remove_user_match -type pin $impl/a1/out[3]remove_user_match -type pin $impl/a1/out[2]remove_user_match -type pin $impl/a1/out[1]remove_user_match -type pin $impl/a1/out[0]remove_user_match -type pin $impl/a1/input_a[3]remove_user_match -type pin $impl/a1/input_a[2]remove_user_match -type pin $impl/a1/input_a[1]remove_user_match -type pin $impl/a1/input_a[0]remove_user_match -type pin $impl/a1/input_b[3]remove_user_match -type pin $impl/a1/input_b[2]remove_user_match -type pin $impl/a1/input_b[1]remove_user_match -type pin $impl/a1/input_b[0]remove_user_match -type pin $impl/a1/clkremove_user_match -type pin $impl/a1/reset}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a2} {i:/WORK/TopModule/a2}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/a2remove_black_box $impl/a2remove_user_match -type cell $impl/a2remove_user_match -type pin $impl/a2/out[3]remove_user_match -type pin $impl/a2/out[2]remove_user_match -type pin $impl/a2/out[1]remove_user_match -type pin $impl/a2/out[0]remove_user_match -type pin $impl/a2/input_a[3]remove_user_match -type pin $impl/a2/input_a[2]remove_user_match -type pin $impl/a2/input_a[1]remove_user_match -type pin $impl/a2/input_a[0]remove_user_match -type pin $impl/a2/input_b[3]remove_user_match -type pin $impl/a2/input_b[2]remove_user_match -type pin $impl/a2/input_b[1]remove_user_match -type pin $impl/a2/input_b[0]remove_user_match -type pin $impl/a2/clkremove_user_match -type pin $impl/a2/reset}set tmp_verification_status [get_verification_status {r:/WORK/TopModule/a3} {i:/WORK/TopModule/a3}]if [expr ((![string compare $tmp_verification_status "SUCCEEDED"]) || \(![string compare $tmp_verification_status "INCONCLUSIVE"]))] {remove_black_box  $ref/a3remove_black_box $impl/a3remove_user_match -type cell $impl/a3remove_user_match -type pin $impl/a3/out[3]remove_user_match -type pin $impl/a3/out[2]remove_user_match -type pin $impl/a3/out[1]remove_user_match -type pin $impl/a3/out[0]remove_user_match -type pin $impl/a3/input_a[3]remove_user_match -type pin $impl/a3/input_a[2]remove_user_match -type pin $impl/a3/input_a[1]remove_user_match -type pin $impl/a3/input_a[0]remove_user_match -type pin $impl/a3/input_b[3]remove_user_match -type pin $impl/a3/input_b[2]remove_user_match -type pin $impl/a3/input_b[1]remove_user_match -type pin $impl/a3/input_b[0]remove_user_match -type pin $impl/a3/clkremove_user_match -type pin $impl/a3/reset}
}if [info exists fm_write_hier_saved_vars] {foreach _var [array names fm_write_hier_saved_vars] {set $_var $fm_write_hier_saved_vars($_var)};unset fm_write_hier_saved_vars
}###
### Report results
###
set fm_hier_result_count $fm_tmp_result_count
set fm_log_fp [open /home/zhangchen/Desktop/test1/fm_hier.log]
puts [read $fm_log_fp]
close $fm_log_fp

相关文章:

Formality:参考设计/实现设计以及顶层设计

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482​​​ Formality存在两个重要的概念&#xff1a;参考设计/实现设计和顶层设计&#xff0c;本文就将对此进行详细阐述。参考设计/实现设计是中两个重要的全局概念&am…...

RPA赋能内容创作:打造小红书入门词语图片的全自动化流程

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 用RPA全自动化批量生产【入门词语】图片做小红书商单&#xff0c;保姆级工具开发教程 最近由…...

RPC 源码解析~Apache Dubbo

解析 RPC&#xff08;远程过程调用&#xff09;的源码可以帮助你深入理解其工作原理和实现细节。为了更好地进行源码解析&#xff0c;我们选择一个流行的 RPC 框架——Apache Dubbo 作为示例。Dubbo 是一个高性能、轻量级的开源 Java RPC 框架&#xff0c;广泛应用于企业级应用…...

VS Code--常用的插件

原文网址&#xff1a;VS Code--常用的插件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍VS Code&#xff08;Visual Studio Code&#xff09;常用的插件。 插件的配置 默认情况下&#xff0c;插件会放到这里&#xff1a;C:\Users\xxx\.vscode\extensions 修改插件位置的方法 …...

深度学习 Pytorch 张量的索引、分片、合并以及维度调整

张量作为有序的序列&#xff0c;也是具备数值索引的功能&#xff0c;并且基本索引方法和python原生的列表、numpy中的数组基本一致。 不同的是&#xff0c;pytorch中还定义了一种采用函数来进行索引的方式。 作为pytorch中的基本数据类型&#xff0c;张量既具备了列表、数组的基…...

神州数码--制作wifi

防火墙: #ip vrouter trust-vr#router ospf 1#router-id 8.8.8.8#network 10.0.0.0/30 area 0.0.0.0#network 10.0.0.4/30 area 0.0.0.0#network 10.0.0.8/30 area 0.0.0.0 交换机&#xff1a; #vlan 10;50#ip add 192.168.10.1 255.255.255.0#int vlan 50#ip add 192.168.50.…...

Web前端开发技术之HTMLCSS知识点总结

学习路线 一、新闻网界面1. 代码示例2. 效果展示3. 知识点总结3.1 HTML标签和字符实体3.2 超链接、颜色描述与标题元素3.3 关于图片和视频标签&#xff1a;3.4 CSS引入方式3.5 CSS选择器优先级 二、flex布局1. 代码示例2. 效果展示3. 知识点总结3.1 span标签和flex容器的区别3.…...

客户案例:致远OA与携程商旅集成方案

一、前言 本项目原型客户公司创建于1992年,主要生产并销售包括糖果系列、巧克力系列、烘焙系列、卤制品系列4大类,200多款产品。公司具有行业领先的生产能力,拥有各类生产线100条,年产能超过10万吨。同时,经过30年的发展,公司积累了完善的销售网络,核心经销商已经超过1200个,超…...

【常见BUG】Spring Boot 和 Springfox(Swagger)版本兼容问题

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

【Python】FastAPI入门

文章目录 第一节&#xff1a;FastAPI入门一、FastAPI框架介绍什么是ASGI服务&#xff08;WSGI&#xff09;1、补充Web开发1&#xff09;Web前端开发2&#xff09;Web后端开发 二、FastAPI安装1、安装Python虚拟环境2、安装FastAPI 三、第一个FastAPI案例1、访问接口和文档2、接…...

JavaScript系列(32)-- WebAssembly集成详解

JavaScript WebAssembly集成详解 &#x1f680; 今天&#xff0c;让我们深入了解JavaScript与WebAssembly的集成&#xff0c;这是一项能够显著提升Web应用性能的关键技术。 WebAssembly基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff1a;WebAssembly&#xff08;简称W…...

wps数据分析000002

目录 一、快速定位技巧 二、快速选中技巧 全选 选中部分区域 选中部分区域&#xff08;升级版&#xff09; 三、快速移动技巧 四、快速录入技巧 五、总结 一、快速定位技巧 ctrl→&#xff08;上下左右&#xff09;快速定位光标对准单元格的上下部分双击名称单元格中…...

无降智o1 pro——一次特别的ChatGPT专业模式探索

这段时间和朋友们交流 ChatGPT 的使用心得&#xff0c;大家都提到一个很“神秘”的服务&#xff1a;它基于 O1 Pro 模型&#xff0c;能够在对话里一直保持相对高水平的理解和回复&#xff0c;不会突然变得“降智”。同时&#xff0c;整体使用还做了免折腾的网络设置——简单一点…...

前端:前端开发任务分解 / 开发清单

一、背景 前端开发过程中&#xff0c;好多任务同时开发&#xff0c;或者一个大的任务分解为若干个子任务进行开发&#xff0c;分解出去的很多内容容易记不清楚 / 不易过程管理&#xff0c;所以记录表格如下&#xff0c;方便开发同事&#xff0c;也辅助掌握整体开发情况。 二、…...

【Django自学】Django入门:如何使用django开发一个web项目(非常详细)

测试机器&#xff1a;windows11 x64 python版本&#xff1a;3.11 一、安装Django 安装步骤非常简单&#xff0c;使用pip安装就行 pip install django安装完成之后&#xff0c;python的 Scripts 文件夹下&#xff0c;会多一个 django-admin.exe (管理创建django项目的工具)。…...

面试经验分享-回忆版某小公司

说说你项目中数据仓库是怎么分层的&#xff0c;为什么要分层&#xff1f; 首先是ODS层&#xff0c;连接数据源和数据仓库&#xff0c;数据会进行简单的ETL操作&#xff0c;数据来源通常是业务数据库&#xff0c;用户日志文件或者来自消息队列的数据等 中间是核心的数据仓库层&a…...

WebSocket——推送方案选型

一、前言&#xff1a;为何需要服务端主动推送&#xff1f; 在现代应用中&#xff0c;很多功能都依赖于“消息推送”。比如&#xff1a; 小红点提醒&#xff1a;我们经常在手机应用里看到的一个小红点提示&#xff0c;表示有新的消息或任务需要我们关注。新消息提醒&#xff1…...

山石防火墙命令行配置示例

现网1台山石SG6000防火墙&#xff0c;配置都可以通过GUI实现。 但有一些配置在命令行下配置效率更高&#xff0c;比如在1个已有策略中添加1个host或端口。 下面的双引号可以不加 1 创建服务 1.1 单个端口 service "tcp-901"tcp dst-port 901 1.2 端口范围 servi…...

LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145185794 Scaling Laws (缩放法则) 是大模型领域中&#xff0c;用于描述 模型性能(Loss) 与 模型规模N、数据量D、计算资源C 之间关系的经验规律…...

Leetcode 983. 最低票价 动态规划

原题链接&#xff1a;Leetcode 983. 最低票价 class Solution { public:int mincostTickets(vector<int>& days, vector<int>& costs) {int n days.size();int last days[n - 1];int dp[last 1];map<int, int> mp;for (auto x : days)mp[x] 1;dp…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...