In reply to Srini @ CVCblr.com:
class ac_lpc_driver extends uvm_driver #(sequence_item);
//uvm_macros
//sequence_item req;
// interface declaration
uvm_analysis_port#(sequence_item)seq_item_port;
function new(string name = "ac_lpc_driver", uvm_component parent = null);
super.new(name, parent);
seq_item_port=new("port",this);
endfunction
//build_phase
task run_phase(uvm_phase phase);
// Default conditions:
MDPORT.cb.lframe <= 0;
MDPORT.cb.data <= 0;
fork
forever
begin
sequence_item req;
@ (MDPORT.cb);
seq_item_port.get_next_item(req); // Gets the sequence_item
MDPORT.cb.lframe <= 1; // Start of frame
for(int i = 0; i < 8; i++) begin // Send nibbles
@(MDPORT.cb);
MDPORT.cb.data <= req.data[3:0];
req.data = req.data >> 4;
end
MDPORT.cb.lframe <= 0; // End of frame
seq_item_port.item_done(); // Indicates that the sequence_item has been consumed
end
forever begin
@(MDPORT.cb);
if (MDPORT.cb.lframe === 1'b1) begin
$display($time);
end
end
join_none
endtask: run_phase
endclass: ac_lpc_driver
Thanks,