- Verilogモジュールで「Generate Block」が実行されるのはいつですか?
- Generate Block内のコードは順番に実行されますか?
答えて
生成ブロックは、常にブロックまたは初期ブロックのように実行することはできませんが、生成段階で評価されます。生成一般に、例えば、同じモジュールまたはロジックの複数のインスタンスをインスタンス化するために使用される:
module and_mod (input bit a, input bit b, output out);
assign out = a & b;
endmodule
module test #(
parameter NUM_INSTANCES = 3
) (
input bit [NUM_INSTANCES - 1 : 0] a,
input bit [NUM_INSTANCES - 1 : 0] b,
output bit [NUM_INSTANCES - 1 : 0] a_and_b,
output bit [NUM_INSTANCES - 1 : 0] a_or_b,
output bit [NUM_INSTANCES - 1 : 0] a_xor_b
);
genvar i;
generate
for(i = 0; i < NUM_INSTANCES; i++)
begin
//module instance
and_mod and_inst (.a(a[i]),.b(b[i]), .out(a_and_b[i]));
//contionous assignement
assign a_xor_b[i] = a[i]^b[i];
//always block
always @(*)
begin
a_or_b[i] = a[i] | b[i];
end
end
endgenerate
endmodule
これはブロックを生成するコードのコピーが内部ブロックを生成NUM_INSTANCESに評価します。あなたが見ることができるように、モジュールのインスタンス化、代入、always/initialブロックをgenerateブロック内に持つことができます。 and_modには1ビット幅のポートしかないので、計算に3つのインスタンスと3ビットのレジスタが必要ですが、ブロックを生成することでコードに3つのインスタンスを記述する必要はありません。
生成ブロック内のコードの実行はコード自体に依存し、割り当ては同時に実行され、常にブロック内のコードは生成ブロックなしと同じ順番で実行されます。
hereをテストできます。
答えに感謝します。 –
generateブロックは実行されません。モジュール内に複数の反復ブロックがある場合、generateブロックを使用することができます。
生成構造は、生成ブロックをモデルに条件付きまたはインスタンス生成するために使用されます。
生成ブロックは、1つ以上のモジュール項目の集合です。生成ブロックには、ポート宣言、ブロック指定、またはスペルパラム宣言を含めることはできません。生成ブロックで宣言されたパラメータは、localparamsとして扱われます。他のすべてのモジュール項目(他の生成構造を含む)は、生成ブロックで使用できます。
構文を生成すると、パラメータ値がデザインの構造に影響を与えることができます。また、繰り返し構造を持つモジュールをより簡潔に記述することができ、再帰的モジュールのインスタンス化を可能にします。
生成スキームは、設計の精緻化中に評価されます。それらは はシミュレーション時に実行されません。それらは精緻化時に評価され、シミュレーションが始まる前に結果が決定されます。
詳細については、SV1800-2012 LRMのトピック27を参照してください。
回答ありがとう –
- 1. java.io.InputStreamReader.ready()ブロック実行
- 2. WScript.Shellとブロック実行?
- 3. Pytestブロック実行コード
- 4. Android - ボレー応答が生成されたときにブロックを実行
- 5. 実行ブロックのないNSPrivateQueueConcurrencyType
- 6. 文ブロックのアブソリュート実行
- 7. 実行時のXpath式の生成
- 8. 実行中のエラーbpm生成Emberアプリケーション
- 9. VMで実行中のプログラム生成エラー
- 10. 実行時生成コードのJavaガベージコレクション
- 11. Objective-Cブロックとデータ実行
- 12. JavaScript実行ブロックとメッセージキュー
- 13. Symfony Twigブロック生成の優先度
- 14. elseブロック内のコードの実行とその後のブロック
- 15. スウィフト "実行ブロック操作" で、次のブロックの操作
- 16. SASマクロコードを実行せずに生成
- 17. 実行方法Herokuで生成する
- 18. データバインディング生成後にAnnotationProcessorを実行
- 19. SSMSでLINQ生成SQLを実行
- 20. 自動テスト生成とリアルタイムHIL実行?
- 21. 独立型実行可能ファイル生成
- 22. 実行時にエンティティを生成
- 23. ブロック実行のruby yieldメソッドのテスト
- 24. メインキューのdispatch_asyncブロックがモーダル実行ループで実行されない
- 25. DefaultHttpClient.executeの実行でブロックされたアプリケーション(killProcess)をブロックします
- 26. C#でXSLブロックを生成する
- 27. ブロックによる手順テレイン生成
- 28. 長期実行PL/SQLブロックの監視
- 29. エラー私のメインモジュールで実行ブロック
- 30. ALL UIButtonの遅延実行ブロック
質問に関連するコードをいくつか表示してください。これにより、適切な回答が得やすくなります。 –
@MortenZilmer私はIEEE-Verilog pdfから「Generate」について読んでいます。 「ブロックの生成は、シミュレーション時ではなく精緻化時に実行されます」というメッセージが表示されます。その声明は何を意味していますか? –
エラボレーションとは、すべてのモジュールが後でシミュレートできる一貫した設計に組み合わされている場合や、モジュールのパラメータが使用されている場所のモジュールの設定に応じて特定の値が割り当てられている場合などです。 –