Menu
Coddy logo textTech

Timescale Directive

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

Die timescale-Direktive legt die Zeiteinheit und die Zeitpräzision 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 nanoseconds? 10 Pikosekunden? Die timescale-Direktive beantwortet diese Frage.

Syntax:

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

Der Backtick ` 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 → Die Simulation wird auf die nächste Pikosekunde gerundet

Übliche Timescale-Werte

ZeiteinheitPräzisionAnwendungsfall
1ns / 1nsNanosekundeEinfache Simulationen
1ns / 1psPicosekundeHöhere Präzision
1ps / 1psPicosekundeHochgeschwindigkeitsdesigns
1us / 1nsMikrosekundeLangsame Simulationen

Wie es Verzögerungen beeinflusst

`timescale 1ns / 1ps

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

Ohne timescale nehmen einige Simulatoren einen Standardwert an (häufig 1ns). Am besten gibst du ihn immer an.

Wichtige Regeln

RegelErklärung
Muss außerhalb von Modulen stehenVor jeder module-Definition platziert
Backtick-Symbol`timescale nicht 'timescale 
time unit ≥ time precision1ns / 1ps ist korrekt, 1ps / 1ns nicht
Betrifft alle Verzögerungen in der DateiAllgemeine Verzögerungen, Gatterverzögerungen, Zuweisungsverzögerungen
challenge icon

Aufgabe

Was zu tun ist:

Füge die fehlende timescale-directive hinzu, damit die Verzögerungen 10ns, 20ns und 30ns darstellen.

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

Übe selbstständig: Online-Verilog-Compiler