In reply to rag123:
You have 2 forked tasks in parallel. The change in data is not detected in the begin-end task.
Try:
fork
my_first_task (addr,data);
begin
#1;
@ $changed(data);
$display ("Read from bus %h \n",data);
end join
Ben SystemVerilog.us