IC数字验证“如何启动测试平台”...
Posted IC设计_云一哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IC数字验证“如何启动测试平台”...相关的知识,希望对你有一定的参考价值。
哈喽,我是一哥,之前我完成了一个简化的测试平台的构建,那下来我运行下该测试平台,看看该测试平台实现了哪些功能?
如何启动测试平台呢?
uvm平台的启动需要调用其内建的一个全局任务run_test,因此需要在一个program或者是model中调用。
下面来创建一个program,命名为test,在这个文件当中,首先要将uvm的相关库文件导入进来,导入uvm package,接下来,包含uvm的宏文件,然后,include之前我们所创建的全部文件,这里要按照顺序依次包含进来,在initial进程当中调用run_test来启动仿真平台。
为了以后代码管理起来更加方便,这里先创建一个统一的文件目录,其根目录为uvm_training_lab,下面包含了三个子目录,分别为labs,rtl以及uvm。
uvm当中存放了uvm的源码库,rtl存放了dut,labs中为创建的测试平台的代码,在labs文件夹下面,以每一个实验为单位分别创建子文件夹,以lab01为例,里面存放了我们本次实验的所有代码,那么以后其他的实验的代码均存放在labs下面的文件夹中。
将之前所写好的全部代码放入lab01文件夹当中,然后进入lab01文件夹,运行仿真。
需要先对文件进行编译,打开terminal终端,在编译命令中需要加入一个选项,define uvm no dpi,然后编译uvm库文件uvm_package.sv,以及测试平台的文件test.sv,然后运行仿真命令,仿真命令需要加入参数uvm,test_name,my_test,来指定本次testcase的名字,这里的my_test是之前已经创建好的textcase。
如果你的操作正确,那么平台就会顺利的执行,并在最后产生一个log文件。
如果没有这个log文件的产生,请查阅相关仿真器的手册,为仿真命令添加合适的参数以产生这样一个文件,有了这个文件,就可以看看仿真平台做了哪些事情,在当前文件夹下找到那个文件,并将其打开,图中是那个文件中的一部分内容,下面来简单分析一下它给了我们哪些信息。
可以在那个文件的开头看到一个类似数状结构的信息,这些信息是怎么来的呢?
那我在之前写testcase的时候,重载了他的start_of_simulation_phase,在这个phase中调用了uvm内建的,可以打印出平台结构的函数print_topology,当运行到这个phase的时候,打印函数就会被调用。
打印出数状结构是由uvm自己产生的,@符号之后跟的是信息打印的时间,也就是仿真时间,用这一点可以和波形图结合起来使用,可以在波形图中快速进行定位。
在这张表中,我们可以清晰地看到测试平台的层次结构,以及组件所处的位置,从表中可以看出没有my transaction以及my sequence,这也说明了它们并不是平台的组件,而仅仅是事物,最高层是一个名为uvm_test_top的组件,它的类型就是我们所创建的my_test,对象的名字是uvm自己所决定的,在testcase下面包含了m_env,在m_env下面包含了m_agent。m_agent中包含了m_driver m_monitor以及m_sequencer。
注意:我可以在m_driver当中看到更为细节的内容,其中包含了与sequencer相连的seq_item_port端口,同样可以在m_sequencer当中看到相对应的seq_item_xport端口,如果再往那个文件的下面看,则有打印的事物信息,这些事物均有sequence产生,在driver的run_phase中,driver在从sequencer获取到了事物对象之后,要用打印函数sprint来打印出,获取到的事物的信息,打印出来信息格式由uvm所定义。
从打印信息可以清楚的看到事物的全部内容,在代码中,每经过100个时间单位获取一个事物对象,并且打印该对象的信息,所以,每两个相邻的信息之间的时间差为100个时间单位,这是前一次打印的时间,显示为100,这是后一次打印的时间,显示为200,前后两次的时间差为100,在打印信息中,可以看到事物对象当中成员以及它们对应的值,学会使用log文件,对调试平台有很大的帮助,多为平台增加一些打印信息有助于调试测试平台。
这只是uvm验证平台很小的一部分,它仅仅实现了社会对象的产生和打印工作,在后面学习的课程当中,随着学习的深入,平台的功能会逐渐被完善起来,最终形成一个完整的测试平台。
本章内容就介绍到这里!!!
以上是关于IC数字验证“如何启动测试平台”...的主要内容,如果未能解决你的问题,请参考以下文章
材料狗转行IC设计,数字前端,数字后端Or 数字验证哪个更好?