Menu
Coddy logo textTech

Timescale-Direktive

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 70 von 90.

Die timescale-Direktive legt die Zeiteinheit und die Zeitgenauigkeit für die Simulation fest. Sie teilt dem Simulator mit, wie Verzögerungswerte wie #10 zu interpretieren sind.

In vorherigen Lektionen haben wir Verzögerungen wie #10 verwendet, ohne anzugeben, was „10“ bedeutet. Sind es 10 Nanosekunden? 10 Pikosekunden? Die timescale-Direktive beantwortet diese Frage.

Syntax:

`timescale time_unit / time_precision
TeilBedeutungBeispiel
time_unitDie Basiseinheit für Verzögerungen1ns
time_precisionWie präzise die Simulation sein sollte1ps

Das Backtick-Zeichen ` vor timescale bedeutet, dass es sich um eine Compiler-Direktive handelt.

Beispiel

`timescale 1ns / 1ps
  • time_unit = 1ns#10 bedeutet 10 Nanosekunden
  • time_precision = 1ps → Simulation rundet auf die nächste Pikosekunde

Gängige Timescale-Werte

ZeiteinheitPräzisionAnwendungsfall
1ns / 1nsNanosekundeEinfache Simulationen
1ns / 1psPikosekundePräziser
1ps / 1psPikosekundeHochgeschwindigkeits-Designs
1us / 1nsMikrosekundeLangsame Simulationen

Wie es sich auf Verzögerungen auswirkt

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // Wartet 10 Nanosekunden
end

Ohne timescale nehmen einige Simulatoren einen Standardwert an (oft 1ns). Es ist am besten, diesen immer anzugeben.

Wichtige Regeln

RegelErklärung
Muss außerhalb von Modulen stehenVor jeder Moduldefinition platziert
Backtick-Symbol`timescale nicht 'timescale 
Zeiteinheit ≥ Zeitpräzision1ns / 1ps ist in Ordnung, 1ps / 1ns nicht
Beeinflusst alle Verzögerungen in der DateiAllgemeine Verzögerungen, Gate-Verzögerungen, Zuweisungsverzögerungen
challenge icon

Aufgabe

Was zu tun ist:

Füge die fehlende timescale-Direktive hinzu, damit die Verzögerungen 10ns, 20ns und 30ns repräsentieren.

Spickzettel

Die `timescale-Direktive legt die Zeiteinheit und die Zeitpräzision für die Simulation fest. Sie muss vor jeder Moduldefinition platziert werden.

`timescale time_unit / time_precision
`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // Wartet 10 Nanosekunden
end
  • time_unit — die Basiseinheit für Verzögerungen (z. B. #10 = 10ns)
  • time_precision — wie genau die Simulation rundet (muss ≤ Zeiteinheit sein)
TimescaleAnwendungsfall
1ns / 1nsEinfache Simulationen
1ns / 1psPräziser
1ps / 1psHochgeschwindigkeits-Designs
1us / 1nsLangsame Simulationen

Probier es selbst

// TODO: Timescale-Direktive hinzufügen (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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen