Ana içeriğe geç

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ı
Yazar
Kerim Turak
Digital IC Design & Verification Engineer
Table of Contents
Verilog HDL Serisi - This article is part of a series.
Part 20: This Article

📥 Command-Line Input in Verilog
#

Verilog testbenchlerinde komut satırından değer almak, simülasyonu esnek ve parametreli hale getirmenin yaygın bir yoludur. Bu özellik sayesinde aynı testbench’i farklı senaryolarla çalıştırabilirsiniz — örneğin farklı seed, mode, veya testcase değerleriyle.


🔹 $value$plusargs
#

Kullanıcıdan gelen +ARG=VALUE biçimindeki girişleri yakalamak için kullanılır.

$value$plusargs("SEED=%d", seed);

Bu ifade, komut satırında +SEED=123 şeklinde bir argüman varsa seed değişkenine 123 atar ve 1 döner. Yoksa 0 döner.

✅ Örnek:
#

integer seed;
initial begin
  if (!$value$plusargs("SEED=%d", seed)) begin
    seed = 42;  // Default value
  end
  $display("Using seed: %0d", seed);
end

🔹 $test$plusargs
#

Sadece bir bayrak (flag) argümanı olup olmadığını kontrol eder. Değer taşımaz.

if ($test$plusargs("VERBOSE")) begin
  $display("Verbose mode is ON.");
end

Komut satırında +VERBOSE varsa 1 döner, yoksa 0.


🖥️ Simülasyon Komutu
#

vvp a.out +SEED=123 +VERBOSE

🧠 Summary Table
#

KategoriFonksiyonAçıklama
Değer girişi$value$plusargs("FORMAT", var)Argümanı alır, değişkene atar
Bayrak kontrolü$test$plusargs("NAME")Flag var mı diye kontrol eder

module tb_cmd_args;

    integer seed;
    bit verbose;

    initial begin
        // Get numeric seed from command line
        if (!$value$plusargs("SEED=%d", seed)) begin
            seed = 0;  // Default seed
        end

        // Check for +VERBOSE flag
        if ($test$plusargs("VERBOSE")) begin
            verbose = 1;
            $display("Verbose mode is ON.");
        end else begin
            verbose = 0;
        end

        $display("Simulation Seed = %0d", seed);
        #10 $finish;
    end

endmodule

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

Related

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 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 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 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ı
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ı