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# 9887

7.1i XST - 「ERROR:Xst:917 - Undeclared signal <signal_name>」というエラー メッセージが表示される

説明

キーワード : array, bus, wide, 配列, 信号, 宣言, バス, 幅

重要度 : 標準

概要 :
XST で、次のようなエラーが不正に表示されることがあります。

"ERROR:Xst:917 - Undeclared signal <signal_name>."

次に確認されている問題のいくつかを示します。

ソリューション

1

次のように reg データ型を always プロシージャ ブロック内で宣言した場合に、上記のエラー メッセージが表示されます。

module TEST(input clk, input rst);
:
:
always @ (clk or rst)
begin: COMPUTE_PROC
reg [0:0] CLAV [2:0];
CLAV[0] = 1'bx;
CLAV[1] = 1'bx;
CLAV[2] = 1'bx;
end
:
:
endmodule

信号 CLAV を always ブロックの外で宣言すれば、XST で正しく処理されます。

module TEST(input clk, input rst);
:
:
reg [0:0] CLAV [2:0];

always @ (clk or rst)
begin: COMPUTE_PROC
CLAV[0] = 1'bx;
CLAV[1] = 1'bx;
CLAV[2] = 1'bx;
end
:
:
endmodule

2

次のように、Verilog 関数でバス幅の配列を宣言したとします。

reg [32:1] signal_name [8:0];

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

"ERROR:Xst:917 - Undeclared signal <signal_name>."

これは、XST では関数内のバス幅の配列宣言がサポートされていないためです。 このエラーを解決するには、次のように配列を個々のバスに分解します。

reg [8:0] signal_name_1;
reg [8:0] signal_name_2;
reg [8:0] signal_name_3;
:
:
reg [8:0] signal_name_32;

メモ : このバス幅の配列の宣言に関する問題は、5.1i ソフトウェアで修正されています。

3

ステート マシンを含む Verilog ファイルを VHDL ファイルにインスタンシエートした場合にも、このエラー メッセージが表示されます。 Verilog のステート マシンでは、次の例のように、ステート名がパラメータと共に宣言されています。

parameter [3:0]
S1 = 2'b01,
S2 = 2'b10;

reg [3:0] CS;
reg [3:0] NS;

always @ (posedge CLOCK or posedge RESET)
begin
if (RESET) CS <= S1;
else CS <= NS;
end

always @ (CS or /*<other inputs>*/)
begin
case (CS)
S1: begin
Q <= 0;
NS <= S2;
end
S2: begin
Q <= 1;
NS <= S1;
end
endcase
end

この問題を回避するには、ステート名の宣言にパラメータではなく `define を使用し、 ステート名を含める際は必ず ` を付けてください。

`define S1 2'b01
`define S2 2'b10

reg [3:0] CS;
reg [3:0] NS;

always @ (posedge CLOCK or posedge RESET)
begin
if (RESET) CS <= `S1;
else CS <= NS;
end

always @ (CS)
begin
case (CS)
`S1: begin
Q <= 0;
NS <= `S2;
end
`S2: begin
Q <= 1;
NS <= `S1;
end
endcase
end

4

関数内でパラメータを宣言した場合にも、上記のエラー メッセージが表示されます。

function [fifo_addr_width - 1:0] bin2gray;
input [fifo_addr_width - 1:0] input_bin;

parameter DEPTH_SIZE = 4;
// bin2gray
integer input_bin_int;
integer output_gray_int;
reg [DEPTH_SIZE - 1:0] depth;
:
:


このエラーを回避するには、関数本体の外でパラメータを宣言してください。 この問題は、将来の XST リリースで修正される予定です。
AR# 9887
作成日 08/08/2000
最終更新日 07/18/2007
ステータス アーカイブ
タイプ 一般