Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Verilog

Maîtriser Verilog $timeformat : Contrôle de Précision et d'Affichage

La directive Verilog timescale spécifie l'unité de temps et la précision pour les simulations.

La fonction système Verilog $timeformat spécifie le style de rapport du spécificateur de format %t dans les instructions d'affichage comme $display et $strobe.

Syntaxe

$timeformat(<nombre_unité>, <précision>, <chaîne_suffixe>, <largeur_champ_minimum>);

Nombre d'unité Unité de temps
-3 1ms
-6 1us
-9 1ns
-12 1ps
-15 1fs

Exemple #1 : 1ns/1ps

Voici un exemple de comment $timeformat affecte le format d'affichage de l'unité de temps.

`timescale 1ns/1ps
module tb;
  bit a;
  initial begin
    // Attendre un certain temps - noter que parce que la précision est 1/1000 de
    // l'échelle principale (1ns), ce délai sera tronqué à la 3ème
    // position
    #10.512351;
    // Afficher le temps courant avec les paramètres timeformat par défaut
    $display("[T=%0t] a=%0b", $realtime, a);
    // Changer les paramètres timeformat et afficher à nouveau
    $timeformat(-9, 2, " ns");
    $display("[T=%0t] a=%0b", $realtime, a);
    // Enlever l'espace dans le suffixe, et étendre les chiffres fractionnaires à 5
    $timeformat(-9, 5, "ns");
    $display("[T=%0t] a=%0b", $realtime, a);
    // Ici le suffixe est faux, il ne devrait pas être "ns" parce que nous sommes
    // en train de régler l'affichage en "ps" (-12)
    $timeformat(-12, 3, " ns");
    $display("[T=%0t] a=%0b", $realtime, a);
    // Corriger le suffixe en ps
    $timeformat(-12, 2, " ps");
    $display("[T=%0t] a=%0b", $realtime, a);
  end
endmodule

Journal de Simulation

xcelium> run
[T=10512] a=0
[T=10.51 ns] a=0
[T=10.51200ns] a=0
[T=10512.000 ns] a=0
[T=10512.00 ps] a=0
xmsim: *W,RNQUIE: Simulation is complete.

Exemple #2 : 1ns/100ps

Voici le même exemple que ci-dessus avec un timescale différent.

`timescale 1ns/100ps

Journal de Simulation

xcelium> run
[T=105] a=0
[T=10.50 ns] a=0
[T=10.50000ns] a=0
[T=10500.000 ns] a=0
[T=10500.00 ps] a=0
xmsim: *W,RNQUIE: Simulation is complete.

Exemple #3 : 100ns/1ns

`timescale 100ns/1ns

#1 représente 100ns et donc #10 donne 1000ns

Journal de Simulation

xcelium> run
[T=1051] a=0
[T=1051.00 ns] a=0
[T=1051.00000ns] a=0
[T=1051000.000 ns] a=0
[T=1051000.00 ps] a=0
xmsim: *W,RNQUIE: Simulation is complete.

Verilog

  1. Maîtriser Verilog : Tutoriel complet pour la conception de circuits numériques
  2. Maîtriser la concaténation Verilog : Guide pratique
  3. Comprendre les affectations Verilog : Types, Syntaxe et Bonnes Pratiques
  4. Verilog Blocking vs Non-Blocking : Différences Clés Expliquées
  5. Maîtriser les Fonctions Verilog pour une Conception RTL Efficace
  6. Comprendre les Tasks Verilog : Fonctions vs Tasks, Syntaxe et Utilisation
  7. Conception Pratique Verilog Niveau Portes : Portes ET, OU, NON & Multiplexeur 2x1
  8. Générateur d'Horloge Verilog : Guide de Conception et d'Implémentation
  9. Maîtriser les Fonctions Mathématiques Verilog pour une Conception Matérielle Efficace