/**************************************************************************** +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+ +-+-+-+-+-+-+-+-+ |F|u|n|c|t|i|o|n|a|l| |V|e|r|i|f|i|c|a|t|i|o|n| |o|f| |H|a|r|d|w|a|r|e| +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+ +-+-+-+-+-+-+-+-+ FILE apb_transaction.sv DESCRIPTION sequence item ****************************************************************************/ `ifndef APB_TRANSACTION_SV `define APB_TRANSACTION_SV /** * Class: apb_transaction */ class apb_transaction extends uvm_sequence_item; // fields rand bit [ADDR_WIDTH - 1 : 0] addr; rand apb_direction_enum dir; rand bit [RDATA_WIDTH - 1 : 0] rdata; rand bit [WDATA_WIDTH - 1 : 0] wdata; rand int unsigned delay = 0; bit error; // constraints constraint c_delay { delay <= 10 ; } // UVM factory registration `uvm_object_utils_begin(apb_transaction) `uvm_field_int(addr, UVM_DEFAULT) `uvm_field_enum(apb_direction_enum, dir, UVM_DEFAULT) `uvm_field_int(rdata, UVM_DEFAULT) `uvm_field_int(wdata, UVM_DEFAULT) `uvm_field_int(delay, UVM_DEFAULT) `uvm_field_int(error, UVM_DEFAULT) `uvm_object_utils_end // new - constructor function new(string name = "apb_transaction"); super.new(name); endfunction : new endclass : apb_transaction `endif