Menu
Coddy logo textTech

Directive Timescale

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 70 sur 90.

La directive timescale définit l'unité de temps et la précision de temps pour la simulation. Elle indique au simulateur comment interpréter les valeurs de délai comme #10.

Dans les leçons précédentes, nous avons utilisé des délais comme #10 sans spécifier ce que « 10 » signifie. S'agit-il de 10 nanosecondes ? 10 picosecondes ? La directive timescale répond à cette question.

Syntaxe :

`timescale time_unit / time_precision
PartieSignificationExemple
time_unitL'unité de base pour les délais1ns
time_precisionLe degré de précision de la simulation1ps

L'accent grave ` avant timescale signifie qu'il s'agit d'une directive de compilation.

Exemple

`timescale 1ns / 1ps
  • time_unit = 1ns#10 signifie 10 nanosecondes
  • time_precision = 1ps → La simulation arrondit à la picoseconde la plus proche

Valeurs de timescale courantes

Unité de tempsPrécisionCas d'utilisation
1ns / 1nsNanosecondeSimulations simples
1ns / 1psPicosecondePlus précis
1ps / 1psPicosecondeConceptions haute vitesse
1us / 1nsMicrosecondeSimulations lentes

Comment cela affecte les délais

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // Attend 10 nanosecondes
end

Sans timescale, certains simulateurs supposent une valeur par défaut (souvent 1ns). Il est préférable de toujours la spécifier.

Règles importantes

RègleExplication
Doit être en dehors des modulesPlacé avant toute définition de module
Symbole d'accent grave (backtick)`timescale et non 'timescale 
Unité de temps ≥ précision de temps1ns / 1ps est correct, 1ps / 1ns ne l'est pas
Affecte tous les délais dans le fichierDélais généraux, délais de porte, délais d'assignation
challenge icon

Défi

À faire :

Ajoutez la directive timescale manquante pour que les délais représentent 10ns, 20ns et 30ns.

Aide-mémoire

La directive `timescale définit l'unité de temps et la précision temporelle pour la simulation. Elle doit être placée avant toute définition de module.

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

initial begin
  #10 a = 1;   // Attend 10 nanosecondes
end
  • time_unit — l'unité de base pour les délais (ex. : #10 = 10ns)
  • time_precision — la précision avec laquelle la simulation arrondit (doit être ≤ à l'unité de temps)
Échelle de tempsCas d'utilisation
1ns / 1nsSimulations simples
1ns / 1psPlus précis
1ps / 1psConceptions à haute vitesse
1us / 1nsSimulations lentes

Essayez vous-même

// À FAIRE : Ajouter la directive d'échelle de temps (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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux