In reply to cgales:
Thanks for your reply, cgales.
Based on you answer, I delete the ~rand~ keyword before b_transaction declared in a_transaction. The simulation result shows that the ~post_randmize~ function of b_transaction is only printed once, which is exactly the same as what you said!
Still I am little confused. If ~b_transaction~ is decared as rand in ~a_transaction~ and the size of ~b_xact_queue~ is contrained to 0, do it mean that during the randomization process ~b_transaction~ will be created and randomized but not pushed into b_xact_queue? Is that the truth ?