Need help in monitor class, in run_phase()?

Hello all,
I m working on uvm. In monitor class, I am getting packets serially from the DUT and then I need to convert these serial bits parallely into groups of 10bits so that it can be an input to the 8b10b decoder. The output of decoder will be 8 bits bytes, from which I need to reform my packets to be compared with the input packets,sent to the DUT from driver. I am confused how to tackle these tasks. I am hoping that 8b10b decoder and serial in parallel out(sipo) to use as virtual tasks which can be called during the run phase() of monitor, right? Please correct me anyone, if I am wrong?

Also how to pass the output of sipo, the 10 bits, to decoder as an input? Can the output of one task can be given to input of another/next task, just like that, I mean with no real problem? Or how else I should put these two tasks properly in driver class? Any help is appreciated.

Thanks,
Swapnil