Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Verilog

Verilog Menampilkan Tugas

Tugas sistem tampilan terutama digunakan untuk menampilkan pesan informasi dan debug untuk melacak aliran simulasi dari file log dan juga membantu debug lebih cepat. Ada kelompok tugas dan format tampilan yang berbeda di mana mereka dapat mencetak nilai.

Tampilkan/Tulis Tugas

Sintaks

Keduanya $display dan $write tampilkan argumen sesuai urutan kemunculannya dalam daftar argumen.

  
  
$display(<list_of_arguments>);
$write(<list_of_arguments>);

  

$write tidak menambahkan karakter baris baru ke akhir string, sedangkan $display dilakukan dan dapat dilihat dari contoh di bawah ini.

Contoh

  
  
module tb;
  initial begin
    $display ("This ends with a new line ");
    $write ("This does not,");
    $write ("like this. To start new line, use newline char 
");
    $display ("This always start on a new line !");
  end
endmodule

  
Log Simulasi
ncsim> run
This ends with a new line 
This does not,like this. To start new line, use newline char 
Hi there !
ncsim: *W,RNQUIE: Simulation is complete.

Strobe Verilog

$strobe mencetak nilai akhir variabel di akhir langkah waktu delta saat ini dan memiliki format serupa seperti $display .

  
  
module tb;
  initial begin
    reg [7:0] a;
    reg [7:0] b;
    
    a = 8'h2D;
    b = 8'h2D;
    
    #10;                  // Wait till simulation reaches 10ns
    b <= a + 1;           // Assign a+1 value to b
    
    $display ("[$display] time=%0t a=0x%0h b=0x%0h", $time, a, b);
    $strobe  ("[$strobe]  time=%0t a=0x%0h b=0x%0h", $time, a, b);
    
    #1;
    $display ("[$display] time=%0t a=0x%0h b=0x%0h", $time, a, b);
    $strobe  ("[$strobe]  time=%0t a=0x%0h b=0x%0h", $time, a, b);
    
  end
endmodule

  

Perhatikan bahwa $strobe menunjukkan nilai terakhir yang diperbarui dari variabel b pada waktu 10ns yaitu 0x2E , dan $display mengambilnya hanya di delta simulasi berikutnya pada 11ns.

Log Simulasi
ncsim> run
[$display] time=10 a=0x2d b=0x2d
[$strobe]  time=10 a=0x2d b=0x2e
[$display] time=11 a=0x2d b=0x2e
[$strobe]  time=11 a=0x2d b=0x2e
ncsim: *W,RNQUIE: Simulation is complete.
ncsim> exit

Pemantau Berkelanjutan Verilog

$monitor membantu untuk secara otomatis mencetak nilai variabel atau ekspresi setiap kali variabel atau ekspresi dalam daftar argumennya berubah. Ini mencapai efek yang sama dengan memanggil $display setelah setiap argumennya diperbarui.

  
  
module tb;
  initial begin
    reg [7:0] a;
    reg [7:0] b;
    
    a = 8'h2D;
    b = 8'h2D;
        
    #10;                  // Wait till simulation reaches 10ns
    b <= a + 1;           // Assign a+1 value to b
    
    $monitor ("[$monitor] time=%0t a=0x%0h b=0x%0h", $time, a, b);
    
    #1 b <= 8'hA4;
    #5 b <= a - 8'h33;
    #10 b <= 8'h1;
  
  end
endmodule

  

Perhatikan bahwa $monitor seperti tugas yang muncul untuk dijalankan di latar belakang utas utama yang memantau dan menampilkan perubahan nilai dari variabel argumennya. $monitor baru tugas dapat dikeluarkan beberapa kali selama simulasi.

Log Simulasi
ncsim> run
[$monitor] time=10 a=0x2d b=0x2e
[$monitor] time=11 a=0x2d b=0xa4
[$monitor] time=16 a=0x2d b=0xfa
[$monitor] time=26 a=0x2d b=0x1
ncsim: *W,RNQUIE: Simulation is complete.

Penentu Format Verilog

Untuk mencetak variabel di dalam fungsi tampilan, penentu format yang sesuai harus diberikan untuk setiap variabel.

Argumen Deskripsi %h, %H Tampilkan dalam format heksadesimal %d, %D Tampilkan dalam format desimal %b, %B Tampilkan dalam format biner %m, %M Tampilkan nama hierarki %s, %S Tampilkan sebagai string %t, %T Tampilkan dalam format waktu %f, %F Tampilkan 'nyata' dalam format desimal %e, %E Tampilkan 'nyata' dalam format eksponensial
  
  
module tb;
  initial begin
    reg [7:0]  a;
    reg [39:0] str = "Hello";
    time       cur_time;
    real       float_pt;
    
    a = 8'h0E;
    float_pt = 3.142;
    
    $display ("a = %h", a);
    $display ("a = %d", a);
    $display ("a = %b", a);
    
    $display ("str = %s", str);
    #200 cur_time = $time;
    $display ("time = %t", cur_time);
    $display ("float_pt = %f", float_pt);
    $display ("float_pt = %e", float_pt);
  end
endmodule

  
Log Simulasi
ncsim> run
a = 0e
a =  14
a = 00001110
str = Hello
time =                  200
float_pt = 3.142000
float_pt = 3.142000e+00
ncsim: *W,RNQUIE: Simulation is complete.

Urutan Escape Verilog

Beberapa karakter dianggap istimewa karena mewakili tujuan tampilan lain seperti baris baru, tab, dan umpan formulir. Untuk mencetak karakter khusus , setiap kemunculan karakter tersebut harus diloloskan .

Argumen Deskripsi Karakter baris baru Karakter tab Karakter " Karakter " %% % karakter
  
  
module tb;
  initial begin
    $write ("Newline character 
");
    $display ("Tab character 	stop");
    $display ("Escaping  " %%");
    
/*    
    // Compilation errors
    $display ("Without escaping ");       // ERROR : Unterminated string
    $display ("Without escaping "");       // ERROR : Unterminated string
*/
  end
endmodule

  
Log Simulasi
ncsim> run
Newline character 
 
Tab character	stop
Escaping  " %
ncsim: *W,RNQUIE: Simulation is complete.


Verilog

  1. Tutorial Verilog
  2. Rangkaian Verilog
  3. Tugas Verilog
  4. Pemblokiran &Non-Pemblokiran Verilog
  5. Fungsi Verilog
  6. Tugas Verilog
  7. Verilog `ifdef Kompilasi Bersyarat
  8. Lingkup Referensi Hirarki Verilog
  9. Generator Jam Verilog
  10. Verilog Menampilkan Tugas