UVM:7.3.4 UVM中后门访问操作的实现:DPI+VPI

1.实际平台中,C/C++对DUT中的寄存器也要读写。verilog 提供VPI,常用的有两个:


2.这样很麻烦,systemverilog 提供了DPI,读为例,在C/C++中定义如下一个函数:

UVM:7.3.4 UVM中后门访问操作的实现:DPI+VPI_第1张图片


3.systemverilog 使用如下方式将C/C++定义的函数导入:

UVM:7.3.4 UVM中后门访问操作的实现:DPI+VPI_第2张图片

1)之后可以在systemverilog 中像普通函数一样调用uvm_hdl_read,比vpi 简练许多。


4.整个过程:

UVM:7.3.4 UVM中后门访问操作的实现:DPI+VPI_第3张图片

1)要操作的寄存器路径被抽象成一个字符串,不再是一个绝对路径:


2)路径变成字符串,可以存储,为建立寄存器模型提供可能。


5.UVM使用DPI+VPI 后门的大体流程是:

1)建立寄存器模型时将路径参数设置好。

2)后门写操作时,寄存器模型调用uvm_hdl_deposit函数:

UVM:7.3.4 UVM中后门访问操作的实现:DPI+VPI_第4张图片

在C/C++侧,此函数内部会调用vpi_put_value 对DUT 中的寄存器进行写操作。

3)后门读操作时,调用uvm_hdl_read,->vpi_get_value,并将读取值返回。

你可能感兴趣的:(UVM)