大家好,我是陆砚码,今天我们来聊聊如何搭建一个只有driver的简单UVM验证平台。
首先,我们先来看一下DUT(Design Under Test)的功能。DUT的功能是通过rxd接收数据,再通过txd发送出去;rx_dv是接收的数据有效指示,tx_en是发送的数据有效指示。
module dut(clk,
rst_n,
rxd,
rx_dv,
txd,
tx_en);
input clk;
input rst_n;
input[7:0] rxd;
input rx_dv;
output [7:0] txd;
output tx_en;
reg[7:0] txd;
reg tx_en;
always @(posedge clk) begin
if(!rst_n) begin
txd <= 8'b0;
tx_en <= 1'b0;
end
else begin
txd <= rxd;
tx_en <= rx_dv;
end
end
endmodule
接下来,我们来看看driver的实现。UVM是一个库,库中几乎所有的东西都是使用类(class)来实现。使用UVM的第一条原则是:验证平台中所有的组件应该派生自UVM中的类。每一个派生自uvm_component或其派生类的类在其new函数中要指明两个参数:name和parent。
`ifndef MY_DRIVER__SV
`define MY_DRIVER__SV
class my_driver extends uvm_driver;
function new(string name =
