Article header library fpga intermediate  1

デザインの下位エンティティの配置を指定する方法(Logic Lock)

Article header hanako 25x25  59

こんにちは。マクニカでインテル® FPGA 製品の技術サポートをしている インテル・アルテラ・ハナコ です。

Article header library 130189 pic01  1

Quartus® Prime でコンパイルを実行するときに、こんなことを考えたことがありませんか?

「パズルのピースをはめ込んでいくように、各エンティティを配置させたいな」
「あるエンティティだけを柵で囲って、配置が散乱しないようにしたい。」

そんなときには、Logic Lock(ロジック・ロック)と言う手法を使います。

Logic Lock は、エンティティのレイアウトをユーザー自ら指定することになるため、Quartus Prime コンパイラの作業効率もアップし、コンパイル時間の最適化が期待できます。また、インクリメンタル・コンパイル手法と併用することで、さらに生産性の向上を行うことができます。

ここでは、Logic Lock の基本的な手順をご紹介します。

Logic Lock のサポート環境

Logic Lock が使用できる環境を以下に示します。
表1. Logic Lock のサポート環境
対応する
Quartus Prime
Quartus Prime Pro Edition / Quartus Prime Standard Edition
※ Lite Edition はサポート対象外
対応する
デバイス・ファミリ
Quartus Prime Pro および Standard Edition がサポートするデバイス・ファミリ

Logic Lock が有効な適用例

Logic Lock は、デザイン・フローのさまざまな場面で適用でき、デザインの生産性向上に役立ちます。例えば、
  • ある下位エンティティのセルを点在させずにある程度まとまって配置させたい
  • 担当するエンティティごとに配置エリアを決めておき、最終的に統合したときに配置のコンフリクト(衝突)を軽減したい
このようなときに、大きなメリットが得られます。

Logic Lock リージョン (領域) とは?

配置を指定したいエンティティに対して Logic Lock リージョン(領域)を作成し、デザインのレイアウトをコントロールします。物理的な枠組みのため、周辺エンティティにデザインやレイアウトの変更があっても、Logic Lock リージョン指定されたエンティティの配置は枠組みを出てしまうことがない = 影響を受けることがありません。

Reserved Logic Lock リージョン

指定した Logic Lock リージョンに割り当てたエンティティとノードのみを配置することができ、他のエンティティのリソースが混在して配置することを防止します。

Article header img2  11

Logic Lock Regions Window – Reserved オプション

親リージョン/子リージョン(Standard Edition のみ)

Logic Lock リージョンは、親と子の関係(いわゆる “入れ子“)を構築できます。親リージョンを移動すると関連付けられている子リージョンも自動的に移動します。子リージョンは親リージョン内において、浮動配置あるいは固定配置を定義できます。

Article header img3  14

Logic Lock Regions Window / Chip Planner

リージョンのマージ

複数のリージョンをマージして矩形的な領域を指定することができます。

Article header img4  13

Merge Logic Lock Region

リージョンの形状のカスタマイズ

作成済みのリージョン形状に領域の追加や削除ができ、オリジナルで矩形領域を指定することができます。(Pro Edition のみ)

Article header img12  8

Add/Subtract Logic Lock Region

この機能を利用して、非連続な領域をリージョンに指定することが可能です。

Article header img13  11

非連続な領域

Standard Edition の場合は Add/Subtract Logic Lock Region 機能は使用できませんが、 隣り合っていない非連続な複数のリージョンを Merge Logic Lock Region 機能により一つのリージョンに設定することで、上図のように非連続なリージョンを定義することが可能です。

Logic Lock リージョンを作成する

Quartus Prime プロジェクトの下位エンティティに対して Logic Lock を設定するには、Logic Lock リージョン を作成します。デザインの下位エンティティに対して領域の枠組みを指定し配置させるので、エンティティに必要なロジック・リソース数を把握しなければなりません。そのため、事前に Analysis & Synthesis 以上のプロセス を実行、完了しておきましょう。

  1. リージョンを作成するための Logic Lock Regions Window(Assignments メニュー)を表示させます。

Article header img5  6

Logic Lock Regions Window

  1. Project Navigator ウィンドウから Logic Lock 指定したいエンティティを右クリック > Logic Lock Region > Create New Logic Lock Region を選択します。

Article header img6  5

Logic Lock リージョンを作成

Logic Lock Regions Window に指定したエンティティが登録され、Project Navigator ウィンドウ上にマークが付いたことを確認します。

Article header img7  5

リージョンに登録

  1. Tools メニュー > Chip Planner を起動します。
    ここからは、配置を意識した設定を行うため、Chip Planner 上で Logic Lock Regions Window を使用します。もし Chip Planner に Logic Lock Regions Window が表示されていない場合には、Chip Planner 上の View メニュー > Logic Lock Regions Window を選択してください。

Article header img8  5

Chip Planner 上の Logic Lock Regions Window

4. リージョンに各種設定をします。

Article header img11  11

Logic Lock Regions Window のカラム (上: Standard Edition / 下: Pro Edition)

表2. Logic Lock リージョンの属性
カラム名 設定値 概  要
Size
(Standard のみ)
Auto Quartus Prime がエンティティのコンパイル結果に基づいてサイズを決定します。
Fixed ユーザーがリージョンのサイズを指定できます。
Width 列の数 領域の横幅を設定します。
Height 行の数 領域の高さを設定します。
State
(Standard のみ)
Floating Quartus Prime がデバイス上の領域の位置を決定します。Chip Planner 上でリージョンの境界は破線で表示されます。
Locked ユーザーが指定した位置に固定されます。ロックされたリージョンの Size は Fixed でなければなりません。Chip Planner 上でリージョンの境界は実践で表示されます。
Origin 位置/
Undetermined
Chip Planner 内での Logic Lock リージョンの位置を設定します。State カラムが Floating の場合は Undetermined と表示されます。
Reserved Off/On リージョンから他のエンティティのリソースの配置を除外します。Pro の場合、Routing Region には適用できません。
Enabled
(Standard のみ)
Enabled/Disabled リージョン設定の有効/無効に指定します。
Core-Only
(Pro のみ)
Off/On リージョンからペリフェラルのリソース (I/O, HSSIO, PCIe, PLL など) を除外します。
Size/State
(Pro のみ)
Fixed/Locked ユーザーがリージョンのサイズと配置を指定します。
Auto/Floating Quartus Prime がリージョンのサイズと配置を決定します。
Routing Region
(Pro のみ)
Unconstrained (default) フィッターがデバイス上で使用可能なルートを使用できるようにします。
Whole Chip Unconstrained(制限なし)と同じですが、プロジェクトの設定ファイル(.qsf)に制約を書き込みます。
Fixed with Expansion 配置領域のアウトラインに従います。 ルーティング領域は、配置領域よりも大きい数の行/列でスケールされます。
Custom リージョンの周囲にルーティング領域をカスタマイズで作成できます。ルーティング領域は Chip Planner 上で独立して移動することが可能で、さらに、Shiftキーにより配置と配線の領域の両方を選択し移動することも可能です。


Article header img9  4

設定のイメージ・サンプル <Standard Edition>

コンパイルを実行する

リージョンの設定が完了したら、コンパイルを実行します。(必要に応じてインクリメンタル・コンパイルを適用してください。)

Processing メニュー > Start Compilation

コンパイル結果を確認する

コンパイル完了後、コンパイル・レポートや Timing Analyzer でタイミング要求は満たされていることや、Chip Planner で配置状態を確認します。

Article header img10  11

コンパイル (with Logic lock) 後の Chip Planner <Standard Edition>

最後に

いかがでしたか?
エンティティ単位でリソースの配置に制約をしたいときには、Logic Lock を上手に活用してみてください。

おすすめ記事/資料はこちら

おすすめ FAQ はこちら

関連タグ