2017-06-05 28 views
1

誰もが2つのザイリンクスの警告の違いを説明していただけます。ザイリンクスの警告XST:1710とXST:1895の違いは何ですか?

XSTで:1710 - (INIT値なし)FF /ラッチreg_0はブロック0の定数値 を持っています。このFF /ラッチは、 の最適化プロセス中にトリミングされます。

Xst:1895 - 他のFF /ラッチトリミングのため、FF /ラッチreg_1( 初期値なし)はブロック内で一定の値0を持ちます。このFF /ラッチ は、最適化処理中にトリミングされます。

「reg」がバイト長レジスタであると仮定します。

答えて

0

reg_0は、割り当てられていないが他のレジスタまたはネットの割り当て中に参照されるため、最適化されています(別名トリミング)。指定された初期値を持たないため、シンセサイザーのデフォルトは0です。したがって、シンセサイザはフロップを保存することができ、デザイン内のreg_0の使用はロジック0として扱われます。

reg_1は、その値が既に最適化された他のフロップに依存するため最適化されています。以下の例を使用してください:reg_1reg_0に依存しています。 reg_0は常に割り当てられないためゼロになるので、reg_1も常にゼロになります。したがって、なぜ「他のFF /ラッチトリミングのために」と言われますか?シンセサイザはロジックとして扱われますプ(S)およびデザインのreg_1のいずれかの使用を節約する0

要するに
reg [7:0] reg_0; 
reg [7:0] reg_1; 
always @(posedge clk) begin 
    reg_1 <= in & reg_0; 
end 

  • XSTで:1710 - 割り当てられたことがないので、トリミング
  • XSTで:1895 - 依存ロジックがトリミングされたためにトリミングされました。

同じ結果ですが、異なる理由があります。
デザインにバグがあり、Xst:1710の問題を解決すると、Xst:1895が自動的に解決される可能性があります。バグがなければ、これらの警告はデッドコードを指し示します。

+0

ありがとうございます。非常にうまく説明されています。 – Candy

関連する問題