任何人都可以请解释两个赛灵思警告之间的差:究竟是Xilinx警告XST之间的区别:1710和XST:1895年?
XST:1710 - FF /锁存reg_0(没有初始化值)具有恒定值在块0 。这个FF/Latch将在 优化过程中进行修剪。
Xst:1895 - 由于其他FF/Latch调整,FF/Latch reg_1(无初始值为 )在块中的值为0。这FF /锁存 将在优化过程中进行修整。
假设 “REG” 是一个字节长寄存器。
任何人都可以请解释两个赛灵思警告之间的差:究竟是Xilinx警告XST之间的区别:1710和XST:1895年?
XST:1710 - FF /锁存reg_0(没有初始化值)具有恒定值在块0 。这个FF/Latch将在 优化过程中进行修剪。
Xst:1895 - 由于其他FF/Latch调整,FF/Latch reg_1(无初始值为 )在块中的值为0。这FF /锁存 将在优化过程中进行修整。
假设 “REG” 是一个字节长寄存器。
reg_0
被优化出(又名修剪),因为它是从来没有指派但其他寄存器或网的分配时被引用。由于它没有指定的init值,所以合成器默认为零。因此,合成器可以保存触发器,任何在设计中使用的reg_0
都将被视为逻辑0.
reg_1
被优化,因为它的值取决于已经优化过的其他触发器。使用下面的例子:reg_1
是依赖于reg_0
。由于reg_0
永远是零(因为它永远不会分配),reg_1
也将永远是零。因此为什么它说“由于其他FF/Latch修剪”。该合成器可以节省触发器(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。如果没有错误,那么这些警告指向死代码。
谢谢。非常好的解释。 – Candy