AR# 33038

11.x XST - 「WARNING:HDLCompiler:924 - " <file name" Line ##: Attribute target identifier state not found in this scope」という警告メッセージが表示される

説明

キーワード : HDLCompiler:924, Virtex-6, Spartan-6, metacomments, メタ コメント

Virtex-6 および Spartan-6 デバイスを使用すると、XST で次の警告メッセージが表示され、メタ コメントが動作しませんが、Virtex-6 および Spartan-6 以前のデバイスを使用するとこの問題は発生しません。 この理由を教えてください。

ソリューション

11.2 XST では Virtex-6 および Spartan-6 に新しい VHDL/Verilog 解析が導入されました。 この詳細は、(Xilinx Answer 32927) を参照してください。

Verilog-2001 の導入により、Verilog 属性がデザイン制約を適用する望ましい方法となりました。XST では、現在でも Verilog 合成メタ コメントがサポートされていますが、Virtex-6 または Spartan-6 デザインでメタ コメントを動作させるには、次のような制限があります。

次にメタ コメントの配置位置ごとの XST の動作を示します。
信号とメタ コメントの配置位置
- モジュール記述の前の場合 : Virtex-6 および Spartan-6 以前のデバイス用 XST および Virtex-6 および Spartan-6 ファミリ用 XST の両方でメタ コメントが無視されます。
- モジュール記述内の場合 : Virtex-6 および Spartan-6 以前のデバイス用 XST および Virtex-6 および Spartan-6 ファミリ用 XST の両方でメタ コメントが考慮されます。
- モジュール記述の後の場合 : Virtex-6 および Spartan-6 以前のデバイス用 XST では考慮されますが、Virtex-6 および Spartan-6 ファミリ用 XST では無視されます。
- モジュールの場合 : メタ コメントの位置に関係なく、 Virtex-6 および Spartan-6 以前のデバイス用 XST および Virtex-6 および Spartan-6 ファミリ用 XST の両方でメタ コメントが考慮されます。

次の例では、fsm_extract 制約がステート信号に適用されます。 この制約は、モジュール記述の後に記述されています。

File: ex_0016_v.v
Compilation Library: work

module ex_0016_v (clk, reset, x1, outp);
input clk, reset, x1;
output outp;
reg outp;
reg [1:0] state;

parameter s1 = 2'b00; parameter s2 = 2'b01;
parameter s3 = 2'b10; parameter s4 = 2'b11;

initial begin
state = 2'b00;
end

always@(posedge clk or posedge reset)
begin
if (reset)
begin state <= s1; outp <= 1'b1; end
else
begin
case (state)
s1: begin
if (x1==1'b1)
begin
state <= s2;
outp <= 1'b1;
end
else
begin
state <= s3;
outp <= 1'b0;
end
end
s2: begin state <= s4; outp <= 1'b1; end
s3: begin state <= s4; outp <= 1'b0; end
s4: begin state <= s1; outp <= 1'b0; end
endcase
end
end

endmodule

// synthesis attribute fsm_extract of state is "no" // NOTE: Warning points here.

Virtex-6 および Spartan-6 以前のデバイス用の XST では、メタ コメントが許容されステート マシンを干渉しません。

<state> 信号にプロパティ "fsm_extract = no" を設定します。


Virtex-6 および Spartan-6 ファミリ用の XST では、信号に適用されたメタ コメントが無視され、ステート マシンが抽出されます。

WARNING:HDLCompiler:924 - "ex_59_1_0.v" Line 42: Attribute target identifier state not found in this scope
...
Found finite state machine <FSM_0> for signal <state>.


モジュール記述内にメタ コメントを配置すると、この問題を解決できます。

File: ex_0016_v.v
Compilation Library: work

module ex_0016_v (clk, reset, x1, outp);
input clk, reset, x1;
output outp;
reg outp;
reg [1:0] state;

parameter s1 = 2'b00; parameter s2 = 2'b01;
parameter s3 = 2'b10; parameter s4 = 2'b11;

initial begin
state = 2'b00;
end

// synthesis attribute fsm_extract of state is "no"

always@(posedge clk or posedge reset)
begin
if (reset)
begin state <= s1; outp <= 1'b1; end
else
begin
case (state)
s1: begin
if (x1==1'b1)
begin
state <= s2;
outp <= 1'b1;
end
else
begin
state <= s3;
outp <= 1'b0;
end
end
s2: begin state <= s4; outp <= 1'b1; end
s3: begin state <= s4; outp <= 1'b0; end
s4: begin state <= s1; outp <= 1'b0; end
endcase
end
end

endmodule

ザイリンクスでは、メタ コメントの使用を避けることを推奨します。Verilog 2001 構文に従い属性を渡してください。
AR# 33038
日付 12/15/2012
ステータス アクティブ
種類 一般