1 typedef class small_seq_item;
2 typedef class large_seq_item;
14 `uvm_component_utils_begin(cl_scb_test_io_std_sbs_print)
16 `uvm_component_utils_end
21 function new(string name = "cl_scb_test_io_std_sbs_print", uvm_component parent = null);
22 super.new(name, parent);
28 extern task run_phase(uvm_phase phase);
32 class small_seq_item extends uvm_sequence_item;
36 `uvm_object_utils_begin(small_seq_item)
37 `uvm_field_int(int_a, UVM_DEFAULT)
38 `uvm_field_int(int_b, UVM_DEFAULT)
41 function new(string name = "small_seq_item");
45 endclass: small_seq_item
47 class large_seq_item extends uvm_sequence_item;
52 constraint co_int_arr_size {int_arr.size() inside {[6:10]};}
54 `uvm_object_utils_begin(large_seq_item)
55 `uvm_field_int(int_a, UVM_DEFAULT)
56 `uvm_field_int(int_b, UVM_DEFAULT)
57 `uvm_field_array_int(int_arr, UVM_DEFAULT)
60 function new(
string name =
"large_seq_item");
64 endclass: large_seq_item
66 task cl_scb_test_io_std_sbs_print::run_phase(uvm_phase phase);
67 small_seq_item small1, small2, small3;
68 large_seq_item large1, large2;
71 uvm_comparer comparer;
73 phase.raise_objection(
this);
77 uvm_top = uvm_root::get();
78 uvm_top.set_report_severity_id_override(UVM_ERROR,
"COMPARE_ERROR", UVM_INFO);
80 super.run_phase(phase);
82 small1 = small_seq_item::type_id::create(
"small1");
83 small2 = small_seq_item::type_id::create(
"small2");
84 large1 = large_seq_item::type_id::create(
"large1");
85 large2 = large_seq_item::type_id::create(
"large2");
87 comparer = this.scb_env.syoscb_cfgs.syoscb_cfg[0].get_default_comparer();
89 this.scb_env.syoscb_cfgs.syoscb_cfg[0].set_default_comparer(comparer);
90 this.scb_env.syoscb_cfgs.syoscb_cfg[0].set_default_enable_comparer_report(1
'b1); 92 if(!small1.randomize()) begin 93 `uvm_fatal("RND", "Unable to randomize small1"); 96 if(!small2.randomize()) begin 97 `uvm_fatal("RND", "Unable to randomize small2"); 100 if(!large1.randomize()) begin 101 `uvm_fatal("RND", "Unable to randomize large1"); 104 if(!large2.randomize() with {large2.int_arr.size() != large1.int_arr.size();}) begin 105 `uvm_fatal("RND", "Unable to randomize large2"); 108 $display("\n>>>Two items of the same type with different contents<<<"); 110 scb_env.syoscb[0].add_item("Q1", "P1", small1); 111 scb_env.syoscb[0].add_item("Q2", "P1", small2); 113 scb_env.syoscb[0].flush_queues_all(); 115 $display("\n>>>Two items of different types<<<"); 117 scb_env.syoscb[0].add_item("Q1", "P1", large1); 118 scb_env.syoscb[0].add_item("Q2", "P1", small1); 120 scb_env.syoscb[0].flush_queues_all(); 122 $display("\n>>>Two items of the same type, varying darray lengths<<<"); 124 scb_env.syoscb[0].add_item("Q1", "P1", large1); 125 scb_env.syoscb[0].add_item("Q2", "P1", large2); 127 scb_env.syoscb[0].flush_queues_all(); 129 $display("\n>>>Two items of the same type, same darray lengths<<<"); 130 if(!large1.randomize()) begin 131 `uvm_fatal("RND", "Unable to randomize large1") 134 if(!large2.randomize() with {large2.int_arr.size() == large1.int_arr.size();}) begin 135 `uvm_fatal("RND", "Unable to randomize large2") 138 scb_env.syoscb[0].add_item("Q1", "P1", large1); 139 scb_env.syoscb[0].add_item("Q2", "P1", large2); 141 scb_env.syoscb[0].flush_queues_all(); 146 phase.drop_objection(this); static void set_show_max(uvm_comparer comparer, int unsigned sm)
Sets the value of the show_max knob in the given comparer.
Shows a number of different ways that the side-by-side miscompare table can be used.