引用: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的集合。

verdi知识点的更多相关文章

  1. verdi\debussy的使用技巧

    verdi\debussy的使用技巧 转载from 大西瓜FPGA 大西瓜FPGA-->https://daxiguafpga.taobao.com fsdb display Debussy本身 ...

  2. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  3. ASP.NET MVC开发:Web项目开发必备知识点

    最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...

  4. UWP开发必备以及常用知识点总结

    一直在学UWP,一直在写Code,自己到达了什么水平?还有多少东西需要学习才能独挡一面?我想对刚接触UWP的开发者都有这种困惑,偶尔停下来总结分析一下还是很有收获的! 以下内容是自己开发中经常遇到的一 ...

  5. C#高级知识点&(ABP框架理论学习高级篇)——白金版

    前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...

  6. lucene 基础知识点

    部分知识点的梳理,参考<lucene实战>及网络资料 1.基本概念 lucence 可以认为分为两大组件: 1)索引组件 a.内容获取:即将原始的内容材料,可以是数据库.网站(爬虫).文本 ...

  7. DoraCMS 源码知识点备注

    项目需要研究了下DoraCMS这款开源CMS,真心做的不错:).用的框架是常用的express 4 + mongoose,代码也很规范,值得学习. 源码中一些涉及到的小知识点备注下: https:// ...

  8. atitit 商业项目常用模块技术知识点 v3 qc29

    atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...

  9. HTML5知识点总结

    HTML5知识点总结(一) 一.HTML新增元素 1.IE9版本以下支持HTML5的方法 <!--[if lt IE9]> <script src="http://cdn. ...

随机推荐

  1. JDBC连接池一 自定义连接池

    package com.mozq.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.Conne ...

  2. java数据结构----队列,优先级队列

    1.队列:和栈中的情况不同,队列中的数据项不总是从数组下标0开始,移除一个数据项后,队头指针会指向下标较高的数据项,其特点:先入先出 2.图解 3.队列的实现代码: 3.1.Queue.java pa ...

  3. morphia(1)-基础

    二.Mapping classes entity类上加注解:@Entity,其成员变量必须有@Id @Id private ObjectId id; 其在mongodb中变量名: _id @Embed ...

  4. gem install 提示rubygems.org连接不上的问题

    周五的时候安装compass时遇到的,总是报错,后来反应过来是被墙了.解决办法就是使用淘宝的rubygem的镜像 gem sources --remove https://rubygems.org/ ...

  5. ReferenceError: password is not defined

    报错提示位置at c:\Users\Administrator\WebstormProjects\blogtest\routes\index.js:19:16 原因是我这个password没有定义,p ...

  6. Java常用函数式接口--Consumer接口使用案例

    第一种方式: 第二种方式:

  7. 数据库查询,显示为树形结构(easyui+SSM)

    在实际项目上,有很多地方后台存了一个表,但是在显示查询的时候需要显示为树形结构. 本项目是easyui+SSM框架. 前台程序为: <!DOCTYPE html> <html> ...

  8. MATLAB批量修改图片名称

    申明:转载请注明出处. 设在“D:\UserDesktop\pic\”目录下有很多张格式为jpg照片,命名不规则,如图. 现在用MATLAB批量修改所有图片的命名格式,改为1.jpg,2.jpg,.. ...

  9. hadoop ssh 问题WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    0.0.0.0: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0.0.0.0: @    WARNING: REMOTE HO ...

  10. 使用Kubernetes里的job计算圆周率后2000位

    使用Kubernetes里的job(作业),我们可以很方便地执行一些比较耗时的操作. 新建一个job.ymal文件: 定义了一个Kubernetes job,名称为pi,类型为job,容器名称为pi, ...