2016-10-12 3 views
0
  1. Verilogモジュールで「Generate Block」が実行されるのはいつですか?
  2. Generate Block内のコードは順番に実行されますか?
+0

質問に関連するコードをいくつか表示してください。これにより、適切な回答が得やすくなります。 –

+0

@MortenZilmer私はIEEE-Verilog pdfから「Generate」について読んでいます。 「ブロックの生成は、シミュレーション時ではなく精緻化時に実行されます」というメッセージが表示されます。その声明は何を意味していますか? –

+0

エラボレーションとは、すべてのモジュールが後でシミュレートできる一貫した設計に組み合わされている場合や、モジュールのパラメータが使用されている場所のモジュールの設定に応じて特定の値が割り当てられている場合などです。 –

答えて

0

生成ブロックは、常にブロックまたは初期ブロックのように実行することはできませんが、生成段階で評価されます。生成一般に、例えば、同じモジュールまたはロジックの複数のインスタンスをインスタンス化するために使用される:

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をテストできます。

+0

答えに感謝します。 –

0

generateブロックは実行されません。モジュール内に複数の反復ブロックがある場合、generateブロックを使用することができます。

生成構造は、生成ブロックをモデルに条件付きまたはインスタンス生成するために使用されます。

生成ブロックは、1つ以上のモジュール項目の集合です。生成ブロックには、ポート宣言、ブロック指定、またはスペルパラム宣言を含めることはできません。生成ブロックで宣言されたパラメータは、localparamsとして扱われます。他のすべてのモジュール項目(他の生成構造を含む)は、生成ブロックで使用できます。

構文を生成すると、パラメータ値がデザインの構造に影響を与えることができます。また、繰り返し構造を持つモジュールをより簡潔に記述することができ、再帰的モジュールのインスタンス化を可能にします。

生成スキームは、設計の精緻化中に評価されます。それらは はシミュレーション時に実行されません。それらは精緻化時に評価され、シミュレーションが始まる前に結果が決定されます。

詳細については、SV1800-2012 LRMのトピック27を参照してください。

+0

回答ありがとう –

関連する問題