Verilog
Desain Verilog dan testbench biasanya memiliki banyak baris kode yang terdiri dari always
atau initial
blok, penugasan berkelanjutan, dan pernyataan prosedural lainnya yang menjadi aktif pada waktu yang berbeda selama simulasi.
Setiap perubahan nilai sinyal dalam model Verilog dianggap sebagai peristiwa pembaruan . Dan proses seperti always
dan assign
blok yang sensitif terhadap peristiwa pembaruan ini dievaluasi dalam urutan arbitrer dan disebut peristiwa evaluasi . Karena peristiwa ini dapat terjadi pada waktu yang berbeda, peristiwa tersebut dikelola dengan lebih baik dan memastikan urutan eksekusi yang benar dengan menjadwalkannya ke dalam antrean peristiwa yang diatur oleh waktu simulasi.
module tb;
reg a, b, c;
wire d;
// 'always' is a process that gets evaluated when either 'a' or 'b' is updated.
// When 'a' or 'b' changes in value it is called an 'update event'. When 'always'
// block is triggered because of a change in 'a' or 'b' it is called an evaluation
// event
always @ (a or b) begin
c = a & b;
end
// Here 'assign' is a process which is evaluated when either 'a' or 'b' or 'c'
// gets updated
assign d = a | b ^ c;
endmodule
Sebuah langkah simulasi dapat disegmentasikan menjadi empat wilayah yang berbeda. Antrian acara aktif hanyalah serangkaian proses yang perlu dijalankan pada saat ini yang dapat menghasilkan lebih banyak proses yang dijadwalkan ke dalam antrian acara aktif atau lainnya. Acara dapat ditambahkan ke wilayah mana pun, tetapi selalu dihapus dari aktif wilayah.
Ketika semua peristiwa dalam antrian aktif untuk langkah waktu saat ini telah dieksekusi, simulator memajukan waktu ke langkah waktu berikutnya dan mengeksekusi antrian aktifnya.
module tb;
reg x, y, z
initial begin
#1 x = 1;
y = 1;
#1 z = 0;
end
endmodule
Simulasi dimulai pada waktu 0, dan pernyataan pertama dijadwalkan untuk dieksekusi ketika waktu simulasi mencapai 1 unit waktu yang menetapkan x dan y ke 1. Ini adalah antrian aktif untuk waktu saat ini yaitu 1 unit waktu. Simulator kemudian menjadwalkan pernyataan berikutnya setelah 1 unit waktu lagi di mana z ditetapkan 0.
Mungkin ada kondisi balapan selama simulasi yang pada akhirnya memberikan output berbeda untuk desain dan bangku tes yang sama. Salah satu alasan perilaku nondeterministik adalah karena aktif acara dapat dihapus dari antrian dan diproses dalam urutan apa pun.
Verilog
case pernyataan memeriksa apakah ekspresi yang diberikan cocok dengan salah satu ekspresi lain dalam daftar dan bercabang sesuai. Biasanya digunakan untuk mengimplementasikan multiplexer. Konstruksi if-else mungkin tidak cocok jika ada banyak kondisi yang harus diperiksa dan akan disintesis menjadi
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