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 (time_unit) et la précision temporelle (time_precision) pour la simulation. Elle indique au meilulateur 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 préciser 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| Partie | Signification | Exemple |
|---|---|---|
time_unit | L'unité de base pour les délais | 1ns |
time_precision | La précision que la simulation doit avoir | 1ps |
L'accent grave ` avant timescale signifie qu'il s'agit d'une directive de compilateur.
Exemple
`timescale 1ns / 1pstime_unit = 1ns→#10signifie 10 nanosecondestime_precision = 1ps→ La simulation arrondit à la picoseconde la plus proche
Valeurs courantes de Timescale
| Time Unit | Précision | Cas d'utilisation |
|---|---|---|
1ns / 1ns | Nanoseconde | Simulations simples |
1ns / 1ps | Picoseconde | Plus précis |
1ps / 1ps | Picoseconde | Designs à haute vitesse |
1us / 1ns | Microseconde | Simulations lentes |
Impact sur les délais
`timescale 1ns / 1ps
initial begin
#10 a = 1; // Attend 10 nanosecondes
endSans timescale, certains simulateurs prennent une valeur par défaut (souvent 1ns). Il est préférable de toujours la spécifier.
Règles importantes
| Règle | Explication |
|---|---|
| Doit être en dehors des modules | Placé avant toute définition de module |
| Symbole backtick | `timescale et non 'timescale |
| Unité de temps ≥ précision temporelle | 1ns / 1ps est valide, 1ps / 1ns ne l'est pas |
| Affecte tous les délais dans le fichier | Délais généraux, délais de porte, délais d'affectation |
Défi
Ce qu'il faut faire :
Ajoutez la directive timescale manquante pour que les délais représentent 10ns, 20ns et 30ns.
Essayez vous-même
// TODO: Ajouter la directive 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
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU13Temporisation et Délais
Qu'est-ce que les délaisDélais de porteDélais d'affectationDirective TimescaleGénération d'horlogeRécapitulatif - Contrôle de la temporisation2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états