RTLとBehavioral verilogの違い


回答:


5

動作コードは高レベルであり、通常は合成できません。ループ、遅延、「初期」ステートメントなどの構造は動作です。

RTLコードは下位レベルであり、合成を目的としています。これは、相互接続されたレジスタとそれらのレジスタ間の信号に対して実行される操作の組み合わせとして回路を定義します。

Yahoo Answersから取得し、Googleですぐに見つかりました!


1
ループは、反復数が制限されている場合は、rtlコードで使用できます。一部のツールは、電源投入条件を指定するための初期ブロックの使用もサポートしています。
Peter Green、

この質問/応答は、実際にGoogleが最初に行った応答
でし

3

「レジスタ転送レベル」コードは、レジスタとそれらの間にある組み合わせロジックの観点から記述されたコードであり、合成ツールへの入力として使用することを目的としています。コードは、言語の合成可能なサブセット[1]に固執します。明示的な遅延はなく、すべてのタイミングはクロックエッジに関するものです。レベルでトリガーされるラッチを表す構造体は、一般的に回避されます。レジスタは、通常、タイミングアナライザに詳細を提供できる少数のクロックでクロックされます。組み合わせロジックは通常、複雑さを制限する単一のクロックサイクル内で安定することが期待されています[2]。これはゲートレベルモデルよりも高いレベルですが、すべてのレジスタがすべてのクロックサイクルで持つ値を定義します。

「動作」コードは一般に、シミュレーションで使用するためのより高いレベルの動作を記述するコードですが、合成可能にすることは意図されていません。シミュレーションでデザインを取り巻く環境を説明するために使用できます。これは、個々のモジュールの詳細なRTL設計に取り掛かる前に、全体的な設計を整えるための設計の初期段階として使用できます。

[1]許可される正確なサブセットは、合成ツールによって異なります。
[2]シミュレーションよりも1サイクル以内に安定しない場合、合成によって異なる結果が得られる可能性があり、タイミングアナライザーは、明示的に指示されない限り違反を示します。


2

より一般的な定義。

動作コード:定義により、デジタルコンポーネントの動作を定義します。実際のハードウェア(合成)にどのように実装されるかについての情報はありません。必要な操作を実行するためのレジスタとゲートの実装方法については説明しません。これは、CでアルゴリズムまたはFSMを記述するようなものです。

RTL:デジタルコンポーネントのより正確な形式です。これは、コードが実際のHW(合成後)としてどのように実装されるかについての情報を提供します。また、レジスタとゲートの間でデータがどのように転送されるかについての情報も提供します。


1

それは同じ言語ですが、異なるスタイルが使用されています。経験を積むと、すぐに見分けることができます。それぞれの特徴をいくつか次に示します。

通常、動作のVerilogコードは、initial beginブロック内で上から下に実行される順次コンピュータープログラムのように見えます。出力は、コンソール$display()やファイルシステム、$openまたはを使用した波形ダンパーなどのシミュレータ機能への出力となる可能性があるため、最上位の動作モジュールで定義された入出力ポートがない場合が$dumpfileあり$dumpvarsます。長いシミュレーション時間待機#4000などを使用して実装されたステートメントとタスクの呼び出しの間の遅延に注意してくださいwishbone_master.checked_read(addr, value)。これらのより高いレベルの構成では、同等の合成テクノロジーがどのようなものであるか、または可能であるかは明らかではありません。

合成用のVerilogには常に入力/出力ポートがあります。ポートが接続されていない場合、モジュールには副作用がなく、削除できるためです[1]。遅延はおそらく特定のクロックのサイクルをカウントすることによって実装されます。一部のVerilogシステム関数は、たとえば$clog2(PARAMETER)合成用のコードで許可される場合があるため、の存在は$functionどちらの方法でも保証されないことに注意してください。合成用のコードは、それぞれが機密リストを持つ独立した「プロセス」の多くで構成される傾向があります。一部のテクノロジではinitial begin、メモリの初期化のためにブロックを許可しているため、保証はありません。

最終的に、設計者は自分が書くコードの目的を知っており、合成ツールセットまたはシミュレータでそれを適切に呼び出します。

[1] JTAGなどの内部チップ設備へのバックドア接続を行う可能性がある特定のIPブロックを除く

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.