Questa UVM Transaction

Hi,
I cannot see my whole transaction item. I have a sequence item and there are two dynamic array as m_TxData and m_RxData which automate with “uvm_field_array_int” macro. All setting are made for Questa 10.6b. However, when I sent a 12 bit data from sequencer m_TxData and m_RxData arrays are changed with m_TxData_0, m_TxData_1, m_TxData_2, m_TxData_3, m_TxData_4, m_TxData_7, m_TxData_8, m_TxData_9, m_TxData_10, m_TxData_11 at transcation view. Also I get an warning message as “Attributes must be named as a legal c identifier.” I can ignore this message with “uvm_top.set_report_id_action_hier(“ILLEGALNAME”,UVM_NO_ACTION);” but this is not solve my problem. I cannot see my median data(m_TxData_5 and m_TxData_6) at transcation view as shown at figure.

In reply to ekrem.sahin:

Could you please show the code for your seq_item.

class seqISpiDataTransfer extends seqISpiTransferBase;

rand int unsigned m_preDelay;
rand int unsigned m_postDelay;
rand int unsigned m_maxDelay;
int unsigned m_bitsToSend = `DEFAULT_DATA_TRANSFER_SIZE;
uvm_status_e m_status;

rand bit m_TxData;
bit m_RxData;

rand bit m_cpol;
rand bit m_cpha;
rand bit m_isBurst;
rand bit[`SPI_SLAVE_NUM - 1 : 0] m_slvIds;

uvm_object_utils_begin(seqISpiDataTransfer) uvm_field_int(m_preDelay, UVM_ALL_ON)
uvm_field_int(m_postDelay, UVM_ALL_ON) uvm_field_int(m_maxDelay, UVM_ALL_ON)
uvm_field_int(m_bitsToSend, UVM_ALL_ON) uvm_field_enum(uvm_status_e, m_status, UVM_ALL_ON)
uvm_field_array_int(m_TxData, UVM_ALL_ON) uvm_field_array_int(m_RxData, UVM_ALL_ON)
uvm_field_int(m_cpol, UVM_ALL_ON) uvm_field_int(m_cpha, UVM_ALL_ON)
uvm_field_int(m_isBurst, UVM_ALL_ON) uvm_field_int(m_slvIds, UVM_ALL_ON)
`uvm_object_utils_end

constraint m_constrMaxDelay { m_maxDelay == 10; }
constraint m_constrPreDelay { m_preDelay <= m_maxDelay; m_preDelay > 0;}
constraint m_constrPostDelay { m_postDelay <= m_maxDelay;}
constraint m_constrSlaveIds { $size(m_slvIds) <= `SPI_SLAVE_NUM;}

function new(string name = “seqISpiDataTransfer”);
super.new(name);
endfunction : new

endclass : seqISpiDataTransfer

Hi, my seq_item is shown above but I found a solution for this. I close auto record with UVM_NORECORD flag and write do_record function for these sequence items manually and I see whole transaction at wave. However I don’t know why I cannot see my whole transaction automatically with UVM_ALL_ON when using QuestaSim.

In reply to ekrem.sahin:

It is highly recommended to not use the field automation macros. The main problem is that the macros don’t cover every use model and can cause unexpected issues. They are also difficult to debug (as you discovered).

The guidelines recommend writing specific do_* functions for your sequence items.

In reply to ekrem.sahin:

The UVM is providing a specific API to display the transactions in the waveform, independent from the simulator. For this you have to override/implement the do_record function.
In most simulators you have to switch-on the transaction recording using the config_db.
This is independet on the usage of the field macros. As cgales says you should not use them.