ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

VCSVerdi:KDB文件的生成和导入

VCSVerdi:KDB文件的生成和导入

相关阅读

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> // 用于Verilog、SystemVerilog vhdlan -kdb <vhdlan_options> <source files> // 用于VHDL

在第二步展开阶段(即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

若仅生成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文件指定的库顺序对逻辑库进行搜索),也可以使用-top选项人为指定顶层模块执行展开。

​verdi -simflow -lib <work.lib++_path>

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选项。

如果使用VCS三步流程:

// 分析阶段 vlogan top.v -kdb // 展开阶段 vcs top -debug_access+r -kdb

如果使用VCS两步流程:

// 编译阶段 vcs -debug_access+r -kdb top.v

然后

// 仿真阶段 ./simv -gui # 需要设置VERDI_HOME环境变量 ./simv -gui=verdi # 需要设置VERDI_HOME环境变量 ./simv -verdi # 需要设置VERDI_HOME环境变量

2、在命令行使用Verdi命令,并指定仿真文件,Verdi会自动导入相应的KDB(其实还是从simv.daidir目录中导入的KDB),并进入仿真状态。注意,这么做的前提是在VCS三步流程的展开阶段或VCS两步流程的编译阶段时使用-debug_access选项。

如果使用VCS三步流程:

// 分析阶段 vlogan top.v -kdb // 展开阶段 vcs top -debug_access+r -kdb

如果使用VCS两步流程:

// 编译阶段 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
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进