EDA Playground'da Dene

Neden SystemVerilog?

Gün 1: SystemVerilog'a Giriş ve Veri Tipleri | Donanım doğrulamaya giriş ve SystemVerilog'un avantajları

Kaynak Kod

// =============================================================================
// GUN 1 - Konu 1: Donanim Dogrulamaya Giris (Neden SystemVerilog?)
// =============================================================================
// SystemVerilog, Verilog'un uzerine insa edilmis guclu bir dogrulama ve
// tasarim dilidir. Dogrulama (verification) surecini hizlandirmak icin
// OOP, rastgele uretim, assertion ve coverage gibi ozellikler sunar.
// =============================================================================

module neden_systemverilog;

  // --- Verilog'da olmayan SystemVerilog Ozellikleri ---

  // 1. Iki-durumlu (2-state) veri tipleri - daha hizli simulasyon
  bit       fast_bit;       // 0 veya 1 (x/z yok)
  int       counter;        // 32-bit signed integer
  
  // 2. Dort-durumlu (4-state) yeni tip
  logic     flexible_wire;  // wire ve reg yerine tek tip
  
  reg [8*11-1:0] str = "Hello World"; // Verilog'ta stringler boyle saklaniyor
  
  string str_sv = "Merhaba Dunya";

  // 3. Dogrulama yapilari
  // - Siniflar (Classes) ile OOP
  // - Rastgele kisitlamalar (Constrained Random)
  // - Fonksiyonel kapsam (Functional Coverage)
  // - Assertions (SVA)
  // - Surecler arasi iletisim (IPC)

  initial begin
    $display("=========================================");
    $display(" Neden SystemVerilog?");
    $display("=========================================");
    $display("");
    $display(" Verilog Eksiklikleri:");
    $display("   - Sinirli veri tipleri (reg, wire, integer)");
    $display("   - OOP destegi yok");
    $display("   - Rastgele test uretimi zor");
    $display("   - Kapsam olcumu (coverage) yok");
    $display("");
    $display(" SystemVerilog Cozumleri:");
    $display("   - Zengin veri tipleri (logic, bit, int, enum, struct)");
    $display("   - Tam OOP destegi (class, inheritance, polymorphism)");
    $display("   - Constrained Random Verification (CRV)");
    $display("   - Fonksiyonel kapsam (covergroup, coverpoint)");
    $display("   - SystemVerilog Assertions (SVA)");
    $display("   - Surecler arasi iletisim (mailbox, semaphore, event)");
    $display("");

    // Basit bir ornek: SystemVerilog'un guclu tipleri
    fast_bit = 1;
    counter  = -42;
    flexible_wire = 1'bx;

    $display(" Ornek Degerler:");
    $display("   bit       = %0b", fast_bit);
    $display("   int       = %0d", counter);
    $display("   logic     = %b  (x/z destekler)", flexible_wire);
    $display("   string(verilog) = %s",str);
    $display("   string(SV) = %s",str_sv);
    $display("=========================================");
    $finish;
  end

endmodule