搭建一个UVM环境(一) 基本验证环境

interface

    uvm里面interface与systemverilog的是一样的,在这里就不做介绍;

interface adder_if #(parameter DA_WID=10)(input clk)
    logic [DA_WID-1:0] data_a ;
    logic [DA_WID-1:0] data_b ;
endinterface

transaction

    uvm里面的transaction与systemverilog一致,将总线处理抽象化为一个事务;但是uvm加入了filed_automation机制,使用该机制可以使用一些uvm自带函数,可以简化其他组件的处理;

class adder_tran extends uvm_sequence_item;
    rand bit [10:0] data_a ;
    rand bit [10:0] data_b ;
    `uvm_object_utils_begin(adder_tran)           //filed_automation机制
        `uvm_filed_int(data_a,UVM_ALL_ON)
        `uvm_filed_int(data_b,UVM_ALL_ON)
    `uvm_object_utils_end

    extern function new(string name="");
endclass

function adder_tran::new(string name="");
    super.new(name);
endfunction : new

driver

    UVM里面的driver存在一些特殊的处理,其中get_next_item用来获取下一个transaction,

你可能感兴趣的:(UVM自学记录,UVM)