Verilog vs SystemVerilog
Gün 1: SystemVerilog'a Giriş ve Veri Tipleri | İki dil arasındaki temel farklar ve SV'nin getirdiği yenilikler
Kaynak Kod
// =============================================================================
// GUN 1 - Konu 2: Verilog vs. SystemVerilog Farklari
// =============================================================================
module verilog_vs_sv;
// -------------------------------------------------------------------------
// VERILOG TARZI (Eski Yontem)
// -------------------------------------------------------------------------
reg [7:0] verilog_data; // reg ve wire ayrimi gerekli
wire [7:0] verilog_wire;
integer verilog_int; // 32-bit, her zaman signed
reg verilog_array [0:3]; // Kisitli dizi destegi
// -------------------------------------------------------------------------
// SYSTEMVERILOG TARZI (Modern Yontem)
// -------------------------------------------------------------------------
logic [7:0] sv_data; // Tek tip: hem reg hem wire yerine
int sv_int; // Kompakt 32-bit signed
bit [7:0] sv_fast; // 2-state, daha hizli simulasyon
byte sv_byte; // 8-bit signed
shortint sv_short; // 16-bit signed
longint sv_long; // 64-bit signed
// SystemVerilog: Gelismis donguler
initial begin
$display("=== Verilog vs. SystemVerilog Karsilastirmasi ===\n");
// --- Verilog tarzi dongu ---
$display("[Verilog] Klasik for dongusu:");
begin : verilog_loop
integer i;
for (i = 0; i < 4; i = i + 1) begin
$display(" i = %0d", i);
end
end
// --- SystemVerilog tarzi dongu ---
$display("\n[SystemVerilog] Gelismis for dongusu:");
for (int i = 0; i < 4; i++) begin // Dongu icinde tanimlama, ++ operatoru
$display(" i = %0d", i);
end
// --- SystemVerilog: do-while ---
$display("\n[SystemVerilog] do-while dongusu:");
begin
int count = 3;
do begin
$display(" count = %0d", count);
count--;
end while (count > 0);
end
// --- SystemVerilog: foreach ---
$display("\n[SystemVerilog] foreach dongusu:");
begin
int arr [5] = '{10, 20, 30, 40, 50};
foreach (arr[i])
$display(" arr[%0d] = %0d", i, arr[i]);
end
// --- SystemVerilog: case ---
$display("\n[SystemVerilog] case:");
begin
int sel = 2;
case (sel)
0: $display(" Secim: A");
1: $display(" Secim: B");
2: $display(" Secim: C");
3: $display(" Secim: D");
endcase
end
// --- SystemVerilog: Otomatik tip donusumu ---
$display("\n[SystemVerilog] Tip donusumleri:");
begin
real r = 3.14;
int i = int'(r); // Casting
bit [7:0] b = 8'(i); // Bit genisligi casting
$display(" real=%f -> int=%0d -> bit[7:0]=%0d", r, i, b);
end
$display("\n=== Karsilastirma Sonu ===");
$finish;
end
endmodule