AR# 47073

13.4 XST - 合成中に「ERROR:HDLCompiler:1128」というエラー メッセージが誤って表示される

説明


ISE 13.3 より、極性リストに複数の信号があり、その信号がすべて process/always ブロックで使用されているわけではないケースで、XST で次のようなエラー メッセージが表示されます。(ザイリンクス アンサー 44499) を参照してください。

"ERROR:HDLCompiler:1128 - "multiple_clocks_1128.v" Line 16: Assignment under multiple single edges is not supported for synthesis."



このエラーを引き起こす可能性のあるコード例は次のようになります。

always @(posedge clk or posedge reset) begin

/*
if (reset)
out <= 1'b0;
else
*/
out <= d;
end



しかし、always ブロックで rst 信号が実際に使用されているにもかかわらず次のコードに対し XST で間違ってえらーメッセージが表示されます。この問題の解決方法を教えてください。

integer i;

always @ (posedge clk or posedge rst)
begin
for (i=0 ; i<16 ; i=i+1)
begin
if(rst)
out[i] <= 1'b0;
else
out[i] <= in[i];
end
end

ソリューション


この問題を回避するための回避策は次のとおりです。

回避策 : 1

次のように、このエラー メッセージの重要度を警告に変更して合成を続行させることができます。

-change_error_to_warning "HDLCompiler:1128"

回避策 : 2

ループを always ブロックの外に置き、generate 文を使用します。

genvar i;

generate
for (i=0 ; i<16 ; i=i+1)
begin
always @ (posedge clk or posedge rst)
begin
if(rst)
out[i] <= 1'b0;
else
out[i] <= in[i];
end
end
endgenerate
AR# 47073
日付 12/15/2012
ステータス アクティブ
種類 一般
ツール