// The generator class is replaced by a sequence class gen_item_seq extends uvm_sequence; `uvm_object_utils(gen_item_seq) function new(string name = "gen_item_seq"); super.new(name); endfunction rand int num; // Config total number of items to be sent constraint c1 {soft num inside {[300 : 500]};} virtual task body(); bit seed_bits [$] = '{1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0}; int total_num; total_num = (num < seed_bits.size()) ? seed_bits.size() : num; for (int i = 0; i < total_num; i++) begin Item m_item = Item::type_id::create($sformatf("m_item_%0d", i)); start_item(m_item); if (i < seed_bits.size()) begin m_item.inp = seed_bits[i]; end else begin if (!m_item.randomize()) `uvm_fatal("SEQ", "Randomization failure for sequence item") end `uvm_info("SEQ", $sformatf("Generate new item: %s", m_item.convert2str()), UVM_HIGH) finish_item(m_item); end `uvm_info("SEQ", $sformatf("Done generation of %0d items", total_num), UVM_LOW) endtask endclass