相关阅读
VCShttps://blog.csdn.net/weixin_45791458/category_12828763.html
Verdihttps://blog.csdn.net/weixin_45791458/category_12829428.html?spm=1001.2014.3001.5482
前言
在复杂的设计中,很难在HDL或测试平台级别(如使用系统函数)找到与逻辑相关的错误。调试过程包括定位与错误相关的设计逻辑、隔离错误原因,并理解设计应该如何表现以及为何未按预期表现。设计和验证工程师需要复杂的工具来查找仿真器生成的数据中的错误。
Verdi调试工具提供了全面的调试支持,适用于所有设计和验证流程。它包括强大的技术,帮助您理解复杂和不熟悉的设计行为,并自动化繁琐且困难的调试过程。除了标准的源代码浏览器、原理图、波形、状态机图和波形比较等功能外,Verdi工具还包括自动追踪信号活动的高级功能,利用时序流视图、基于断言的调试以及事务和消息数据的调试和分析。
通过以下模式使用Verdi进行调试:
- 交互式仿真调试模式:允许交互式地调试设计。
- 后处理调试模式:允许使用数据库(fsdb)调试设计。
生成KDB
Verdi知识数据库(KDB)是其特有的数据库,用于保存一个设计的相关数据,通过使用VCS时添加的选项,设计人员可以很方便地生成Verdi KDB。
如果使用VCS三步流程:
在第一步分析(即vhdlan或vlogan命令)时加入-kdb选项,将会生成库KDB目录(work.lib++)并将其和分析生成的中间文件一起保存在逻辑库中。
% vlogan -kdb <vlogan_options> <source files>
% vhdlan -kdb <vhdlan_options> <source files>
在第二步展开阶段(即VCS命令)时加入-kdb选项,将会生成展开后的KDB目录(kdb.elab++)并将其保存在simv.daidir目录中。
vcs -kdb <top_name>
如果使用VCS两步流程:
在第一步编译时(即VCS命令)时加入-kdb选项,将会生成展开后的KDB目录(kdb.elab++)并将其保存在simv.daidir目录中。
vcs -kdb <compile_options> <source files>
若仅生成KDB而跳过仿真文件(可执行文件)的生成,可以指定only参数与-kdb选项一起使用。
如果使用VCS三步流程:
需要注意,分析阶段无法使用only参数,只能在展开阶段使用。
% vlogan -kdb <vlogan_options> <source files>
% vhdlan -kdb <vhdlan_options> <source files>
% vcs -kdb=only <top_name> <compile_options>
如果使用VCS两步流程:
% vcs -kdb=only <compile_options> <source files>
打开KDB
直接打开KDB(较少使用)
1、在命令行使用Verdi命令,并指定simv.daidir目录。
verdi -simflow -dbdir <simv.daidir_path>
2、在Verdi GUI中选择Import Design-From Daidir并选择相应设计的simv.daidir目录,如图1所示。
图1 从simv.daidir目录导入KDB数据库
3、在命令行使用Verdi命令,并指定一个逻辑库目录中的KDB目录(work.lib++),Verdi会将其中所有没有被该逻辑库中的模块例化过的模块当做顶层模块,并执行展开(展开时会根据synopsys_sim.setup文件指定的库顺序对逻辑库进行搜索)。
verdi -simflow -lib <work.lib++_path>
可以使用-top选项人为指定顶层模块。
4、 在Verdi GUI中选择Import Design-From Library-From VC/VCS Native Compile并选择相应逻辑库,如图2所示。
图2 从逻辑库导入KDB数据库
使用仿真文件自动打开KDB(常用)
1、在命令行以GUI交互式仿真调试模式运行仿真文件时,Verdi会自动导入相应的KDB(其实还是从simv.daidir目录中导入的KDB),并进入仿真状态。注意,这么做的前提是在VCS三步流程的展开阶段或VCS两步流程的编译阶段时使用-debug_access选项。
vlogan top.v -kdb
vcs top -debug_access+r -kdb
或者
vcs -debug_access+r -kdb top.v
然后
./simv -gui
2、在命令行使用Verdi命令,并指定仿真文件,Verdi会自动导入相应的KDB(其实还是从simv.daidir目录中导入的KDB),并进入仿真状态。注意,这么做的前提是在VCS三步流程的展开阶段或VCS两步流程的编译阶段时使用-debug_access选项。
vlogan top.v -kdb
vcs top -debug_access+r -kdb
或者
vcs -debug_access+r -kdb top.v
然后
verdi -simBin "./simv" # 仿真文件路径必须用双引号包围
3、在命令行使用Verdi命令,并指定后处理调试模式时使用的fsdb波形文件,Verdi会自动导入相应的KDB(其实还是从simv.daidir目录中导入的KDB)。注意,这么做的前提是在VCS三步流程的展开阶段或VCS两步流程的编译阶段时使用-debug_access选项,并运行仿真文件,使用其中的系统函数导出了fsdb波形文件。
verdi -ssf test.fsdb