web-dev-qa-db-ja.com

構造Verilogと動作Verilogの違いは何ですか?

タイトルのように、構造と動作のVerilogの主な違いは何ですか?

8
user2219586

IEEE Stdによると、これらの用語の厳密な定義はありません。ただし、通常、structuralは、モジュールインスタンスを使用して設計を記述することを指します(特に、ANDゲートやフリップフロップなどの下位レベルのビルディングブロックの場合)。一方、behavioralは、 alwaysブロックを使用して設計を記述します。

ゲートネットリストは常にstructuralであり、RTLコードは通常behavioralです。 RTLには、クロックゲートとシンクロナイザーセルのインスタンスがあるのが一般的です。

11
toolic

構造

ここで、関数は、インバーター、MUX、加算器、デコーダー、基本的なデジタル論理ゲートなどの基本的なコンポーネントを使用して定義されます。これは、関数を実装するために使用できる回路のさまざまな部分を接続して配置するのと同じです。

行動

Verilogの動作記述は、アルゴリズム的な方法でデザインの機能を記述するために使用されます。 Verilogの動作モデリングでは、C言語の構成に類似した構成を使用します。さらに、これは2つのサブカテゴリに分けられます。

  • (a)連続

出力へのデータの割り当ては継続的です。これは、明示的な「assign」ステートメントを使用するか、宣言中にワイヤに値を割り当てることによって実装されます。割り当てた場合、入力の変更はすぐに出力に影響します。したがって、出力はwireとして宣言されます。

  • (b)手順

ここでは、データの割り当ては継続的に実行されるのではなく、感度リストで指定された特定のイベントで発生します。このタイプのモデリングスキームは、「always」や「initial」などの手続き型ブロックを使用して実装されます。

ここで、出力変数はregとして定義する必要があります。これは、指定された感度リストの変更後に新しい割り当てが発生するまで、前の値を保持する必要があるためです。

お役に立てれば :)

5
Curious

構造Verilogは、and、or、notなどの単純なWordのプリミティブを処理します。プリミティブはライブラリから呼び出され/推測され、入出力ポートに接続されます。例

 module structural(y,a,b);
    input a,b;
    output y;
    and a1 (y,a,b); // and is the primitive inferred and a1 is the instance name.
 endmodule

動作ベリログは、システムのロジックまたは動作を扱います。複雑なロジックの実装を処理するため、業界ではすべてRTLと呼ばれるシステムの動作モデルを実装しています。動作RTLがSV/UVMを使用してフロントエンドエンジニアによって検証されると、このRTLはゲートレベル、つまり合成に使用される構造に変換されます。

詳細については、SamirPalnitkarによって書かれたVerilogの本を参照してください。

0
Rajsekhar

構造Verilogは通常、合成可能で(正確で意味のあるハードウェアを実現している)Verilogコードと呼ばれ、通常はレジスタ転送レベル(RTL)で記述されます。一方、Behavioral Verilogは通常、より高いレベルのハードウェアまたは機能の動作記述です。ビヘイビアコードは、たとえばタイムスケールでスケーリングされたVerilogコードで遅延を定義する場合、合成可能である必要はありません。シンセサイザーは、コードをロジックとハードウェアに変換するときにそれを考慮しませんが、シミュレーションの目的があります。同じことが構造的および動作的VHDLにも当てはまります。

0
Keyvan Shahin

Behavioralは、Verilogですでに定義されているAnd、Or、Notゲートを使用できる論理ゲートの説明を使用しませんが、Structureは、(And/Or/Not)というモジュールが必要であることを説明し、その機能を説明する論理ゲートの説明を使用します。 &/ | /〜。

0
Nada Elokaily