AR# 52086

Vivado 合成 - 「WARNING: [Synth 8-1824] circular dependency found for file .vhd while ordering」という警告メッセージが表示される

説明

VHDL エンティティとアーキテクチャが別々のファイルで定義されている場合、Vivado 合成を実行した後に次のような警告メッセージが表示されることがあります。

WARNING: [Synth 8-1824] circular dependency found for file <name>.vhd  while ordering  

しかし、このような警告メッセージの後に、次のエラー メッセージが表示されることがあります。

ERROR: [Synth 8-1940] entity ... is not yet compiled

ソリューション

これらは正しい警告メッセージです。

デザインに循環依存の問題があることを示しています。

循環依存が発生する例を次に説明します。

a.vhd がライブラリ a_lib にコンパイルされているとします。a.vhd には次の use 文が含まれます。

library b_lib; 
use b_lib.all; 

次に、b.vhd がライブラリ b_lib にコンパイルされます。b.vhd には次の use 文が含まれます。

library a_lib; 
use a_lib.all; 

これにより、a.vhd と b.vhd が互いに依存した関係になります。これが循環依存です。

このような警告メッセージを回避するには、ライブラリの全体のコンテンツを指定する use 文(use <lib_name>.all) を書き込まないようにしてください。

その代わりに、パッケージ特定の use 文
(use <lib_name><package_name>) を使用してください。また、不要なライブラリの定義も削除してください。

この問題に対応するほかの回避策を次に示します。
 
1. VHDL エンティティとアーキテクチャを 1 つの VHDL ファイルにまとめます。
 
2. a) [Hierarchy Update] タブの [Hierarchy] フィールド、[Compile Order] フィールドで、[No Update]、[Manual Compile Order] を選択します。
 
    b) Vivado 合成で出力される [Synth 8-1940] エラー メッセージは、アーキテクチャ ファイルとエンティティ ファイルに対して出力されているので、エンティティ ファイルの前にアーキテクチャ ファイルを移動させます。
 
    c) Vivado 合成を実行します。これで合成が問題なく実行できるはずです。
 
3. 警告が 1 つしか表示されず、エラー メッセージなしにデザインが終了する場合は、次のステップに移動できるはずです。
 


AR# 52086
日付 04/16/2014
ステータス アクティブ
種類 既知の問題
ツール