1.timescale指令格式
`timescale <時間單位> / <時間精度>
時間單位:它確定了仿真中時間值的基本單位。比如 1ns 就意味著時間值是以納秒為單位來計量的。
時間精度:該參數決定了時間值能夠表示的最小分辨率。例如 1ps 表示時間可以精確到皮秒級別。
2.例程說明
`timescale 1ns / 1psmodule test;reg clk;initial beginclk = 0;#5 clk = 1; // 延時5ns#5.25 clk = 0; // 延時5.25ns(精度為1ps)#2.749 clk = 1; // 延時2.749ns → 四舍五入為2.750nsend
endmodule
時間單位為 1ns,所以 #5 就是 5 納秒。
時間精度是 1ps,#5.25 能夠精確表示 5.25 納秒。#2.749 會被舍入為 2.750ns,這是因為它要與 1ps 的精度相匹配。
3.總結
時間值解釋:在仿真過程中,像 #5 這樣的延時語句會被解釋為 5 * 時間單位。若時間單位是 1ns,那么 #5 就代表延時 5 納秒。
精度限制:當表達式計算結果的精度超出設定范圍時,會按照時間精度進行四舍五入。例如,若時間精度為 1ps,那么 #1.2345 會被舍入為 #1.235。
多模塊處理:如果不同模塊采用了不同的 timescale,仿真工具會依據最精確的時間精度來進行全局計算。timescale 指令對其后的所有模塊都有效,所以通常會把它放在文件的開頭,或者單獨存放在一個頭文件里。若時間精度設置得比工具支持的精度更精細(例如?1fs
),可能會引發警告。此時,你需要根據仿真工具的能力來調整精度。在大型設計中,建議統一使用相同的?timescale
,防止出現時間計算不一致的情況。