Verilog中的timescale


在Verilog HDL 模型中,所有時延都用單位時間表述。使用`timescale
編譯器指令將時間單位與實際時間相關聯。該指令用於定義時延的單位和時延精度。

`timescale編譯器指令格式為:

timescale time_unit / time_precision

- time_unit 單位時間

  • time_precision 時間精度

time_unit 和time_precision 由值1、10、和100以及單位s、ms、us、ns、ps和fs組成。

`timescale 1ns/ 100ps 
module AndFunc (Z, A, B)
output Z
input A, B;  
and # (5.226.17 ) Al (Z, A, B)
//規定了上升及下降時延值。 
endmodule

編譯器指令定義時延以ns為單位,並且時延精度為 0.1 ns(100 ps)。因此,時延值(#5.22)即代表5.22ns,5.22對應5.2 ns, 時延6.17對應6.2 ns。如果用如下的`timescale程序指令代替上例中的編譯器指令,

`timescale 10ns/1ns

則基礎的時間單位為10ns,精度1ns。5.22代表52.2ns,固定到精度上就是52ns。同理,6.17轉換為62ns。

在編譯過程中,timescale指令影響這一編譯器指令后面所有模塊中的時延值,直至遇到另一timescale指令或resetall指令。當一個設計中的多個模塊帶有自身的`timescale編譯指令時將發生什么?在這種情況下,模擬器總是定位在所有模塊的最小時延精度上,並且所有時延都相應地換算為最小時延精度。

在verilog中是沒有默認timescale的。一個沒有指定timescale的verilog模塊就有可能錯誤的繼承了前面編譯模塊的無效timescale參數。所以在verilog的LRM中推薦在每個module的前面指定timescale,並且相
應的在最后加一個
resetall來確保timescale的局部有效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM