合成ツールのマップでタイミング、消費電力、エリア制約が満たされない場合、またはデバイス内の特定機能を推論できない場合、インスタンシエーションを使用した方がよいことがあります。
インスタンシエーションすると、ユーザーが合成ツールを完全に制御できます。たとえば、クロック周波数を改善するため、エリアを節約する目的で通常合成ツールで選択される LUT とキャリー チェーン エレメントの組み合わせではなく、LUT のみを使用するコンパレータをインプリメントできます。
デバイスで使用可能な複雑なリソースを使用できるようにするには、インスタンシエーションが唯一の方法であることもあります。これは、次が原因です。
- HDL 言語の制限
たとえば、VHDL でダブル データ レート (DDR) 出力を記述することはできません。これは、2 つの別のプロセスで同じ信号を駆動する必要があるからです。
- 合成ツールの推論の制限
たとえば、合成ツールには現在のところ RTL 記述からクロック調整ブロック (CMB) を推論する機能はないので、インスタンシエートする必要があります。
AMD プリミティブをインスタンシエートする場合は、ターゲット アーキテクチャのユーザー ガイドおよびライブラリ ガイドを参照し、コンポーネントの機能、設定、接続を完全に理解してください。
推論とインスタンシエートのどちらでも、AMDでは Vivado Design Suite 言語テンプレートからテンプレートを使用することをお勧めします。
次にヒントを示します。
- 可能な限り機能を推論します。
- 合成可能な RTL コードで要件が満たされない場合は、コードをデバイス ライブラリ コンポーネントのインスタンシエーションと置き換える前に、要件を見直します。
- 一般的な Verilog および VHDL ビヘイビアー構文を記述する場合や、プリミティブをインスタンシエートする必要がある場合は、Vivado Design Suite 言語テンプレートを使用することを考慮します。