In reply to Jyothsna:
It would help readability to remove all of the unnecessary begin/end keywords. Also, I assume the semicolons after the @(posedge clk) are typos. Otherwise your code would hang and there would be no output. Here is your code with that corrected:
endtask : run_phase
forever @(posedge clk)
forever @(posedge clk1)
Now it is easy to see that for each iteration of the forever loop, you are creating a set 4 processes associated with p1, p2, p6 and p7. And every posedge clk you are creating another 4 processes, but the previous process are still active since you used join_none. So by the time you get your c1,c2, c6, or c7 event, there are many processes waiting for that event.
I don't know what you are trying to achieve, so it is difficult to recommend an alternative.