`timescale 1ns/1ps
`include "uvm_macros.svh"
import uvm_pkg::*;
class bounded_record_item extends uvm_object;
int data[] = '{11, 22, 33, 44};
int unsigned record_limit = 2;
function new(string name = "bounded_record_item"); super.new(name); endfunction
// data is deliberately not registered with a uvm_field_* macro.
function void do_record(uvm_recorder recorder);
super.do_record(recorder);
foreach (data[i]) begin
if (i >= record_limit) break;
recorder.record_field_int($sformatf("data[%0d]", i), data[i], 32, UVM_DEC);
end
endfunction
endclass
class count_text_recorder extends uvm_text_recorder;
int fields;
int sum;
string last_name;
function new(string name = "count_text_recorder"); super.new(name); endfunction
protected virtual function void do_record_field_int(string name, uvm_integral_t value,
int size, uvm_radix_enum radix);
fields++;
sum += value;
last_name = name;
super.do_record_field_int(name, value, size, radix);
endfunction
endclass
module vendor_migration_probe;
initial begin
uvm_reg_cvr_t supported = UVM_CVR_REG_BITS | UVM_CVR_FIELD_VALS;
snps_uvm_reg_bank_group bank = new("bank", null, supported);
bounded_record_item item = new();
count_text_recorder counter = new();
uvm_text_tr_database db = new("db");
uvm_tr_stream stream;
uvm_recorder recorder;
#1;
$display("REVIEW|vendor_bank_has|%0d", bank.has_coverage(supported));
void'(bank.set_coverage(UVM_CVR_FIELD_VALS));
$display("REVIEW|vendor_bank_enabled|%0d:%0d", bank.get_coverage(UVM_CVR_FIELD_VALS), bank.get_coverage(UVM_CVR_REG_BITS));
stream = db.open_stream("stream", "scope", "type");
counter.m_do_open(stream, 7, "type");
item.record(counter);
$display("REVIEW|vendor_record_fields|%0d:%0d:%s", counter.fields, counter.sum, counter.last_name);
counter.close();
counter.free();
recorder = stream.open_recorder("explicit_time", 7, "type");
$display("REVIEW|vendor_record_time|%0d", recorder.get_open_time());
recorder.close();
recorder.free();
stream.close();
stream.free();
void'(db.close_db());
$display("REVIEW|vendor_resource_trace|%0d", uvm_resource_db_options::is_tracing());
$display("REVIEW|done|1");
end
endmodule