2017-06-05 358 views
1

任何人都可以请解释两个赛灵思警告之间的差:究竟是Xilinx警告XST之间的区别:1710和XST:1895年?

XST:1710 - FF /锁存reg_0(没有初始化值)具有恒定值在块0 。这个FF/Latch将在 优化过程中进行修剪。

Xst:1895 - 由于其他FF/Latch调整,FF/Latch reg_1(无初始值为 )在块中的值为0。这FF /锁存 将在优化过程中进行修整。

假设 “REG” 是一个字节长寄存器。

回答

0

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年 - 修剪因为依赖的逻辑被修整

同样的结果,但由于不同的原因。
如果设计中存在错误,解决Xst:1710问题,它可以自动解析Xst:1895。如果没有错误,那么这些警告指向死代码。

+0

谢谢。非常好的解释。 – Candy

相关问题