2013-11-15 34 views
0

我發現在某些Verilog源代碼中通常會有很多延遲,即使在一些簡單的語句中,如下面。放置這種延遲的根本原因是什麼?爲什麼在Verilog中延遲一些簡單的任務?

cmd <= #`DEL 32`b0 
+1

它通常是針對您關心它需要多長時間信號通過數字邏輯,以追查與設計時序問題傳播門級仿真。你在問什麼? – godel9

+0

@ godel9這是有道理的。那麼對於門級仿真,如何爲每個操作/語句選擇正確的值? – Thomson

回答

1

它通常是針對您關心它需要多長時間信號通過數字邏輯,以追查與設計時序問題傳播門級仿真。

爲了選擇每個操作/說法正確的價值,就需要定時對目標設備的信息,通常是從一個數據表或實驗室測量。

如果你不已經知道或有機會獲得這些信息,很可能是你並不需要在你的模型這樣的詳細程度。使用除實際值之外的任何值都可能會產生相反的效果,因爲當您在尋找時序問題時,最終會出現誤報和誤報。

1

對於柵級驗證我希望用於合成的文庫已經表徵並加入到基本水平的部件適當的延遲。在模擬中將使用哪個而不是RTL。在Verilog中,不需要像RTL那樣增加延遲。

的延遲可被添加到測試平臺組件以模擬關閉不同合成段之間芯片延遲和接口,或者延遲。要計算正確的延遲,需要了解最終佈局,軌道長度等。外部接口將指定最大和最小延遲。

3

你的代碼是不是VHDL或任何其他語言,我知道的。這大概是Verilog的意思。在正常使用情況下,您不會在任何一種語言中執行大量的手動延遲規範,並且延遲的源代碼會自動生成所需延遲(但通常不會出現像這樣的延遲)的工具。儘管如此,在較早的Verilog源代碼中,您經常會看到大量的'#0'延遲規格,因爲調度模型歷史上已被破壞。