Sistem Görevlerini Kullanma
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 77 / 90.
Sistem görevleri, Verilog'da dolar işareti ($) ile başlayan yerleşik komutlardır. Mesaj yazdırma, simülasyonu sonlandırma ve dalga formu dosyaları oluşturma gibi faydalı işlevler gerçekleştirirler.
Önceki derslerde $display, $monitor, $dumpfile ve $dumpvars konularını zaten işlemiştik. Bu derste, testbench'lerde yararlı olan ek sistem görevlerine bakacağız.
Ek Sistem Görevleri
| Sistem Görevi | Amaç |
|---|---|
$time | Mevcut simülasyon süresini döndürür |
$finish | Simülasyonu sonlandırır |
$stop | Simülasyonu duraklatır |
$random | Rastgele sayı üretir |
$time
Mevcut simülasyon süresini döndürür. Olayların ne zaman gerçekleştiğini takip etmek için kullanışlıdır.
$display("Current time is %0t", $time);$finish
Simülasyonu sonlandırır. Her zaman testbench'inizin sonunda kullanın.
$finish;$stop
Simülasyonu duraklatır. Bir simülatör komutuyla devam ettirilebilir. Hata ayıklama için kullanışlıdır.
$stop;$random
Rastgele bir sayı üretir. Rastgele test uyarıcıları oluşturmak için kullanışlıdır.
reg [7:0] rand_value;
rand_value = $random;Birden Fazla Sistem Görevi Kullanan Örnek
module system_tasks_demo;
reg [7:0] data;
integer i;
initial begin
$display("Simulation started at time %0t", $time);
for (i = 0; i < 5; i = i + 1) begin
data = $random;
$display("Random value %d: %b", i, data);
end
$stop;
#10 $display("Resumed at time %0t", $time);
$display("Simulation finished at time %0t", $time);
$finish;
end
endmoduleGörev
Bu testbench'e eksik sistem görevlerini ekleyin.
Ne yapmalı:
- Başlangıçta geçerli zamanı yazdırmak için
$displayekleyin - Sonda geçerli zamanı yazdırmak için
$displayekleyin - Simülasyonu sonlandırmak için
$finishekleyin
Kopya kağıdı
Verilog'daki sistem görevleri $ ile başlar ve simülasyon yardımcı programlarını yürütür:
| Sistem Görevi | Amaç |
|---|---|
$time | Mevcut simülasyon süresini döndürür |
$finish | Simülasyonu bitirir |
$stop | Simülasyonu duraklatır |
$random | Rastgele sayı üretir |
$display("Time: %0t", $time); // mevcut süreyi yazdır
$finish; // simülasyonu bitir
$stop; // simülasyonu duraklat
reg [7:0] rand_value;
rand_value = $random; // rastgele sayı ataKendin dene
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule
module testbench;
reg a, b;
wire c;
and_gate dut (
.a(a),
.b(b),
.c(c)
);
initial begin
// YAPILACAK: Başlangıçta geçerli zamanı gösteren $display ekleyin
// Format: "Start time: %0t"
$monitor("Time %0t: a=%b, b=%b, c=%b", $time, a, b, c);
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
// YAPILACAK: Bitişte geçerli zamanı gösteren $display ekleyin
// Format: "End time: %0t"
// YAPILACAK: $finish ekleyin
end
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları14Testbench Temelleri
Testbench Nedir?Stimulus OluşturmaDisplay ve MonitorDumpfile ve DumpvarsSistem Görevlerini KullanmaÖzet - Tam Testbench3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı