verilog中timescale


1. `timescale

`timescale是Verilog中的預編譯指令,指定位於它后邊的module的時間單位和時間精度,直到遇到新的`timescale指令或者`resetall指令。它的語法如下:

`timescale time_unit / time_precision

假如我們延時x個時間單位,那延時的總時間time = x*time_unit,但最后真正延時的時間是根據time_precision對time進行四舍五入后的結果,如下面的代碼所示。

 1 `timescale 100ns / 10ns // 時間單位100ns,時間精度10ns
 2 module tb;
 3 reg [4:0] set;
 4 parameter d1 = 20 5           d2 = 1.5,
 6           d3 = 1.54,
 7           d4 = 1.55;
 8 
 9 initial begin
10     #d1   set = 0;      // real_delay = round(20*100)   = 2000ns, 以10ns為精度做四舍五入
11     #d2   set = 1;      // real_delay = round(1.5*100)  = 150ns 
12     #d3   set = 2;      // real_delay = round(1.54*100) = 150ns 
13     #d4   set = 3;      // real_delay = round(1.55*100) = 160ns 
14 end
15 
16 endmodule

注意事項: 
1)時間單位和時間精度只能是1、10和100這三種整數,單位有s、ms、us、ns、ps和fs; 
2)時間精度必須小於等於時間單位

2. `timescale時間精度對仿真時間的影響

`timescale的時間精度設置是會影響仿真時間的,如下面幾種設置。最后一種設置可能是第一種的一倍還多,並且占用更多的內存,所以如果沒有必要,應盡量將時間精度設置得更大一些。

1 `timescale 1ns / 1ns
2 `timescale 1ns / 100ps
3 `timescale 1ns / 10ps
4 `timescale 1ns / 1ps

 轉載至:https://blog.csdn.net/qq_16923717/article/details/81099833


免責聲明!

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



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