AR# 38305

12.2 Project Navigator - VHDL ライブラリーを使用する VHDL を直接インスタンシエートすると階層が正しく構築されない

説明

VHDL では、次に示すように直接インスタンシエートした場合に ISE ツールで正しく階層が構築されます。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
library theand;
use theand.box;
entity top is

Port ( clk : in STD_LOGIC;
din : in STD_LOGIC_VECTOR (5 downto 0);
dout : out STD_LOGIC_VECTOR (2 downto 0));
end top;
architecture Behavioral of top is
begin
AND_INST: entity theand.box
port map (
A => din(0),
B => din(1),
C => dout(0));
end Behavioral;

この直接インスタンシエーションに相対 work. ライブラリー参照を使用すると、Project Navigator でプロジェクト階層が正しく構築されません。

たとえば、次のファイルを theand ライブラリーにコンパイルするとします。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity gate is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
C : out STD_LOGIC);
end gate;
architecture Behavioral of gate is
begin
C <= A and B;
end Behavioral;

次のファイルも theand ライブラリーにコンパイルされますが、gate エンティティへの参照には work. を相対作業ライブラリーとして使用しています。この場合、ISE でプロジェクト階層が正しく構築されません。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity box is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
C : out STD_LOGIC);
end box;
architecture Behavioral of box is
begin
GATE_INST: entity work.gate
port map (
A => A,
B => B,
C => C);
end Behavioral;

ソリューション


この問題は、Virtex-6 または Spartan-6 FPGA (またはそれより新しいデバイス ファミリー) プロジェクトで work 以外の VHDL ライブラリー内のエンティティに work ライブラリーに含まれるエンティティまたはモジュールがインスタンシエートされている場合に発生します。

例 : VHDL モジュールに Verilog モジュールがインスタンシエートされており、VHDL モジュールが work 以外のライブラリーにあるとします。Verilog モジュールはライブラリーに割り当てることができないので、work に含まれます。階層は正しく表示されず、合成を実行するとインスタンシエーションが正しく接続されず、モジュールが欠けているために NGDBuild でエラーが発生します。

この問題を回避するには、次の手順に従います。
  1. 可能な場合、インスタンシエートされているエンティティを work ライブラリー以外に移動します。
  2. Verilog モジュールの場合など、モジュールをライブラリに移動できない場合は、ISE Design Suite 12.2 での一時的な回避策として、PRJ ファイルで Verilog ライブラリーを VHDL ライブラリーと同じライブラリーに変更し、コマンド ラインから XST を実行します。生成された NGC ファイルを新規プロジェクトのソースとして追加するか、インプリメンテーションもコマンド ラインから実行します。

ISE 12.3 では [Library for Verilog Sources] というオプションが [Synthesis - XST] に追加されていました。

これは、work ライブラリー以外のプロジェクトの VHDL ライブラリーを Verilog ソースのライブラリーとして指定することができるオプションです。

AR# 38305
日付 01/19/2011
ステータス アーカイブ
種類 既知の問題
ツール