インテル® Quartus® Primeプロ・エディション ユーザーガイド: パーシャル・リコンフィグレーション

ID 683834
日付 5/11/2020
Public
ドキュメント目次

1.5.2. PRファイルの管理

PRペルソナおよびそれに対応するソースファイルの管理を簡略化するには、次のPRプロジェクト・ファイル管理方法のいずれかを順守します。

方法1 (推奨) :各ペルソナに一意のエンティティーおよびファイル名を指定する

PRプロジェクト・ファイル管理方法を説明するために、2つのPR領域を含むデザインを考えてみます。各領域にそれぞれリンゴ、オレンジ、バナナのペルソナがあるとします。
図 6. 2つのPR領域と3つのペルソナを使用したデザイン例

PRファイル管理方法1では、プロジェクト内の各ペルソナに一意のエンティティーおよびファイル名のペアを指定します。例えば、

  • リンゴのペルソナを apple.sv ファイルに定義する
  • オレンジのペルソナを orange.sv ファイルに定義する
  • バナナのペルソナを banana.sv ファイルに定義する
注: コンパイルとPR動作を正常に行うには、すべてのペルソナに各 .sv ファイルで定義されたものと全く同じポート名と幅を持たせる必要があります。

ベースPRリビジョンRTLでは、両方のPR領域のPRペルソナとして「apple」を指定します。

図 7. ベースPRペルソナを「apple」に設定する

ベースペルソナを [apple, apple] に設定するために u_fruit_0u_fruit_1 をPRパーティションとPR領域として設定する場合、PR領域を占有するペルソナを簡単に変更することができます。それには、Design Partitions WindowのEntity Rebinding (ENTITY_REBINDING) オプションを使用するか、または .qsf を直接編集します。その例を次に示します。

PR実装 (impl) リビジョンのオレンジのペルソナを指定する場合 :

set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_1

PR実装 (impl) リビジョンのバナナのペルソナを指定する場合 :

set_intance_assignment -name ENTITY_REBINDING banana -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING banana -to u_fruit_1

各PR領域に異なるペルソナを指定する場合 :

set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING banana -to u_fruit_1

各実装リビジョンに対して、対応するソースファイルをプロジェクトに必ず含めてください(Project > Add/Remove Files in Project)。

方法2 : 1つのファイルをPRペルソナとしてパラメーター化する

PRファイル管理方法2では、ラッパーファイルとパラメーターを使用して、すべてのペルソナを定義する1つのファイルをパラメーター化します。例えば、方法1での説明と同様に、2つのPR領域を持つデザインを考えてみます。各PR領域にはそれぞれ3つのペルソナ候補があるとします。

図 8. 1つのファイル内のラッパーとパラメーター

次の例では、u_fruit_0u_fruit_1 が、ベースコンパイルのPRパーティションとPR領域として設定されています。FRUIT_TYPE パラメーターの 0 によって、両方のPRペルソナのapple エンティティーを生成します。

次に、パラメーター値を変更してペルソナを変更します。例えば、両方のPR領域にオレンジのペルソナを指定するには、FRUIT_TYPE パラメーターを 1:(FRUIT_TYPE=1) に設定します

これらのRTLへの変更に加えて、方法2を使用して .qsf を更新する場合は、次の追加手順も実行してください。

  1. fruit.sv ファイルのコピーを作成します。x_fruit.sv などの一意のファイルに名前を付けます。 また、エンティティー名を変更して .sv ファイルと一致させます。
  2. FRUIT_TYPE のデフォルトのパラメーターをVerilogマクロに設定します。この例では、 `X_FRUIT_TYPE とします。
    図 9. x_fruit.svとして保存されたfruit.svのコピー
  3. x_fruit.sv をプロジェクトに追加します (Project > Add/Remove Files in Project)。
  4. PR実装リビジョンの .qsf ファイルで次のように指定します。
    1. 次の行を追加して、 `X_FRUIT_TYPE Verilogマクロを 1に設定し、正しい FRUIT_TYPE をインスタンス化する「fruit」に対する適切なパラメーターを指定します。
      set_global_assignment -name VERILOG_MACRO "X_FRUIT_TYPE=1"
    2. エンティティーの再バインドのアサインメントを指定し、新しい x_fruit エンティティーを u_fruit_0 および u_fruit_1 のインスタンスに関連付けます。
      set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_1

      このように .qsf が変更されると、オレンジが、両方のPR領域の新しいペルソナとして設定されます。

  5. 方法2の欠点は、.qsf ファイルに設定されたVerilogマクロがグローバルであることです。そのため、プロジェクトの `X_FRUIT_TYPE の各インスタンスのデフォルト値は 1 になります。この結果が適しているのは、両方のPRペルソナを同じタイプにしたい場合でしょう。ただし、あるPR実装コンパイルで1つのペルソナに「オレンジ」を指定し、別のペルソナに「バナナ」を指定する場合は、fruit.sv ファイルの別のコピーを作成し、そのファイルに一意の名前とVerilogマクロを含めてください。
    図 10. y_fruit.svとして保存したx_fruit.svのコピー
  6. PR実装リビジョンの .qsf ファイルで次のように指定します。
    1. 次の行を追加して、 `X_FRUIT_TYPE Verilogマクロを 1 に設定し、正しい FRUIT_TYPE をインスタンス化する「fruit」 に対して適切なパラメータを指定します。
      set_global_assignment -name VERILOG_MACRO "X_FRUIT_TYPE=1" set_global_assignment -name VERILOG_MACRO "Y_FRUIT_TYPE=2"
    2. エンティティーの再バインドのアサインメントを指定し、新しい x_fruit エンティティーを u_fruit_0 のインスタンスに関連付け、新しい y_fruit エンティティーを u_fruit_1 のインスタンスに関連付けます。
      set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING y_fruit -to u_fruit_1

      このように .qsf が変更されると、オレンジが、1番目のPR領域のペルソナとして指定され、バナナは、2番目のPR領域のペルソナとして指定されます。