虽然是ic前端设计,但无奈人手不够,也需要了解一下中端后端流程。特此记录。
其中set synopsys_auto_setup true和下面一条的命令的效果应该是一样的 分别是调用svf内记录的dc优化点(大多是dc自动插入门控时钟)和忽略门控时钟的分析。
match阶段会有LATCG的mismatch,点开分析一下均为门控时钟的寄存器,可以无视,verify成功就可以了。
#Set var
set filelist "fm_filelist.f"
set refFiles {}
for {set f [open $filelist r];} {[gets $f line]!=-1} {;} {
lappend refFiles $line ; # get the names in filelist and turn into a list
}
close $f
set basename TOP; # Top module name ****FIX HERE****
set dirname ../syn/mapped; # MAPPED file directory
set svfname ${dirname}/$basename.svf
set ntlname ${dirname}/netlist.v
# 0.Guid.
set synopsys_auto_setup true
set verification_clock_gate_edge_analysis true
set_svf -append ${svfname}
# 1.ref.
read_sverilog -container r -libname WORK -12 ${refFiles}
# set_mismatch_message_filter -suppress {FMR_ELAB-147 FMR_ELAB-117}
read_db {...db}
set_top r:/WORK/$basename
# 2.impl
read_verilog -container i -libname WORK -05 ${ntlname}
read_db {...db}
set_top i:/WORK/$basename
# 4.match
match
# 5.verify
verify