Menu
CoddyTech

Chỉ thị timescale

Thuộc phần Kiến thức nền tảng trong hành trình Verilog của Coddy. Bài học 70 trên 90.

Chỉ thị timescale đặt đơn vị thời gian và độ chính xác thời gian cho mô phỏng. Chỉ thị này cho trình mô phỏng biết cách diễn giải các giá trị độ trễ như #10.

Trong các bài học trước, chúng ta đã dùng độ trễ như #10 mà không nói rõ “10” có nghĩa là gì. Đó là 10 nano giây hay 10 pico giây? Chỉ thị timescale sẽ giải đáp câu hỏi này.

Cú pháp:

`timescale time_unit / time_precision
Thành phầnÝ nghĩaVí dụ
time_unitĐơn vị cơ bản cho độ trễ1ns
time_precisionĐộ chính xác của mô phỏng1ps

Dấu backtick ` trước timescale cho biết đây là một chỉ thị của trình biên dịch.

Ví dụ

`timescale 1ns / 1ps
  • time_unit = 1ns → #10 nghĩa là 10 nano giây
  • time_precision = 1ps → Mô phỏng làm tròn đến pico giây gần nhất

Các giá trị thang thời gian thường dùng

Đơn vị thời gianĐộ chính xácTrường hợp sử dụng
1ns / 1nsNanogiâyMô phỏng đơn giản
1ns / 1psPicogiâyChính xác hơn
1ps / 1psPicogiâyThiết kế tốc độ cao
1us / 1nsMicrogiâyMô phỏng chậm

Ảnh hưởng đến độ trễ như thế nào

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // Chờ 10 nano giây
end

Nếu không có timescale, một số trình mô phỏng sẽ dùng giá trị mặc định (thường là 1ns). Tốt nhất bạn nên luôn chỉ định giá trị này.

Quy tắc quan trọng

Quy tắcGiải thích
Phải nằm ngoài các moduleĐặt trước mọi định nghĩa module
Ký hiệu dấu huyền`timescale, không phải 'timescale 
Đơn vị thời gian ≥ độ chính xác thời gian1ns / 1ps hợp lệ, 1ps / 1ns không hợp lệ
Ảnh hưởng đến mọi độ trễ trong tệpĐộ trễ thông thường, độ trễ cổng, độ trễ phép gán
challenge icon

Thử thách

Cần làm gì:

Thêm chỉ thị timescale còn thiếu để các độ trễ biểu thị 10ns, 20ns và 30ns.

Tự làm thử

// TODO: Thêm chỉ thị timescale (1ns / 1ps)

module timescale_challenge;
  
  initial begin
    $display("Time %0t", $time);
    #10 $display("Time %0t (10ns = 10000ps)", $time);
    #10 $display("Time %0t (20ns = 20000ps)", $time);
    #10 $display("Time %0t (30ns = 30000ps)", $time);
    $finish;
  end
endmodule
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Verilog online