AR# 24108

9.1i, Incremental Design Flow - インクリメンタル デザインを ISE 9.1i で再利用する方法

説明

キーワード : design, flow, incremental, reuse, partitions, デザイン, フロー, インクリメンタル, リユース, 再利用, パーティション

古いインクリメンタル デザイン フローを新しいパーティション インクリメンタル デザイン フローに移行する方法を教えてください。

ソリューション

このアンサーでは、ISE 8.2i でインクリメンタル デザインを再利用する方法を説明します。 ISE 8.1i およびそれ以前のバージョンでのインクリメンタル デザインの再利用についても触れます。 インクリメンタル デザインの再利用には、パーティションが使用されるようになりましたが、ここではパーティションの作成方法も説明します。

ISE 8.2i より前のバージョンでのインクリメンタル デザインの再利用

ISE 8.2i より前のバージョンでは、どのモジュールをアップデートするかを XST で指定する必要があり、 そのモジュールのみが再合成されていました。 これは、XCF ファイルまたは HDL ファイルで、MODEL および INCREMENTAL_SYNTHESIS 制約を設定することで行われていました。 INCREMENTAL_SYNTHESIS は、どのモジュールが保持/再合成されるかをコントロールするためのものでした。

INCREMENTAL_SYNTHESIS 制約が付けられた各モジュールは、AREA_GROUP 制約および RANGE 制約で制約する必要がありました。 必要なモジュールがすべて制約されると、-gm incremental および -gf <guide_file.ncd> オプションを MAP および PAR で指定する必要がありました。 これで、MAP と PAR は、以前の NCD (guide_file.ncd) を新しいデザイン ファイルと比較し、どの部分を再インプリメントすべきかを判断していました。

新しいインクリメンタル デザイン

ISE 8.2i では、XST で合成制約を使用する必要がないため、物理的制約は削除する必要があります。 MODEL および INCREMENTAL_SYNTHESIS 制約を XCF ファイルまたは HDL ファイルから、AREA_GROUP 制約を UCF ファイルから削除してください。 "-gm" および "-gf" オプションも MAP と PAR のどちらにも必要ありません。 これに代わって、Project Navigator で自動的にどのモジュールがアップデートされたかが確認され、XST で、パーティションを持つこれらのモジュール/インスタンスのみが再合成されます。 パーティションの使用により、デザイン再利用が可能になり、インプリメンテーションのランタイムを短縮できます。

MODEL および INCREMENTAL_SYNTHESIS 制約が設定してあったモジュールまたはインスタンスにパーティションを作成します。 デザインのトップ レベルにはパーティションを作成しないでください。これは Project Navigator で自動的に行われます。 作成には Project Navigator または Tcl を使用します。 Project Navigator の場合は、モジュール/インスタンスを右クリックし、[New Partition] を選択します。 Tcl の場合は、 スクリプト、xtclsh、Tcl コンソールで、「partition new <instance_name>」または「partition new /dve_ccir_top/GENERATOR」と入力します。 詳細は ISE ヘルプの「FPGA でのデザイン クロージャの達成」を参照してください。

Figure 1 - New Partition Dialog in Project Navigator
Figure 1 - New Partition Dialog in Project Navigator


パーティションは論理デザインのどのインスタンスにも作成でき、そのインスタンスが可能な限りインプリメンテーションで再利用されるように指示するものです。 パーティションは階層化でき、デザインのどの HDL モジュール インスタンスにも定義できます。 インスタンスを複数持つモジュールには複数のパーティションを作成できます。この場合、各インスタンスにパーティションは 1 つとなります。 パーティションは IP コアのラッパに配置しますが、コアそのものには配置しません。 HDL デザインのトップ レベルはデフォルトで 1 つのパーティションになります。

パーティションは、デザインの最上位レベルでロジックを含めることができ、範囲や AREA_GROUP 制約は必要ありません。 パーティションは、ソース インスタンスを再利用のために定義し、そのソース インスタンスは、階層のどのレベルの HDL、回路図、Edif でもかまいません。 下位のソース インスタンスがパーティションとして定義されている場合は、そのトップ モジュールも自動的にパーティションとして定義されます。 パーティションは、デザイン階層のあるノードに対しパーティションを作成することで有効になります。 Verilog では、パーティションはモジュール インスタンスに設定されており、VHDL では、エンティティ アーキテクチャに設定されています。

パーティションは、コマンド ラインの変更、制約の変更、またはインプリメンテーション オプションの変更があると、再インプリメントされます。 パーティションは自動的に入力ソースの変更を検出します。入力ソースの変更には、HDL の変更、UCF でのパーティションに設定された物理的制約やロケーション制約の範囲に関する制約ファイルでの変更などが含まれます。 インプリメンテーション ツールのエフォート レベルなど、コマンド ライン オプションに変更があっても、 影響を受けるパーティションしか再インプリメントされません。

インクリメンタル デザイン モジュールに関連付けられていたエリア制約またはエリア グループは、パーティションに関連付けられています。 新しいパーティションではエリア グループ制約が使用できるため、ユーザー定義の階層エリア グループに対してはパーティションが作成でき、既存のエリア グループ制約では、RANGE、COMPRESSION、PLACE などの対応するインプリメンテーション オプションをそのまま使用できます。 エリア制約は、UCF ファイルで INST 文を使って作成する必要があります。

Project Navigator でどのモジュールがアップデートされているかを把握しておくだけでなく、以前にインプリメントされたデザイン実行を使って、アップデートされていない部分のコピーと貼り付けもします。 つまり、インプリメンテーション ツールで、以前のデザイン インプリメンテーションが現在のデザイン インプリメンテーションに再利用されます。 このため、ランタイムとメモリ使用率が削減されます。

パーティションを効果的に使用するには、I/O を駆動するレジスタまたは I/O に駆動されるレジスタをデザインの最上位レベルに配置します。 デザインのトップ レベルに ODDR と IDDR を配置します。 そして、パーティション モジュールの入力と出力にレジスタを配置します。 パーティションは、合成とインプリメンテーションの前にインスタンスに配置しておいてください。 これで、インプリメンテーション ツールで、次のデザイン実行で、どのモジュール/インスタンスが再利用/再インプリメンテーションされるのかを把握できます。

インクリメンタル デザインへのアドバイス

パーティションは、主要な、またはタイミング クリティカルなモジュールに配置してください。 こうしておくと、合成ツールとインプリメンテーション ツールで、前のバージョンのデザインが再利用され、アップデートされたパーティションが合成/インプリメントされます。 また、インプリメンテーション ツールのランタイムおよびメモリ使用率も削減できます。 パーティションは、Project Navigator または Tcl インターフェイスで作成できます。
AR# 24108
日付 12/08/2011
ステータス アーカイブ
種類 一般