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
日付 07/18/2007
ステータス アーカイブ
種類 一般