End uvm test when coverage is 100% for each subscriber

I have multiple agents for my code and hence I have multiple subscribers to check the coverage for each of them.
I want to the test to self end when both subscribers’ coverage are 100%
I have a flag called test_done in the sequence that keeps the sequence running untile It’s 1. But How could I make this flag=1 when both subscribers coverage is 100%? Where this code should be written?
I tried to run in the environment but I got an error.
Here are the codes:

Subscriber


    virtual function get_cov(); 
      return this.test_done_sub; 
    endfunction
    virtual function void write(seq_item t);
        real current_coverage; 
        item = t;
        seq_cnt++; 
        cg_identifier.sample(); 
        current_coverage = cg_identifier.get_coverage();
        `uvm_info(get_full_name(),$sformatf("%0d Items sampled, Coverage %d %% reached", seq_cnt, current_coverage), UVM_MEDIUM) 

        if(current_coverage == 100)  
            test_done_sub = 1;

    endfunction: write


Environment:


    function void check_phase(uvm_phase phase);
        `uvm_info(get_full_name(),$sformatf("\ntest_done_sub for master = %d \n test_done_sub for slave = %d\n", m_fc.get_cov(), s_fc.get_cov()), UVM_HIGH);
        if(m_fc.get_cov() && s_fc.get_cov() )
            test_done = 1; 
    endfunction: check_phase

Either Check phase or run phase, I get this error for both subscribers:
UVM_ERROR @ 346185: uvm_test_top.sm_env_h.hl_s_agnt_h.sqr@@hl_s_seq [uvm_test_top.sm_env_h.hl_s_agnt_h.sqr.hl_s_seq] Response queue overflow, response was dropped
UVM_ERROR @ 346375: uvm_test_top.sm_env_h.hl_m_agnt_h.sqr@@hl_m_seq [uvm_test_top.sm_env_h.hl_m_agnt_h.sqr.hl_m_seq] Response queue overflow, response was dropped

In reply to Mostafa Ellebody:
The error messages you are showing are related to a rsp ovreflow and with respect to the coverage.
This happens when you are passing back rsp top the sequence but do not call get_response().
You should look there.