0
はSVインタフェース内のコードを考えてみましょブロック要素を生成するアクセス方法:階層
genvar i;
generate
for (i = 0; i < 2; i++) begin : g1
task ab();
///< something here
endtask
end
endgenerate
LRMによると、1800年から2012年、私は技術的に(モニターのVIFに考えることで、このタスクにアクセスすることができるはずセクション27.6は、仮想インスタンスでありますのインタフェース:
vif.g1[i].ab();
これは間違いありませんか?
vif.genblk1[i].ab();
:はい、それはvif.g1は(推敲時間)見つけることができない報告ので、私もそれだけであることを仮定という名前のブロックせずにそれを試してみたそれを支える
を問題を持っているシミュレータ場合運がない。 ここで問題は何ですか?私は、モニターや他のクラスは実行時に作成されたハンドルを持っていると思いますが、インターフェースは静的な時間でコンパイルされ、インターフェースのすべての要素が利用可能でなければなりません。
ああ、ループがフラット/アンロールの生成範囲を超えないようにしても、たくさんのタスクコールがあれば本当にたくさんのコードになるでしょうが、私はそれが一行の文であると思いますので、うまくいくはずです。提案のおかげで、私は別の生成されたブロックにアクセスすると:) – wisemonkey
問題は、動的範囲の参照のアウトとはほとんどを持っていることを試してみましょう。問題はgenvar値を使用して型を定義することができることです。つまり、生成されたブロックごとに異なる型がある可能性があります。真の配列はすべての要素が同じ型です。例えば: 'のための(genvar II = 0; II <2; II ++)開始:G1 ビット[I + 1:0] VAR1。 関数[ii + 1:0] func; リターン '1; VAR1及びFUNCに endfunction'各参照は、静的に決定タイプを有する必要があります。私はそれについて考えていなかった –
感謝:)ところでちょうどサイドノートVCS(今うまくいけば、彼らが将来的に修正します)の報告が備わっていますまだ実装されていません、しかし、のIncisiveはModelSimの/クエスタ – wisemonkey