サイト内検索

こんにちは。

マクニカでインテル® FPGA 製品の技術サポートをしている インテル・F・ハナコ です。

 

論理回路においてレジスタを作成しても、Quartus® Prime でコンパイルすると最適化によりマージされ削除されてしまうことがあります。

これは Quartus Prime のコンパイラが積極的にリソースの最小化をしながら 無駄なリソースを削減した結果なので、基本的には良いことです♪

 

★ コンパイラの最適化により、削除やマージされたレジスタ情報の確認方法は こちらをクリック

 

でもユーザーさんによっては、”最適化で削除されたレジスタをあえて残したい“ 状況や理由があったりします。

例えば、

・ 自作した複製レジスタを残したい (オプションやタイミング制約の設定に関係するため、など)

 

あるいは

・ 下位モジュールの未使用ポートに接続されたレジスタを残したい (設計途中におけるデバッグ目的、など)

などなど、状況や理由は様々です。

 

そんなときは、Quartus Prime で ロジック・オプション を使ってください。

ロジック・オプションの設定方法

ここで使用するロジック・オプションは以下です。

 

[A] Disable Register Merging オプション = On か Preserve Registers オプション = On

または

[B] Preserve Fan-out Free Register Node オプション = On 

 

いずれも、Assignment Editor で目的のレジスタに対してセットします。

 

そして、この[A]、[B]の使い分けポイントは、レジスタの信号が最終的にデバイスの出力ピンに影響(出力)しているかどうか です。

レジスタの信号がデバイスの出力ピンに対して…

レジスタを保持するために使用するオプション名

(Assignment Name)

設定値

(Value)

影響している (出力されている)

[A]   Disable Register Merging

または Preserve Registers

On

影響していない (出力されていない) [B] Preserve Fan-out Free Register Node

On

また、いずれもコンパイルより削除されたノードであるため、Assignment Editor でノード(To 欄)を選出する際には、Node Finder の Filter において “Registers: pre-synthesis” を選択すると見つけられます。(Named 欄にキーワード+ワイルドカードを入力すれば、さらにヒット率アップ!)

 

その後、Assignment Editor の Assignment Name 欄にオプション名を選択し、Value に設定値を選択すれば OK です。

削除やマージされたレジスタ情報の確認方法

Quartus Prime のコンパイラにより削除あるいはマージされたレジスタは、下記のコンパイル・レポートで確認できます。

削除された理由もわかりますよ。

 

コンパイル・レポート内 Analysis & Synthesis フォルダ > Optimization Results フォルダ > Register Statistics フォルダ > Registers Removed During Synthesis

 

 

以上、コンパイルで削除されたレジスタを保持する方法でした。

必要に応じてご利用ください。

 

なお ロジック・オプションではなく、HDL コードに直接オプションを埋め込む方法は、こちらのページをご覧ください。

 

参考: Quartus Prime のオンラインヘルプ

Disable Register Merging オプション

Preserve Registers オプション

Preserve Fan-out Free Register Node オプション

 

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

コンパイルで削除されたレジスタを保持する方法 (アトリビュート編)