Verilog
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 Simulasixcelium> run Time scale of (tb) is 1ns / 1ns xmsim: *W,RNQUIE: Simulation is complete.
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 Simulasixcelium> 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.
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 Simulasixcelium> 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.
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 Simulasixcelium> 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
Parameter adalah konstruksi Verilog yang memungkinkan modul untuk digunakan kembali dengan spesifikasi yang berbeda. Misalnya, penambah 4-bit dapat diparameterisasi untuk menerima nilai jumlah bit dan nilai parameter baru dapat diteruskan selama pembuatan modul. Jadi, penambah N-bit bisa menjadi pen
Verilog adalah bahasa deskripsi perangkat keras dan tidak ada persyaratan bagi desainer untuk mensimulasikan desain RTL mereka agar dapat mengubahnya menjadi gerbang logika. Jadi apa yang perlu disimulasikan? Simulasi adalah teknik menerapkan stimulus input yang berbeda ke desain pada waktu yang
Simulasi Verilog tergantung pada bagaimana waktu didefinisikan karena simulator perlu mengetahui apa arti #1 dalam hal waktu. `timescale direktif compiler menentukan unit waktu dan presisi untuk modul yang mengikutinya. Sintaks `timescale <time_unit>/<time_precision> // Example `ti
Desain module pr_en ( input [7:0] a, input [7:0] b, input [7:0] c, input [7:0] d, input [1:0] sel, output reg [7:0] out); always @ (a or b or c or d or sel) begin if (sel == 2b00) out <= a; else