cadence indago简单使用说明

Cadence Indago是一系列强大的调试工具,包括Debug Analyzer、Protocol Debug和Embedded Software Debug (eswd)。本文详细介绍了如何生成Indago数据库,特别是如何使用ida_probe命令控制记录内容以优化仿真速度。Indago工具允许回看任意仿真时刻的状态,提供智能日志、代码区、顶级界面、活动线程、调用栈和诊断等功能,极大地方便了UVM环境的调试。eswd工具则作为CPU的最强软件调试工具,通过反汇编和波形展示CPU执行流,支持单步调试和向后跳转。配置和使用eswd工具需要elf文件、CPU架构描述文件、执行指令流文件和eswd配置文件。通过这些配置,可以生成eswd database并进行分析。
摘要由CSDN通过智能技术生成

参考博文:http://www.lujun.org.cn/

1,indago系列工具介绍

indago工具,是cadence工具,推出的一系列debug工具。在启动simvision工具时,就会弹出一个窗口,里面就提到了indago工具。

这套工具,非常的强大,但是就是网上介绍的资料不多。因为,有很多人,都不知道这个工具。

主要包括3个工具:

  • debug analyzer app

  • protocol debug app

  • embedded software debug app,简称eswd工具

     

这三个工具,我只用过debug analyzer app(之后,均简称为indago)和eswd,这两个工具,后面,就对这个两个工具进行详细的介绍。

对于indago,主要用来debug uvm验证环境,会非常有用,当然也可以用来debug RTL。因为该工具,可以查看仿真过程中任意时刻的仿真状态。除了可以往后单步,还能往前单步。因为需要在仿真过程中,将整个仿真过程给记录,因此带来的一个问题,就是造成仿真速度较慢。

而eswed工具,我认为是针对cpu,最强的软件debug工具。该工具,可以将cpu执行的trace流(需要自己开发monitor,从RTL中,将cpu的执行流抓出来),和elf程序,进行一一对应,并且还能和波形进行对应,让我们可以清晰的指导,cpu在每个时刻,在执行什么程序,以及当前的cpu状态。

2,如何产生indago database

首先介绍下indago工具,也就是debug analyzer app。

在debug uvm验证环境时,我们一般是通过增加打印,然后仿真,根据仿真打印的log,来确定问题。如果打印加得不够,还得修改源代码,增加代码代码。

有了indago工具之后,就再也不需要在环境中,增加额外的打印代码。因为indago工具,可以查看仿真时刻的任意状态。

那indago是如何实现的了?其中的关键,就在于,使用irun工具仿真的时候,需要产生indago database,将仿真过程中的信息,给记录下来。最后使用indago工具,载入这个database,实现信息的回看。

下面,就说一下,如何生成这个indago database。

 一、编译阶段

在编译阶段,要加入如下三个选项:

  • -ida: 使能indago debug analyzer。 如果使用xrun工具,不需要加该选项。

  • -linedebug:支持代码行调试,必加

  • -uvmlinedebug: 支持uvm库代码行调试,可选

 二、仿真阶段

 

在仿真阶段,需要加入 +UVM_HYPERLINKS=ON 选项,和-input run.tcl 选项,来指定仿真所需要的tcl文件。

在run.tcl中,可以精细化的控制indago database生成。因为产生indago database会降低仿真速度,因此需要使用run.tcl,来精细化控制,database的生成过程。

下面是一个参考的run.tcl脚本。

1
2
3
ida_probe -log -sv_flow -uvm_reg -log_objects -sv_modules -wave -wave_probe_args= "top_tb -depth all –all memories"
run
exit

 三、ida_probe命令

 ida_probe,指定database中记录产生的数据。

这个命令很重要,因为后面indago能回看的数据,完全是由这个命令,来指定的。比如,ida_probe,指定了database要记录波形,那么将来在indago工具中,才可以看到波形。

下图,是ida_probe命令的说明:

这里,说明一下这个命令的一些常用选项:

 1、-start_time/-end_time

 指定database记录仿真状态的起始时间和结束时间。主要用来,记录关键一段仿真过程的状态。

 2、-log

 记录打印的信息

 3、-log_objects

 记录打印信息中的,动态对象。

 4、-uvm

记录uvm package信息。如果使用这个选项,需要编译带上 –linedebug 选项。

开启这个选项,会将uvm的基类,比如uvm_test,uvm_env等这些基类进行记录,这样将来在indago工具中,可以在这些基类中,回看仿真过程。

如果不关心uvm基类的底层过程,可以不用加这个选项。

5、-uvm_reg

 记录uvm_reg的信息,需要在编译选项,加入 –uvmlinedebug。当uvm环境中,有uvm寄存器模型,需要将该选项加上。

6、-wava/-wave_probe_args=xxx

 -wave开启波形记录。 -wave_probe_args,指定波形记录的形式。xxx参数,是传递给probe的参数。

对于probe命令,其说明如下:

如-wave_probe_args= "dut_top -depth all –all memories",表示记录dut_top模块的内部信号波形,以及该模块之下所有模块的内部波形。因为还有-all选项,因此还会记录memory的波形。

 7、-sv_files

 允许记录systemverilog文件

 8、-sv_flow

 允

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值