Connecting INOUT 16-bit wire port in uvm_driver "Usage of 'micro_vi.ui_16bit_data' inconsistent with 'net' object."

Hey guys,

I am trying to connect an inout port from my interface to the transaction in the uvm driver, but I keep getting the following error message

“Usage of ‘micro_vi.ui_16bit_data’ inconsistent with ‘net’ object.”

Any ideas why this is occurring?

Also, I have attached the run phase of the uvm_driver that is causing the error

task run_phase(uvm_phase phase);

forever
begin
microproc_trans tx;

@(posedge micro_vi.lb_clk) #1;

//return the transaction when it is available in the sequence
//start_item indicates that its ready to send an item from the sequence
// when finish_item it called it causes get_next_item to return
seq_item_port.get_next_item(tx); //<--sync to the start_item call

// phase.raise_objection(this);
//once that information returns we use it to drive the pin wiggles
micro_vi.ui_16bit_instruction = tx.ui_16bit_instruction;
micro_vi.lb_data_latch_en = tx.lb_data_latch_en;
micro_vi.lb_output_y_en = tx.lb_output_y_en;
micro_vi.ui_16bit_data = tx.ui_16bit_data;

//marks the completion of the transaction
@(negedge micro_vi.lb_clk) //#1;
  seq_item_port.item_done(); //<-- causes finish item in the sequence to return

// phase.drop_objection(this);
end

endtask: run_phase

Any help is greatly appreciated.

This is because you are trying to make a procedural assignment to a wire, which is always illegal. See http://go.mentor.com/wire-vs-reg, then look at my DVCon paper.