zoukankan      html  css  js  c++  java
  • verdi知识点

    引用:http://blog.csdn.net/naclkcl9/article/details/5425936

    1. verdi 加强了active anotation, active trace和trace this value的能力,并且引入了Temperal flow view。在trace X的时侯面对很多选项,推举的快速定位的方法是:

       1) 找出来自于信号源的明显的错误,譬如(uninitialize,setup, hold time voilation, no drivers)

             •Stop at black box output signal (ON)
             • Stop at fanin that is X but no transition in its last cycle (OFF)
             • Snap to value change and continue (ON)  -----------找出第一个X

             // 尽量放开了跑,遇到黑盒子才停止。

       2) 准确找出active X源

             • Stop at black box output signal (ON)
             • Stop at fanin that is X but no transition in its last cycle (ON)  -----找出从此向前来源是固定的X(activeX)

             • Snap to value change and continue (OFF)

       3) 设置number of cause

             • Use the default setting : Stop after finding 1 cause

              • 如果遇到很多类似的cause,那么设为trace all causes

    2. 当碰到ntrace和fsdb的hierarchy层次不一样时,不能联动。解决方案 set virtual top

        vritual top/map file:         CPU = system.i_cpu

    3. 在VMM中引入fsdbLog

    1. `ifdef FSDB  
    2. class log2fsdb extends vmm_log_format;   
    3.     virtual function string format_msg(string name, string inst, string msg_typ, string severity, ref string lines[$]);   
    4.          string text = "";   
    5.          string stream = $psprintf("%s(%s)", name, inst);  
    6.          string label = $psprintf("%s[%s]", severity, msg_typ);   
    7.          foreach(lines[i]) text = {text, "/n", lines[i]};   
    8.          $fsdbLog(label, text, , stream );   
    9.          format_msg = super.format_msg(name, inst, msg_typ, severity, lines);   
    10.     endfunction  
    11. endclass  
    12. `endif  
    13. `ifdef FSDB   
    14.        if($test$plusargs("fsdb=")) begin   
    15.            log2fsdb l2f = new;   
    16.            this.log.set_format(l2f);   
    17.        end   
    18. `endif  

    4. 波形比较找出mismatch point, 然后在定位发生mismatch的原因

    如果是相同的design view,    Waveform. comparison -> behavior. trace for fsdb mismatch 

       ---》 适合RTL和RTL的比较,定位引起错误的源头

    如果是不同的design view,    Waveform. comparison -> Trace this value in flow view for different design

    5. 利用siloti减少波形记录文件大小,进而加快仿真速度

    步骤如下:

        1. 生成主要信号的列表文件

          esa -bas tb_CPUsystem -f run.f -all_eslist fullchip.list

          //  -bas 指明了work scope,即一旦design 加载就立刻进行behavior. analyse的范围

          //  -all_eslist 指明了生成 hierachy 和 plain list 两种形式的信号列表文件

         2. dump 主要信号的波形

          • $fsdbDumpfile("ess.fsdb");
          • $fsdbDumpvarsToFile("fullchip.list");

         3. 启动verdi,在必要时打开visibility的相关选项

             Tools -> Visibility -> Data Expansion -> Enable Data Expansion

    6. ntrace 可以吃进prime time 的STA report 文件并自动将其转为XML文件,用以形象的debug timing的关键路径为何出现问题

              File -> Import Path Data File -> Select the violate_path.rpt    

             • Show this path on nSchema
             • Show this path on File Viewer
             • D&D the 42.860 delay from File Viewer into nSchema
             • Debug the reason of this huge delay on schematic window
             • Tools-> New Schematic ->Connectivity

    7. 当gate level和rtl level 的波形不一致时可以采用“trace triggering path,based on transition,来找到由于时序问题产生错误的根源”

             steps:

             1. compare rtl and gate simulation mismatch,以gate wave form. 为主导

             2. 在产生变化的地方(transition发生处),产生TFV

             3. trace triggering path 并设为stop at Register Boundary

             4. 找到源头后,ctrl+K把clock放入waveform中加以分析。

    8.  如何dump assertion的波形

    1. vcs +vpi /  
    2.     -sverilog /  
    3.     -Mupdat /  
    4.     -assert enable_diag /  
    5.     -assert vpiSeqBeginTime /  
    6.     -assert vpiSeqFail /  
    7.     +systemverilogext+.sv+.SV+ /  
    8.     -l vcs.log /  
    9.     -f run.f  
    10. +vpi 和 -sverilog是不能缺少的。 -assert enable_diag  指出可以进一步的通过runtime option来控制systemverilog assertion  
    11. -assert vpiSeqBeginTime 指 出允许debussy显示assertion sequence开始的时间, -assert vpiSeqFail 指出允许debussy显示 assertion fail时对应的simulation time。  
    12. ./simv +vcs+lic+wait -assert success -s -i ./sim_sva_fsdb.do -l ./simv.log   
    13. -assert success  指出不仅仅报告失败,还指出成功的次数。  
    14. //===========sim_sva_fsdb.do 内容如下==========  
    15. $fsdbDumpfile("sv.fsdb")  
    16. $fsdbDumpSVA  
    17. $fsdbDumpvars 0 system  
    18. tbreak #12500ns  
    19. continue  
    20. quit  
    21. //=============================================  
    22. 其实一般都是用最简单的方法,即在testbench中加入   
    23. initial  
    24.    begin  
    25.         $fsdbDumpfile("sv.fsdb");  
    26.         $fsdbDumpSVA;  
    27.         $fsdbDumpvars(0, system, "+all");  
    28.         #12500 $finish;  
    29.    end  
    30. 然后直接用simv -assert success -l ./simv.log 就行了。  

    verdi 的assertion evaluation组件还能自动推算出修改或新增的assertion的行为,主要是在property tools界面下启动evaluator,然后修改store to all。就能自动推算出新的assertion,并生成新的波形文件。

    9. Import SVTB with VMM library

        1) 用户用自己的VMM library

              verdi –sv –f run.f +incdir+your_vcs_vmm_library_path

        2) 用户没有VMM library

              verdi –sv –f run.f -ntb_opts vmm

    10. Import SVTB with OVM library

            1.) 在源代码中加入 `include "ovm.svh"

            2.) verdi -sv -f run.f +incdir+${IUS81_HOME}/tools/ovm/src +define+INCA -ignorekwd_config

    11. 现在很多verilog 的filelist 文件中用如下形式来指定文件所在的目录就行了,而不必指定具体文件

                   

    1. ./testbench/ppc460_PLB4/p464s_test_top_tb.v  
    2. ../hdl/p460s_defines.v  
    3. +incdir+$SYNOPSYS/dw/sim_ver  
    4. +incdir+./vera/ver_shell/ppc460_PLB4  
    5. +incdir+./testbench/ppc460_PLB4  
    6. +incdir+./testbench/IBM_models/DCR3X  
    7. -y ../hdl  
    8. -y ../hdl/CPU  
    9. -y ../hdl/SYNC4  
    10. -y ../hdl/behav_models/custom  
    11. -y ../hdl/behav_models/rams  
    12. -y $SYNOPSYS/dw/sim_ver  
    13. -y ./testbench/ppc460_PLB4  
    14. -y ./vera/ver_shell/ppc460_PLB4  
    15. -y ./testbench/IBM_models/DCR3X  
    16. +libext+.v  
    17. +define+VCS_DUMPON=1  

    上 面通过-y 指定library目录, +libext+.v指定library后缀名。 有时候还用-v 来指定library文件。但是这样直接被verdi吃进去以后不能显示hierarchy和文件。verdi提供了解决的办法:   -ssy  (用来取消-y指定的library为library cell)     -ssv (用来取消-v 指定的library为library cell)

                   

    1. ./testbench/ppc460_PLB4/p464s_test_top_tb.v  
    2. ../hdl/p460s_defines.v  
    3. -ssy  
    4. -ssv  
    5. +incdir+$SYNOPSYS/dw/sim_ver  
    6. +incdir+./vera/ver_shell/ppc460_PLB4  
    7. +incdir+./testbench/ppc460_PLB4  
    8. +incdir+./testbench/IBM_models/DCR3X  
    9. -y ../hdl  
    10. -y ../hdl/CPU  
    11. -y ../hdl/SYNC4  
    12. -y ../hdl/behav_models/custom  
    13. -y ../hdl/behav_models/rams  
    14. -y $SYNOPSYS/dw/sim_ver  
    15. -y ./testbench/ppc460_PLB4  
    16. -y ./vera/ver_shell/ppc460_PLB4  
    17. -y ./testbench/IBM_models/DCR3X  
    18. +libext+.v  
    19. +define+VCS_DUMPON=1  

    12.  新的fsdb dumper 的应用

    Verdi 從2010.04之後提供全新架構的FSDB PLI。新的FSDB PLI針對System Verilog有更完整的support,有比較好的performance。另外也支援同時dump不同的fsdb檔案。

    1. Synopsys VCS simulator link新dumper的方式:  
    2. Set share library path  
    3. setenv LD_LIBRARY_PATH ${NOVAS_INSTDIR}/share/PLI/VCS/${PLATFORM}  
    4. Compile design and run simulation  
    5. vcs –f run.f -debug_pp +vcsd +vpi -P ${NOVAS_INSTDIR}/share/PLI/VCS/${PLATFORM}/novas.tab /  
    6. ${NOVAS_INSTDIR}/share/PLI/VCS/${PLATFORM}/pli.a  

    現在已經可以在new dumper上,以parallel dumping的方式來加快dump fsdb的速度。使用方法就是在執行simulation的指令上,加上+fsdb+parallel的參數。例如:

    For VCS==> simv <+original_options> +fsdb+parallel
    For IUS==> irun <+original_options> +fsdb+parallel

    什麼是「-debug_pp」?

    1. VCS的debug options有三個levels:-debug_all、-debug、-debug_pp。

    2. -debug_pp是三種level當中,performance最好的。

    3. -debug_pp是+memcbk, +vcsd, +vpi, -ucli 這些options的集合。

  • 相关阅读:
    元素查找
    合并果子 2004年NOIP全国联赛普及组
    队列练习1,2,3
    山峰
    栈练习1,2,3
    天使之城
    括号序列
    布尔表达式
    逆波兰表达式
    旅行家的预算 1999年NOIP全国联赛普及组NOIP全国联赛提高组
  • 原文地址:https://www.cnblogs.com/chip/p/4844447.html
Copyright © 2011-2022 走看看