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