![23db6a3102ca9c532a9c543f846d7cfc.gif](https://img-blog.csdnimg.cn/img_convert/23db6a3102ca9c532a9c543f846d7cfc.gif)
启动indago工具之后,indago的界面,如下图所示:
![7e3017cd70fa7271a054dd1e5582d37b.png](https://img-blog.csdnimg.cn/img_convert/7e3017cd70fa7271a054dd1e5582d37b.png)
下面,就介绍一些,indago的炫酷技能。
一、smartlog
smartlog,显示log,并且可以将打印的一行log,和仿真状态进行关联。
在每行log的开头,有一个向前或者向后的按钮,点击,表示,将仿真状态,定义到这一时刻,此时,代码窗口,显示打印这行log的代码处。
![77254c86bd527a965f55f6cc9ae33403.png](https://img-blog.csdnimg.cn/img_convert/77254c86bd527a965f55f6cc9ae33403.png)
在smartlog的界面,可以配置,打印log的verbosity级别,以及log的类型。便于查看自己想要看的log。
![c6153196672ffb895aefa80d96a13850.png](https://img-blog.csdnimg.cn/img_convert/c6153196672ffb895aefa80d96a13850.png)
在代码处,右键,选择add smartprint to log。
![a1b730696604d09378a6d6cd20d308ee.png](https://img-blog.csdnimg.cn/img_convert/a1b730696604d09378a6d6cd20d308ee.png)
输入想打印的变量,然后选择时间范围,如果不选择,就默认为整个仿真时间,在设置打印的verbosity。
![09372305bf1408755a3567782cfffbb7.png](https://img-blog.csdnimg.cn/img_convert/09372305bf1408755a3567782cfffbb7.png)
点击add之后,就会发现神奇的一幕出现了。
在smartlog界面,会将代码被调用的时刻,把设置的变量全部打印出来。这就意味着,将来再也不需要在环境中,增加额外的打印代码,来帮助调试了。
![6a04ed553d50751a96c55deca18cc5b4.png](https://img-blog.csdnimg.cn/img_convert/6a04ed553d50751a96c55deca18cc5b4.png)
二、代码区
在代码区,可以查看代码,包括RTL和tb,都可以。
如果代码行,前面有向前或者向后的按钮,表示,这行代码,在仿真过程中,有执行过,可以点击按钮,将当前的仿真状态,恢复到执行这一行代码的状态。
![0efc011bd51193ea21abbaa292388dab.png](https://img-blog.csdnimg.cn/img_convert/0efc011bd51193ea21abbaa292388dab.png)
上图中的红色框的按钮,是控制仿真过程的按钮,可以执行:
向前单步
向后单步
向前跳过
向后跳过
indago的一个很炫酷的功能,是可以支持向后跳转,也就是我们可以知道,当前仿真状态的前一个仿真状态是什么。
点击左上角的 Files,可以加载指定的文件。
![115c8df25f5b2c582a8ede8a8141de00.png](https://img-blog.csdnimg.cn/img_convert/115c8df25f5b2c582a8ede8a8141de00.png)
文件前面的黄色标志,表示,当前仿真状态在执行这个文件。代码行前的黄色标志,表示当前仿真状态,要执行这一行代码。
![6d6ed54b4d3d8c698e0841a394859b13.png](https://img-blog.csdnimg.cn/img_convert/6d6ed54b4d3d8c698e0841a394859b13.png)
如果打开,variable界面,那么在该界面,会自动显示各个变量的值。
三、top界面
在top界面,可以查看design和test bench的代码。对于rtl代码,可以选择信号,加入到波形中。
![698258fa17853c434d7231da6c093523.png](https://img-blog.csdnimg.cn/img_convert/698258fa17853c434d7231da6c093523.png)
在波形窗口中,对波形信号,双击,会跳转到rtl代码中,并且将仿真状态,切换到该波形时刻。
四、active threads
在active threads窗口,点击刷新按钮,可以查看激活的线程,有哪一些。选择任意一个线程,就可以跳转到代码处。
![38f726e6f949030fb4f1a1be1eaf4e94.png](https://img-blog.csdnimg.cn/img_convert/38f726e6f949030fb4f1a1be1eaf4e94.png)
五、call stack
call stack界面,用来查看调用栈,也就是函数的调用关系层次是怎么样的。
![387d5ec00b5261e1b8de22afdd838550.png](https://img-blog.csdnimg.cn/img_convert/387d5ec00b5261e1b8de22afdd838550.png)
对于my_driver中的driver_one_pkt函数,是由my_driver中的main_phase函数调用的。
六、diagnostics
诊断窗口,会显示,在产生indago database过程中,影响仿真速度的一些文件和代码。
![870f08cd26ecd7ec6a3672696de8ff9b.png](https://img-blog.csdnimg.cn/img_convert/870f08cd26ecd7ec6a3672696de8ff9b.png)
从该界面中,可以知道哪些文件影响了仿真速度,如果该文件,对查看状态不影响,可以在ida_probe命令中,将这个文件ingore掉。从而提高仿真速度。
七、总结
该工具,还有其他的一些功能,这个就需要大家自己去使用的时候,研究了。这里,只是给大家简单介绍indago工具的使用。
总的来说,indago工具,根据仿真得到的database,以图形化界面呈现给我们,让我们能够回看仿真的任意时刻状态,从而方便我们去debug。
![c369e557d0b701a9202d51cd0abed9b3.gif](https://img-blog.csdnimg.cn/img_convert/c369e557d0b701a9202d51cd0abed9b3.gif)
![1dfcfac75b444222f457a597eaa33ec9.gif](https://img-blog.csdnimg.cn/img_convert/1dfcfac75b444222f457a597eaa33ec9.gif)
![fb796ad790a1370e6f97d4c18ac214f6.png](https://img-blog.csdnimg.cn/img_convert/fb796ad790a1370e6f97d4c18ac214f6.png)