2017-06-05 364 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

相關問題