Ana içeriğe geç

Verilog Sistem Fonksiyonları ve Görevleri: Simülasyon İçin

· loading · loading · ·
Kerim Turak
Donanım Tasarımı Verilog Sistem Fonksiyonları Verilog Görevler Simülasyon Testbench Rastgeleleştirme
Donanım Tasarımı
Yazar
Kerim Turak
Digital IC Design & Verification Engineer
Table of Contents
Verilog HDL Serisi - This article is part of a series.
Part 16: This Article

⚙️ Verilog Sistem Fonksiyonları ve Görevleri (Tasks)
#

Verilog, simülasyon, veri işleme ve çalışma zamanı kontrolü için $ ile başlayan birçok yerleşik sistem fonksiyonu sağlar. Bu fonksiyonlar sentezlenemez ve yalnızca testbench ya da simülasyon ortamlarında kullanılmalıdır.


🎲 Rastgele Sayı Fonksiyonları
#

FonksiyonAçıklamaÖrnek
$random32-bit işaretli rastgele sayı üretirr = $random;
$urandom32-bit işaretsiz rastgele sayı üretirr = $urandom;
$urandom_range(min, max)Belirtilen aralıkta rastgele sayı üretirr = $urandom_range(0, 15);

Testbench’te test girdisi (stimulus) üretmek için kullanılır.


🛑 Simülasyon Kontrol Görevleri
#

GörevAçıklamaÖrnek
$stopSimülasyonu durdurur, varsa hata ayıklayıcıyı açar$stop;
$finishSimülasyonu düzgün şekilde sonlandırır$finish;
$fatalHatalı şekilde sonlandırır (assert gibidir)$fatal(1, "Hata!");

➗ Matematik ve Dönüştürme Fonksiyonları
#

FonksiyonAçıklamaÖrnek
$clog2(x)Log2 tabanında yukarı yuvarlanmış değerlocalparam W = $clog2(10);
$bits(x)Değişkenin bit genişliğini verir$bits(my_reg)
$signed(x)Değeri işaretli tipe dönüştürürout = $signed(data);
$unsigned(x)Değeri işaretsiz tipe dönüştürürout = $unsigned(signed_data);

$clog2, bellek genişliği veya sayaç gibi parametrelerin belirlenmesinde çok faydalıdır.


module tb_system_tasks;

    reg [7:0] r1, r2;
    reg [3:0] index;
    reg signed [15:0] s_val = -10;
    reg [15:0] u_val;

    initial begin
        // Randomization
        r1 = $urandom;
        r2 = $urandom_range(0, 15);
        $display("Random r1 = %0d, r2 (0-15) = %0d", r1, r2);

        // Math & conversion
        index = $clog2(10);  // = 4
        $display("clog2(10) = %0d", index);

        u_val = $unsigned(s_val);
        $display("s_val = %0d, u_val = %0d", s_val, u_val);

        // Simulation control
        #20 $finish;
    end

endmodule

Verilog HDL Serisi - This article is part of a series.
Part 16: This Article

Related

Verilog Gecikme Kontrolleri: #Gecikme, @Olay, Bekleme
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Gecikme Olay Kontrolü Bekleme İfadesi Simülasyon Testbench
Donanım Tasarımı
Verilog Hiyerarşik Referans: Dahili Sinyallere Erişim
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Hiyerarşik Referans Force Release Testbench Simülasyon Hata Ayıklama Donanım Doğrulama
Donanım Tasarımı
Verilog Komut Satırı Girişi: Testbench Kontrolü İçin $plusargs
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Komut Satırı Plusargs Testbench Simülasyon Kontrolü Donanım Doğrulama
Donanım Tasarımı
Verilog Simülasyon Temelleri ve Testbench Tasarımı
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Simülasyon Testbench Timescale Simülasyon Bölgeleri Donanım Doğrulama
Donanım Tasarımı
Verilog VCD: Simülasyon Analizi İçin Dalga Formu Kaydı
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog VCD Dalga Formu Görüntüleme Simülasyon Analizi Testbench GTKWave
Donanım Tasarımı
Verilog initial Bloğu: Testbench ve Simülasyon Temelleri
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Initial Verilog Testbench Simülasyon Donanım Doğrulama Dijital Tasarım
Donanım Tasarımı