Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Verilog

Verilog $timeformat meistern: Präzision und Anzeigesteuerung

Die Verilog-`timescale-Direktive spezifiziert Zeiteinheit und Präzision für Simulationen.

Die Verilog-Systemfunktion $timeformat spezifiziert den %t-Format-Spezifizierer-Berichtsstil in Display-Anweisungen wie $display und $strobe.

Syntax

$timeformat(<unit_number>, <precision>, <suffix_string>, <minimum field width>);
Unit Number Zeiteinheit
-3 1ms
-6 1us
-9 1ns
-12 1ps
-15 1fs

Beispiel #1: 1ns/1ps

Hier ist ein Beispiel, wie $timeformat das Format der Zeit-Einheiten-Anzeige beeinflusst.

`timescale 1ns/1ps
module tb;
  bit a;
  initial begin
    // Ein wenig warten - beachten Sie, dass die Präzision 1/1000 der
    // Hauptskala (1ns) ist, wird dieser Delay an der 3. Stelle
    // durch die 3-stellige Timescale-Präzision abgeschnitten
    #10.512351;
    // Aktuelle Zeit mit Standard-timeformat-Parametern anzeigen
    $display("[T=%0t] a=%0b", $realtime, a);
    // Timeformat-Parameter ändern und erneut anzeigen
    $timeformat(-9, 2, " ns");
    $display("[T=%0t] a=%0b", $realtime, a);
    // Leerzeichen im Suffix entfernen und Nachkommastellen auf 5 erweitern
    $timeformat(-9, 5, "ns");
    $display("[T=%0t] a=%0b", $realtime, a);
    // Hier ist das Suffix falsch, es sollte nicht "ns" sein, weil wir
    // die Anzeige in "ps" (-12) einstellen
    $timeformat(-12, 3, " ns");
    $display("[T=%0t] a=%0b", $realtime, a);
    // Suffix auf ps korrigieren
    $timeformat(-12, 2, " ps");
    $display("[T=%0t] a=%0b", $realtime, a);
  end
endmodule

Simulationslog:

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.

Beispiel #2: 1ns/100ps

Hier ist dasselbe Beispiel wie oben mit einem anderen Timescale.

`timescale 1ns/100ps

Simulationslog:

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.

Beispiel #3: 100ns/1ns

`timescale 100ns/1ns

#1 repräsentiert 100ns und daher ergibt #10 1000ns.

Simulationslog:

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. Verilog meistern: Komplettes Tutorial für digitales Schaltungsdesign
  2. Verilog Concatenation meistern: Praktischer Leitfaden
  3. Verilog Assignments verstehen: Typen, Syntax und Best Practices
  4. Verilog Blocking vs. Non-Blocking: Wichtige Unterschiede erklärt
  5. Verilog Functions meistern für effizientes RTL-Design
  6. Verilog Tasks verstehen: Functions vs. Tasks, Syntax und Verwendung
  7. Praktisches Verilog Gate-Level Design: AND, OR, NOT Gatter & 2x1 Multiplexer
  8. Verilog Clock Generator: Design & Implementierungsleitfaden
  9. Verilog Math Functions meistern für effizientes Hardware-Design
  10. Verilog Timescales an jedem Scope verstehen und ausgeben