12 `uvm_component_utils_begin(cl_scb_test_io_std_tlm_gp_test)
14 `uvm_component_utils_end
19 function new(string name = "cl_scb_test_io_std_tlm_gp_test", uvm_component parent = null);
20 super.new(name, parent);
26 extern
virtual function void pre_build();
27 extern task run_phase(uvm_phase phase);
28 extern
virtual function void check_phase(uvm_phase phase);
32 function void cl_scb_test_io_std_tlm_gp_test::pre_build();
35 this.syoscb_cfgs.syoscb_cfg[0].set_max_print_orphans(-1);
38 `ifdef SYOSIL_APPLY_TLM_GP_CMP_WORKAROUND
39 uvm_root::get().set_report_severity_id_override(UVM_ERROR, "COMPARE_ERROR", UVM_INFO);
42 endfunction: pre_build
44 task cl_scb_test_io_std_tlm_gp_test::run_phase(uvm_phase phase);
45 uvm_tlm_generic_payload gp1, gp2;
47 phase.raise_objection(this);
48 super.run_phase(phase);
52 gp1 = uvm_tlm_generic_payload::type_id::create("gp1");
53 gp2 = uvm_tlm_generic_payload::type_id::create("gp2");
57 if(!gp1.randomize() with { this.m_length == 5; }) begin
58 `uvm_fatal("RAND", "Unable to randomize gp1");
60 if(!gp2.randomize() with { this.m_length == 6; }) begin
61 `uvm_fatal("RAND", "Unable to randomize gp2");
64 scb_env.syoscb[0].add_item("Q1", "P1", gp1);
65 scb_env.syoscb[0].add_item("Q2", "P1", gp2);
67 this.scb_env.syoscb[0].flush_queues_all();
69 phase.drop_objection(this);
72 function void cl_scb_test_io_std_tlm_gp_test::check_phase(uvm_phase phase);
73 super.check_phase(phase);
76 `ifdef SYOSIL_APPLY_TLM_GP_CMP_WORKAROUND
78 uvm_report_server rs = uvm_report_server::get_server();
79 int num_cmp_err = rs.get_id_count("COMPARE_ERROR");
81 if(num_cmp_err != 1) begin
82 `uvm_error("TEST", $sformatf("Number of COMPARE_ERRORs was not 1 as expected. Got %0d COMPARE_ERROR instead", num_cmp_err))
87 endfunction: check_phase
IO comparison test to ensure that the SYOSIL TLM GP comparison workaround works as expected...