Usage of pair_ap from uvm_in_order_comparator

I want to connect another block on scoreboard that receives the transactions from the uvm_in_order_comparator. But i dont know how to do this. The link to the comparator class is uvm_in_order_comparator . My block that i want to construct is:

class mul_analyzer extends uvm_component;
    `uvm_component_utils(mul_analyzer)
    
    mul_transaction tr_dut;
    mul_transaction tr_rm;
    uvm_analysis_export #(uvm_built_in_pair #(mul_transaction)) from_comparator;

    event begin_analyzer_task;

    int count;

   function new(string name = "mul_analyzer", uvm_component parent);
        super.new(name, parent);
        from_comparator = new("from_comparator", this);
        count = 0;
    endfunction
    
    
    virtual function void build_phase(uvm_phase phase);
        super.build_phase(phase);
    endfunction: build_phase
    
    virtual task run_phase(uvm_phase phase);
        super.run_phase(phase);
        forever begin
            @begin_analyzer_task;
            if(count >= 1000) begin 
                ...
            end
        end
    endtask: run_phase

    virtual function write (uvm_built_in_pair #(mul_transaction) t);
        tr_rm = mul_transaction::type_id::create("tr_rm", this);
        tr_dut = mul_transaction::type_id::create("tr_dut", this);
        tr_rm.copy(t.first);
        tr_dut.copy(t.second);
        count++;
        -> begin_analyzer_task;
    endfunction



endclass: mul8s_analyzer

But when i simulate shows that the connection between the ports are incompatible.

In reply to Jose_Iuri:

You’re not very clear on where the transactions are coming from. uvm_in_order_comparator only recieves transactions, it does not send them. It think you meant you want to get the same transactions from the monitor that are being sent to the comparison. If so, you will need to show more of the environment.

Thanks for the answer Dave.

I solve the problem. In fact, i just want to connect the pair_ap form uvm_in_order_comparator to another block, i was very confuse with the use of uvm_built_in_pair. But i understand the concept and the usage of this class. I needed to change the comparator to an uvm_in_order_class_comparator, so the new block are this that connects o pair_ap from the comparator becomes:

class mul8s_analyzer extends uvm_component;
    `uvm_component_utils(mul8s_analyzer)
    
    mul8s_transaction tr_dut;
    mul8s_transaction tr_rm;
    uvm_analysis_imp #(uvm_class_pair #(mul8s_transaction, mul8s_transaction), mul8s_analyzer) from_comparator;

    event begin_analyzer_task;

    int count;

    function new(string name = "mul8s_analyzer", uvm_component parent);
        super.new(name, parent);
        from_comparator = new("from_comparator", this);
        count = 0;
    endfunction
    
    
    virtual function void build_phase(uvm_phase phase);
        super.build_phase(phase);
    endfunction: build_phase
    
    virtual task run_phase(uvm_phase phase);
        super.run_phase(phase);
        forever begin
            @begin_analyzer_task;
            ...
        end
    endtask: run_phase
    endfunction

    virtual function write (uvm_class_pair #(mul8s_transaction, mul8s_transaction) t);
        tr_rm = mul8s_transaction::type_id::create("tr_rm", this);
        tr_dut = mul8s_transaction::type_id::create("tr_dut", this);
        tr_rm.copy(t.first);
        tr_dut.copy(t.second);
        count++;
        -> begin_analyzer_task;
    endfunction



endclass: mul8s_analyzer