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

Lingkup Skala Waktu Verilog

Skala waktu default

Meskipun modul Verilog diharapkan memiliki skala waktu yang ditentukan sebelum modul, simulator dapat memasukkan skala waktu default. Skala waktu aktual yang diterapkan pada cakupan apa pun dalam hierarki yang diuraikan Verilog dapat dicetak menggunakan tugas sistem $printtimescale yang menerima ruang lingkup sebagai argumen.

  
  
module tb;
	initial begin
		// Print timescale of this module
		$printtimescale(tb);
		// $printtimescale($root);
	end
endmodule

  

Perhatikan bahwa meskipun arahan skala waktu tidak ditempatkan sebelum modul ini, simulator akhirnya menerapkan nilai skala waktu 1ns/1ns.

Log Simulasi
xcelium> run
Time scale of (tb) is  1ns /  1ns
xmsim: *W,RNQUIE: Simulation is complete.

Cakupan skala waktu standar

Secara default, arahan skala waktu yang ditempatkan dalam file diterapkan ke semua modul yang mengikuti arahan hingga definisi arahan skala waktu lain.

  
  
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

module alu;
  
endmodule

`timescale 1ns/10ps

module des;
  
endmodule

  

Pada contoh di atas, tb dan alu berakhir dengan skala waktu 1ns/1ns sedangkan des mendapat skala waktu 1ns/10ps karena penempatan direktif sebelum definisi modul des

Log Simulasi
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  1ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

Cakupan antara file Verilog

File lain dapat dimasukkan ke dalam file saat ini menggunakan `include direktif yang merupakan direktif pra-prosesor dan membuat kompiler menempatkan konten file yang disertakan sebelum kompilasi. Jadi, ini setara dengan hanya menempelkan seluruh isi file lain di file utama ini.

  
  
// main.v
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

`include "file_alu.v"
`include "file_des.v"

// file_alu.v
module alu;
endmodule

// file_des.v
`timescale 1ns/10ps

module des;
  
endmodule

  

Lihat bahwa hasilnya persis sama seperti pada contoh sebelumnya. alu mendapatkan skala waktu 1ns/1ps karena itu adalah arahan terakhir yang tetap valid sampai kompiler menemukan definisi alu meskipun menempatkannya di file yang berbeda. des mendapat skala waktu 1ns/10ps karena direktif diganti sebelum definisinya.

Log Simulasi
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  1ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

Bertukar file dapat mengubah skala waktu

Urutan penyertaan file memainkan peran penting dalam pendefinisian ulang arahan skala waktu, yang terlihat pada contoh di bawah ini.

  
  
// main.v
`timescale 1ns/1ps

module tb;
  des m_des();
  alu m_alu();
  
  initial begin
    $printtimescale(tb);
    $printtimescale(tb.m_alu);
	$printtimescale(tb.m_des);
  end
endmodule

// NOTE! Swapped order of inclusion
`include "file_des.v"
`include "file_alu.v"

// file_alu.v
module alu;
endmodule

// file_des.v
`timescale 1ns/10ps

module des;
  
endmodule

  

Lihat bahwa modul alu sekarang mendapatkan skala waktu 1ns/10ps.

Log Simulasi
xcelium> run
Time scale of (tb) is  1ns /  1ps
Time scale of (tb.m_alu) is  1ns /  10ps
Time scale of (tb.m_des) is  1ns /  10ps
xmsim: *W,RNQUIE: Simulation is complete.

Ini adalah salah satu alasan untuk memiliki arahan skala waktu di bagian atas file sehingga semua modul dalam file tersebut mengasumsikan skala waktu yang benar terlepas dari penyertaan file.

Namun pendekatan ini mungkin menyulitkan untuk dikompilasi dengan presisi skala waktu yang berbeda (nilai mengikuti miring) tanpa mengubah setiap file. Banyak kompiler dan simulator juga menyediakan opsi untuk mengganti nilai skala waktu default yang akan diterapkan ke semua modul.


Verilog

  1. Tutorial Verilog
  2. Rangkaian Verilog
  3. Tugas Verilog
  4. Pemblokiran &Non-Pemblokiran Verilog
  5. Fungsi Verilog
  6. Tugas Verilog
  7. Lingkup Referensi Hirarki Verilog
  8. Generator Jam Verilog
  9. Fungsi Matematika Verilog
  10. Format Waktu Verilog