weiqi7777

cadence indago征程(五)最强cpu debug工具-eswd

0
阅读(238) 评论(0)

我们在编写c程序,在调试的时候,希望能够使用visual studio工具,或者eclipse工具,实现单步调试,让我们能够查看c程序的执行状态,从而帮助我们去调试我们写的c程序。

那在soc验证或cpu core验证(以下简称core验证)的时候。我们也是写了c程序(或者汇编程序,以下不区别),在验证环境中运行,怎么能够知道程序在core上的执行结果呢?我们也希望能有像eclipse这样的工具,能够通过IDE工具,能够知道程序的执行过程以及执行结果。

这个时候,indago中的embedded software debug app(以下简称eswd)工具横空出世,解决了上述问题。

一、eswd工具

首先上图,以下是eswd的界面。cpu的名字,叫xxx。支持aarch64和aarch32两种arm架构指令集。包含8个core。

左上角是源代码区,中间是反汇编区,右上角是状态区(用来查看core状态,以及切换core),最下面界面是波形区,显示各个core指令流的波形(只记录了pc)。

通过这个工具,就能够知道,我们编写的程序,在cpu上的执行过程,以及执行结果。还能够,单步仿真,单步跳过。而单步功能,不仅仅支持向前跳转,还可以向后跳转。

eswd工具,支持多个core,可以分别查看每个core的执行过程,在状态窗口的状态栏,会显示,当前查看的是哪一个core,以及该core的EL。

在源代码窗口,可以加载源文件。

对于加载的源代码,如果代码有执行过,那么在代码行的前面会有向前向后的按钮,点击该按钮,可以将当前的状态,恢复到执行该行代码的状态。

在debug界面,可以查看变量的值,以及调用栈。

在代码处,右键,选择 choose execution。

会弹出time tables窗口,显示,这个函数,在那些时刻有执行过。

在波形窗口,能够看到各个core的执行pc,以及该pc,所在的函数。

二、总结

该工具,可以让我们知道,程序在cpu上的执行过程,以及执行结果,方便我们去定位问题。而不需要去分析波形,才能得到cpu的执行过程与执行结果。

要想使用eswd工具,显示出这些信息,需要我们去做一些工作,产生database,给eswd工具来分析。

产生database,需要如下的一些文件:

  • 程序的elf文件
  • cpu架构的描述
  • trace的配置文件
  • cpu的执行结果trace

后面,就要详细来说明一下,如何得到上面的文件,最终产生database,并使用eswd工具进行分析。