In reply to m_v:
You should never extend the uvm_sequencer class. The reason for this is that the run_phase() in the base uvm_sequencer is required to execute for proper functionality.
You should use a typedef:
typedef uvm_sequencer#(spi_transaction) spi_slave_sequencer;