2個目が出る前に消されてしまいます。現在のスレッドから生まれた子供、孫..に対してのみ作用します。同じスコープであっても自分が起動していないスレッドのことは関知しません。現在のスレッドが生成した全てのスレッドの完了を待ちます。起動した4つのスレッドの完了を待ちます(ブロックします)。イネーブルさせることもできます。作用は、同じスコープでも現在のスレッドのみに働きます。次の例は、難しいです。ここでの問題はmが不定(undetermined,シミュレータ依存)になることです。jは、automatic変数で、下位スコープから参照可能です。スコープとは、可視範囲のことで、SVのautomatic変数はC++のそれに準じた扱いになります。ここで、intは、2値integerです。-join_noneは、ノンブロッキングプロセスですから、イタレーション3回分の3つのプロセスが時刻0で起動します。時刻0時点では3つのダイナミックインスタンスプロセスが存在します。内部変数kは、jで初期化されます。kは、起動したインスタンスプロセスNoと言ってもよいでしょう。3)fork下のステートメントは、独立した各々プロセスとして起動されますが、その実行は、スケジュールされます。スケジュールは(時刻0には違いないのですが、)実装依存です。参照するjがいつの時点のjなのかは、不定になります。kは、プロセス起動時にイニシャライズされるので、子プロセスからは、自分のプロセスのkを参照することができます。HDLでのfunction制限事項1)イベントは書けない2)ディレイは書けない3)taskは、起動できない4)ノンブロッキング文は使用できないという制限が、fork-join_none内ではなくなります。function自体が、時間0で戻る事(時間を消費しない)は、従来と同じです。fork-join_noneは、いわば、ノンブロッキングなプロセスになりますが、そこで参照される変数については、気をつける必要があります。returnで返るまでです。抜けた後も、fork-join_noneプロセスは、独立プロセスとして生き続けることに注意してください。fork-join_noneのプロセス生成と、block_itemsの初期化は、functionが生きている間に行われますが。後、イベント文(#delay,@(x)等)のブロッキング文に出会ってからです。-join_none内に、a1を参照するコードがあると、dangling参照になってしまいます。下のように、block_itemの宣言で、a1をa2に初期化コピーすることで、dangling参照を防止するようにしてください。%d",a,$time);li=32'h1234_5678;f(li);$display("HiHi2");endendmodule結果です。クド配列パックド配列と、アンパックド配列の2種類があります。大きな違いは、内部データの連続性です。パックドタイプは、連続していることが保証されますが、アンパックドの場合は、内部的な配置は、ベンダー依存になり内部データが連続している保証はありません。このことは、DPIを使いこなす上でも重要です。;//パック配列の基本形態です。書いてもなんら意味的に違いはありません。;//パック配列の基本形態です。クド配列の次元を増やすには、変数の左側を増やします。;//パック配列の基本形態です。2次元のパック配列になりました。$display("Fail");endendmoduleとなります。クド配列というのは、内部的にもベクタそのものです。endendmoduleとなります。Cも内部的な表現は、Eと同じです。次元が異なる配列の比較,C===Eは、トリッキーですが、処理系は、エラーを出さないと思います。このようにビットの連続性が確保されているのが、アンパック配列との大きな違いです。Cと宣言したかのように)ダンプされます。まではサポートすることになっています。これ以上は、実装依存です。巨大な配列は、アンパックにした方がよいでしょう。<パック配列になりえるものは>シングルビットのデータタイプに限られます。パック構造体、パック配列が再帰的になりえます。<符号は>パック配列の符号は、シングルベクタと見たときに宣言の符号が採用されます。