3 class cl_scb_test_iop_std_simple
extends cl_scb_test_single_scb;
7 `uvm_component_utils(cl_scb_test_iop_std_simple)
12 extern function new(string name = "cl_scb_test_iop_std_simple", uvm_component parent = null);
13 extern
virtual function void pre_build();
17 extern task run_phase(uvm_phase phase);
18 extern function void extract_phase(uvm_phase phase);
20 endclass : cl_scb_test_iop_std_simple
22 function cl_scb_test_iop_std_simple::new(string name = "cl_scb_test_iop_std_simple",
23 uvm_component parent = null);
24 super.new(name, parent);
27 function void cl_scb_test_iop_std_simple::pre_build();
30 this.syoscb_cfgs.syoscb_cfg[0].set_compare_type(pk_syoscb::SYOSCB_COMPARE_IOP);
31 this.syoscb_cfgs.syoscb_cfg[0].set_print_cfg(1'b1);
32 endfunction : pre_build
34 task cl_scb_test_iop_std_simple::run_phase(uvm_phase phase);
35 phase.raise_objection(this);
37 super.run_phase(phase);
41 for(int unsigned i=0; i<10; i++) begin
43 item1 = cl_tb_seq_item::type_id::create("item1");
45 scb_env.syoscb[0].add_item("Q1", "P1", item1);
48 for(int unsigned i=0; i<10; i++) begin
50 item1 = cl_tb_seq_item::type_id::create("item1");
52 scb_env.syoscb[0].add_item("Q1", "P2", item1);
56 for(int unsigned i=0; i<10; i++) begin
58 item1 = cl_tb_seq_item::type_id::create("item1");
60 scb_env.syoscb[0].add_item("Q2", "P2", item1);
63 for(int unsigned i=0; i<10; i++) begin
65 item1 = cl_tb_seq_item::type_id::create("item1");
67 scb_env.syoscb[0].add_item("Q2", "P1", item1);
73 int cnt = this.scb_env.syoscb[0].get_total_queue_size();
75 `uvm_error("ERR", $sformatf("Did not have 0 items remaining after initial matches, had %0d", cnt))
81 uvm_root::get().set_report_severity_id_override(UVM_ERROR, "COMPARE_ERROR", UVM_INFO);
83 for(int i=0; i<2; i++) begin
85 item1 = cl_tb_seq_item::type_id::create("item1");
87 scb_env.syoscb[0].add_item("Q1", "P1", item1);
92 for(int i=1; i>=0; i--) begin
94 item1 = cl_tb_seq_item::type_id::create("item1");
96 scb_env.syoscb[0].add_item("Q2", "P1", item1);
99 phase.drop_objection(this);
102 function void cl_scb_test_iop_std_simple::extract_phase(uvm_phase phase);
104 super.extract_phase(phase);
109 if(uvm_report_server::get_server().get_id_count("COMPARE_ERROR") != 3) begin
110 `uvm_error("ERR", $sformatf("Did not provoke 3x compare error, iop comparisons are broken. Got %0d errors", cnt))
113 this.scb_env.syoscb[0].flush_queues_all();
116 endfunction: extract_phase