Menu
Coddy logo textTech

Timescale Direktifi

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 70 / 90.

timescale direktifi, simülasyon için time_unit ve time_precision değerlerini ayarlar. Simülatöre #10 gibi gecikme değerlerini nasıl yorumlayacağını söyler.

Önceki derslerde, "10"un ne anlama geldiğini belirtmeden #10 gibi gecikmeler kullandık. Bu 10 nanosaniye mi? 10 pikosaniye mi? timescale direktifi bu soruyu yanıtlar.

Sözdizimi:

`timescale time_unit / time_precision
BölümAnlamıÖrnek
time_unitGecikmeler için temel birim1ns
time_precisionSimülasyonun ne kadar hassas olması gerektiği1ps

timescale öncesindeki kesme işareti `, bunun bir derleyici yönergesi (compiler directive) olduğu anlamına gelir.

Örnek

`timescale 1ns / 1ps
  • time_unit = 1ns#10, 10 nanoseconds anlamına gelir
  • time_precision = 1ps → Simülasyon en yakın pikosaniyeye yuvarlar

Yaygın Timescale Değerleri

Time UnitPrecisionKullanım Amacı
1ns / 1nsNanosaniyeBasit simülasyonlar
1ns / 1psPikosaniyeDaha hassas
1ps / 1psPikosaniyeYüksek hızlı tasarımlar
1us / 1nsMikrosaniyeYavaş simülasyonlar

Gecikmeleri Nasıl Etkiler

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // 10 nanosaniye bekler
end

timescale olmadan, bazı simülatörler varsayılan bir değer (genellikle 1ns) kabul eder. Bunu her zaman belirtmek en iyisidir.

Önemli Kurallar

KuralAçıklama
Modüllerin dışında olmalıdırHerhangi bir module tanımından önce yerleştirilir
Ters tırnak simgesi'timescale değil `timescale 
Time unit ≥ time precision1ns / 1ps uygundur, 1ps / 1ns uygun değildir
Dosyadaki tüm gecikmeleri etkilerGenel gecikmeler, kapı gecikmeleri, atama gecikmeleri
challenge icon

Görev

Ne yapılmalı:

Gecikmelerin 10ns, 20ns ve 30ns'yi temsil etmesini sağlamak için eksik timescale direktifini ekleyin.

Kendin dene

// TODO: timescale direktifi ekle (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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler