In reply to chr_sue:
This is my driver run task code
task get_and_drive();
basic_seq_item req;
drv_vif.intf_a = 0;drv_vif.intf_b = 0;drv_vif.intf_c = 0;drv_vif.intf_start = 0;
forever begin
@(posedge drv_vif.intf_clk);
seq_item_port.get_next_item(req);
drv_vif.intf_a = req.seq_item_a;
drv_vif.intf_b = req.seq_item_b;
drv_vif.intf_start = req.seq_item_start;
`uvm_do_callbacks(alu_driver, alu_drv_cb, corrupt_data())
drv_ap.write(req);
//`uvm_info(get_type_name, $sformatf("Driver transaction %s", req.sprint()), UVM_LOW)
seq_item_port.item_done();
end
endtask : get_and_drive
Here is the callback I want to implement, the idea is the callback generates junk output values which would be caught in the scoreboard.
class alu_drv_cb extends uvm_callback;
function new(string name = "alu_drv_cb");
super.new(name);
endfunction : new
virtual task corrupt_data();
// Drive random data on interface output, something along the lines of
// intf_handle.intf_c = 'h1234_5678;
endtask : corrupt_data
endclass : alu_drv_cb