Объявленный в файле Receiver.sv класс Receiver также, как и драйвер, содержит метод start():

task start();
Transaction trans = new();

    while (!trans.stop) begin
        receive(trans);
        rcvr2sb.put(trans);
    end

endtask : start					

Пока не пришел сигнал stop, который выставляет Driver, повторяется следующая последовательность действий:
1) Принимается транзакция:

receive(trans);

2) Принятая транзакция кладется в почтовый ящик:

rcvr2sb.put(trans);

Аналогично методу Driver::drive() в методе receive() прием транзакции можно конфигурировать в зависимости от принципа работы тестируемой схемы.
 SystemVerilog-описание  класса Receiver:

`ifndef _RECEIVER_
`define _RECEIVER_

class Receiver;

virtual output_interface.output_prt output_intf;
mailbox #(Transaction) rcvr2sb;

// Constructor
function new(
    virtual output_interface.output_prt output_intf_new,
    mailbox #(Transaction) rcvr2sb
);
    this.output_intf = output_intf_new ;
    if(rcvr2sb == null) begin
        $display(" **ERROR: rcvr2sb is null");
        $finish;
    end else
        this.rcvr2sb = rcvr2sb;

endfunction : new

task receive(Transaction trans);

    @(posedge output_intf.clock);
    trans.result = output_intf.cb.result;

endtask

// Start method
task start();
Transaction trans = new();

    while (!trans.stop) begin
        receive(trans);
        rcvr2sb.put(trans);
    end

endtask : start

endclass

`endif

Из описанных в классе Receiver методов при конфигурировании изменяется только метод receive().