reg_0
は、割り当てられていないが他のレジスタまたはネットの割り当て中に参照されるため、最適化されています(別名トリミング)。指定された初期値を持たないため、シンセサイザーのデフォルトは0です。したがって、シンセサイザはフロップを保存することができ、デザイン内のreg_0
の使用はロジック0として扱われます。
reg_1
は、その値が既に最適化された他のフロップに依存するため最適化されています。以下の例を使用してください:reg_1
はreg_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が自動的に解決される可能性があります。バグがなければ、これらの警告はデッドコードを指し示します。
ありがとうございます。非常にうまく説明されています。 – Candy