Xilinx警告XST:1710和XST:1895之间究竟有什么区别?

时间:2017-06-05 08:27:06

标签: verilog xilinx synthesis

任何人都可以解释两个Xilinx警告之间的区别:

  

Xst:1710 - FF / Latch reg_0(没有初始值)具有常量值   块中的0。这个FF / Latch将在期间进行修剪   优化过程。

     

Xst:1895 - 由于其他FF / Latch修剪,FF / Latch reg_1(没有   init值)在块中具有常量值0。这个FF / Latch   将在优化过程中进行修剪。

假设" reg"是一个字节长的寄存器。

1 个答案:

答案 0 :(得分:0)

reg_0被优化(也称为修剪),因为它从未被分配,但在分配其他寄存器或网络时被引用。由于它没有指定的初始值,因此合成器默认为零。因此,合成器可以保存翻牌,设计中reg_0的任何使用都将被视为逻辑0。

reg_1已经过优化,因为它的值取决于已经优化的其他触发器。使用以下示例:reg_1取决于reg_0。由于reg_0始终为零(因为它永远不会被分配),reg_1也将始终为零。因此,为什么它说"由于其他FF / Latch修剪"。合成器可以节省翻牌,设计中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。如果没有错误,那么这些警告就会指向死代码。