UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 17481

6.1i XST - 「FATAL_ERROR: Xst:Portability /export/Port_Main.h: 127:1.13」 というエラー メッセージが表示される

説明

キーワード : internal, HDL, VHDL, Verilog, 致命的, 内部, エラー

XST で、次のエラー メッセージが表示されます。

"FATAL_ERROR:Xst:Portability/export/Port_Main.h:127:1.13."

ザイリンクスでは、XST で発生するすべての致命的なエラーを修正するよう努めており、将来のバージョンの機能を向上させるため、発生した問題を解析しています。 そのため、エラーがこのアンサーで回避できる場合でも、次の Web サイトからウェブケースを開くようお願いします。

http://www.xilinx.co.jp/support/clearexpress/websupport.htm

ソリューション

1

上記の致命的なエラーは、さまざまな理由で発生します。 合成レポートの最後の数項目を参照して、XST で最後に何が実行されたかを確認してください。これが合成オプションに関連している場合は、そのオプションをオフにして合成を再実行してください。 XST で、エラーの原因となった合成エンジンの部分がバイパスされ、問題が解消する場合があります。 まず、次の手順に従い、Project Navigator でアドバンス オプションが表示されていることを確認します。

1. [Edit] をクリックします。
2. [Preferences] をクリックします。
3. [Processes] タブをクリックします。
3. [Property display level] を [Advanced] に設定します。
4. [OK] をクリックします。

合成オプションを設定するには、次の手順に従います。

1. 合成する HDL ファイルをハイライトします。
2. プロセス ウィンドウで [Synthesize - XST] を右クリックします。
3. [Properties] をクリックします。

設定可能なすべての合成プロパティが表示されます。

メモ : [HDL Options] タブの [Shift Register Extraction] により、致命的なエラーが解決するケースが多いようです。

2

ブロック RAM/ROM を推論すると、XST で致命的なエラーが発生する場合があります。

この問題は、最新版の 6.1i サービス パックで修正されています。サービス パックは、次のサイトから入手できます。
http://www.xilinx.co.jp/xlnx/xil_sw_updates_home.jsp
この修正は、6.1i サービス パック 2 以降に含まれます。

また、RAM/ROM 推論を [Auto] から [Distributed] に変更しても、この問題を回避できます。
1. 最上位の HDL ファイルをハイライトします。
2. プロセス ウィンドウで [Synthesize - XST] を右クリックします。
3. [Properties] をクリックします。
4. [HDL Options] タブをクリックします。
5. [RAM Style] または [ROM Style] を [Auto] から [Distributed] に変更します。
6. [OK] をクリックします。

3

定数の配列にダイナミック インデックスが使用されると、XST で致命的なエラーが表示されます。

constant my_2d_array : 2d_array := (000, 111);
T <= my_2d_array(I)(J); -- I と J は定数ではなく信号

この問題は、最新版の 6.1i サービス パックで修正されています。サービス パックは、次のサイトから入手できます。
http://www.xilinx.co.jp/xlnx/xil_sw_updates_home.jsp
この修正は、6.1i サービス パック 2 以降に含まれます。

また、この問題は次のように中間信号を使用しても回避できます。

constant C : 2d_array := (000, 111);
T1 <= C(I);
T2 <= T1(J);

4

上記の致命的なエラーは、VHDL でブール型のポートが使用されていると表示されます。

entity tim_e is
port ( CLK: in std_logic;
d: in boolean;
end tim_e;

architecture behavioral_tim_e of tim_e is

begin
process(CLK)
begin
if (CLK'event) and (CLK = '0') then

if (d = FALSE) then
end if;
end if; --CLK
end process; --CLK
end behavioral_tim_e;


この問題を回避するには、別のタイプのポートを使用してください。

entity tim_e is
port ( CLK: in std_logic;
d: in std_logic;
end tim_e;

architecture behavioral_tim_e of tim_e is

begin
process(CLK)
begin
if (CLK'event) and (CLK = '0') then

if (d = '1') then
end if;
end if; --CLK
end process; --CLK
end behavioral_tim_e;

5

混合言語モードの場合、インスタンシエーションで 1 ビット幅を超えるポートのすべてが使用されていないと、XST で致命的なエラーが発生します。

entity mid_entity;
:
:
u1 : bottom_inst
port map
:
port_bottom (1 downto 0) => port_mid (1 downto 0), -- ポートが接続されている
:
:

module top (...);
:
:
mid_entity u1 (
:
.mid_port[1:0] (), //最終的には、ポートは未接続となり致命的なエラーが発生する
:
:

この問題を回避するには、未使用のポートを実際のポートではなく open に接続してください。

u1 : bottom_inst
port map
:
port_bottom (1 downto 0) => open, -- ポートを open に接続
:
:

6

宣言された信号の幅が十分でないと、XST で内部エラーが発生します。

reg [11:0] tpkt_size;
:
:

コードの記述 :
tpkt_size [15:8] <= SR_DATA ;

信号幅を修正すると、この問題を解決できます。

7

比較に使用されるベクタが減算にも使用されていると、致命的なエラーが発生します。 リソース共有がオフの場合、このモジュールを合成すると、致命的なエラーが発生します。

2 つのレジスタの減算を取り出して異なる文で評価し、この差を元の減算で使用すると、モジュールが問題なく合成されます。

次のモジュールの合成では、致命的なエラーが発生します。

Verilog コードの例
module test(clk, A, C);
input clk;
input [1:0] A;
input C;

reg [1:0] B;
reg [1:0] D;

always@(posedge clk)
begin
B <= D;
end

// wire delta = B - A;
always@(A or B or C)
begin
if ((B == 2'b00) || (C == 1'b0))
D <= 2'b00 - (B - A);
// D <= 2'b00 - delta;
end

endmodule

減算部分を取り出して個別に評価すると、問題なく合成できます。

Verilog コードの例
module test(clk, A, C);
input clk;
input [1:0] A;
input C;

reg [1:0] B;
reg [1:0] D;

always@(posedge clk)
begin
B <= D;
end

wire delta = B - A;
always@(A or B or C)
begin
if ((B == 2'b00) || (C == 1'b0))
// D <= 2'b00 - (B - A);
D <= 2'b00 - delta;
end

8

使用中のパッケージ内で信号を宣言している場合、致命的なエラーが発生します。

この問題を回避するには、信号をグローバルに宣言せずに、使用するアーキテクチャ内で宣言してください。

9

このエラーは、次のようにザイリンクス ツールのインストール ディレクトリにスペースが含まれていると発生します。

C:\Program Files\Xilinx

この問題を修正するには、ディレクトリを次のように変更してください。

C:\Xilinx

10

この致命的なエラーは、リソース共有オプションがオフになっている場合、次のような構文で発生します。

q <= -(a-b);

この問題を回避するには、リソース共有オプションをオンにしてください。

1. [Synthesize - XST] を右クリックします。
2. [Properties] をクリックします。
3. [HDL Options] タブをクリックします。
4. [Resource Sharing] をオンにします。

この問題は、最新版の 7.1i サービス パックで修正されています。サービス パックは、次のサイトから入手できます。
http://www.xilinx.co.jp/xlnx/xil_sw_updates_home.jsp
この修正は、7.1i サービス パック 1 以降に含まれます。

11

信号に複数のドライバがあると、このエラーが発生することがあります。
AR# 17481
日付 05/09/2012
ステータス アーカイブ
種類 一般
このページをブックマークに追加