UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台

  1. 创建如下所示的目录结构:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第1张图片

2.在tb的文件下:顶层的testbench如下:在tb中,第24行的代码将uvm宏相关的内容include进来,第26行的代码把uvm_pkg包导入进来,然后将agent相关的包(ahb_pkg/sram_pkg),testcase相关的包(uvm_ahb_sram_test_pkg)以及env相关的包(uvm_ahb_sram_env_pkg)都导入进来,在第38行和39行将接口以virtual interface的形式配置给ahb_agent和sramc_agent下的所有组件,之后在第41行通过run_test()启动testbench。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第2张图片

  1. 在tests文件夹下的目录结构:

这个uvm_ahb_sram_test_pkg包的作用是将所有的testcase都include到当前的package下,其他所有的包功能都是类似的,此时我们只有一个名为uvm_ahb_sram_2的testcase基类,因此在第33行将该文件include进来。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第3张图片

Testcase_base的代码如下:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第4张图片

在build phase实例化env,在build_phase结束后的end_of_elabration_phase里面将拓扑结构打印出来。

  1. env的文件目录如下:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第5张图片

将该env相关的类都包如pkg中:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第6张图片

Env的代码如下:在build_phase里实例化组件,包括reference model 、scoreboard和agent,在env的connect phase中,因为目前我们没有trans要传递,所以我们先不建立组件之间的连接。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第7张图片

Reference model的代码如下,包含有一个main phase,之后我们会在main phase中执行具体的操作。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第8张图片

同样,scoreboard的代码如下:包含有一个main phase

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第9张图片

  1. agent的目录结构如下:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第10张图片

Ahb_if是其接口:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第11张图片

Driver代码如下:后续我们会具体进行完善,driver中connect_phase get到vif的配置信息,main_phase中有将激励灌入到DUT内部的主要方法do_drive(),我们注意到目前driver的main phase中是通过第58行代码接收到seqr传来的trans后,执行do_drive,但实际我们可能并非如此操作,比如ahb的二级流水当总线上hready为低时,我们按照这种方式可能会丢掉数据。这一点我们后面进行具体的更改。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第12张图片

Monitor的代码如下:monitor与driver具有一定的相似度,但又有所不同,monitor负责监视总线上的信号,并将pin级的信号打包成trans通过analysis port传递给reference model等组件。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第13张图片

Agent的代码如下:agent中实例化了driver monitor和sequencer,并且在connect phase中建立起组件之间的连接,将driver和sequencer以及monitor和agent中的port连接起来。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第14张图片

Sequence_item的代码如下:我们要在sequence_item中将interface中的信号包装成trans类型,并利用automatic_field将诸多自动函数调用。

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第15张图片

Sequence的代码如下:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第16张图片

  1. Sim文件夹的目录结构如下:

Makefile的代码如下:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第17张图片

  1. 将所有组件的框架搭建起来以后,我们尝试跑一下testcase,发现没有fatal和error

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第18张图片

接下来,我们看下拓扑结构:

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台_第19张图片

你可能感兴趣的:(硬件架构,systemverilog)