Jump to content

kaggala

Members
  • Content Count

    4
  • Joined

  • Last visited

  1. Hi All, I am seeing following error when I try to assign array values using inline constraints Array size's and dimensions are same and array slicing is not there ,but still I see below error. Can somebody please through light on this error? Also suggest best practices class A_seq extends uvm_sequence #(id_nfc_tx_transfer); `uvm_object_utils(A_seq) `uvm_declare_p_sequencer(tx_sequencer) bit [7:0] data_byte[`MAX_DATA:0] ; function new(string name="A_seq"); super.new(name); endfunction virtual task body(); ///Array Initialization for (int i=0;i<=5;i++) data_byte= 'hAB; `uvm_do_with(req,{ tx_bit_rate_sel ==212; tx_num_of_bytes == 5; tx_data_byte == data_byte; }) endtask endclass Error :Randomization constraint has this error, which will cause the randomize function to return 0 and no new rand values will be set: Slices of unpacked arrays are not currently supported in this context
  2. Its working perfectly with the Workarounds. Your Suggestions are greatly Appreciated. Thank you Tudor and Dave
  3. Hi Tudor, Thanks for the reply. Exactly, I would like to know what is the limitation of Queue usage in sequences. With Dynamic Array I need to have additional parameter to configure the size and also assigning bytes is not straight forward Following is the sample code with dyamaic array rand byte tx_err_bytes[ ] ; // Dynamic array contains byte positions to be corrupted rand int error_byte_count ; // size of the dynamic array `uvm_do_with( req, { tx_data_byte[0]=='h00; tx_data_byte[1]=='h11; tx_data_byte[2]=='h00; tx_data_byte[3]=='h99; tx_data_byte[4]=='h55; ///----------------- tx_no_of_bytes_to_send ==20; tx_err_bytes [0] == 4; tx_err_bytes [1] == 5; tx_err_bytes [2] == 7; error_byte_count == 3; }) Thank you
  4. Hi All, I have a scenario where i need to send n random bytes and out of n bytes i should able to corrupt few selected bytes. I have used Queue for selecting error bytes list. Transaction : rand bit [7:0] tx_data_byte[`MAX_DATA:0] ; // data byte array rand int unsigned tx_no_of_bytes_to_send ; // number of data bytes to send rand byte tx_err_bytes[$] ; //queue contains byte positions to be corrupted Example : consider i am sending 5 data bytes and I have to corrupt 2,4,5 bytes (corrupting data bytes is handled in driver) Sequence : `uvm_do_with( req, { tx_data_byte[0]=='h00; tx_data_byte[1]=='h11; tx_data_byte[2]=='h00; tx_data_byte[3]=='h99; tx_data_byte[4]=='h55; ///----------------- tx_no_of_bytes_to_send ==20; tx_err_bytes == {4,5,7}; }) I am seeing below error from the cadence simulator. Can somebody help me out in resolving this error . Error: Randomization constraint has error, which will cause the randomize function to return 0 and no new rand values will be set: This feature is currently not supported for queues, dynamic arrays, strings and associative arrays. Thank you
×
×
  • Create New...