モデルの基本構造と、実行フェーズについて説明します。
UVMでは、特定のメソッド(task / function)が順番に呼ばれる仕組みがあります。これを理解することで、特定の処理を意図したタイミングで実施しやすくなります。読んでわからないところは流し読みし、 あとから読み返してください。唯一、run_phaseだけが「task」です。
UVMには、VMM系の人も使いやすいように、同じ意味を持った違う名前のメソッドで呼び出す機構があります。上記はOVM系列です。
ここで重要な事は、上記メソッドが「順番に実行される」ということです。デルタ遅延の影響が気になって、programブロックで書かないと!ということから解放されるわけです。もちろん、run_phase内で fork-joinしたときの並列処理間のデルタ遅延問題は残りますが、それはeventを利用したりして対処すればいいのかなと。