EDA Playground'da Dene

Veri Tipleri

Gün 1: SystemVerilog'a Giriş ve Veri Tipleri | logic, bit, byte, int ve diğer SystemVerilog veri tipleri

Kaynak Kod

// =============================================================================
// GUN 1 - Konu 3: Yeni Veri Tipleri: logic, bit, byte, int
// =============================================================================

module veri_tipleri;

  // ---- 4-STATE (Dort Durumlu) Tipler: 0, 1, x, z ----
  logic        l_single;         // 1-bit, x/z destekler
  logic [7:0]  l_byte;           // 8-bit logic
  logic [31:0] l_word;           // 32-bit logic
  
  // ---- 2-STATE (Iki Durumlu) Tipler: sadece 0, 1 ----
  bit          b_single;         // 1-bit, daha hizli simulasyon
  bit [7:0]    b_byte;           // 8-bit bit
  
  // ---- Onceden Tanimli 2-State Tipler ----
  byte         signed_byte;      // 8-bit signed  [-128, 127]
  shortint     signed_short;     // 16-bit signed [-32768, 32767]
  int          signed_int;       // 32-bit signed
  longint      signed_long;      // 64-bit signed
  
  // ---- Unsigned Varyantlar ----
  bit [7:0]    unsigned_byte;    // byte unsigned karsiligi
  int unsigned uint_val;         // 32-bit unsigned

  // ---- Gercek Sayilar ----
  real         real_val;         // 64-bit IEEE 754 double
  shortreal    short_real;       // 32-bit IEEE 754 float

  // ---- Void ----
  // void tipi fonksiyon donus degeri olarak kullanilir

  initial begin
    $display("=== SystemVerilog Veri Tipleri ===\n");

    // --- 4-state vs 2-state farki ---
    l_single = 1'bx;
    b_single = 1'bx;  // x atanir ama 0 olarak saklanir (2-state)
    $display("4-state logic = %b (x destekler)", l_single);
    $display("2-state bit   = %b (x -> 0 donusur)\n", b_single);

    // --- Signed tipler ---
    signed_byte = -100;
    signed_int  = -2_000_000;  // Alt cizgi okunabilirlik icin
    $display("byte    = %0d (8-bit signed)", signed_byte);
    $display("int     = %0d (32-bit signed)", signed_int);

    // --- Unsigned ---
    uint_val = 4_000_000_000;
    $display("int unsigned = %0d\n", uint_val);

    // --- Boyut bilgileri ---
    $display("Tip Boyutlari (bit cinsinden):");
    $display("  byte     = %0d bit", $bits(signed_byte));
    $display("  shortint = %0d bit", $bits(signed_short));
    $display("  int      = %0d bit", $bits(signed_int));
    $display("  longint  = %0d bit", $bits(signed_long));
    $display("  real     = %0d bit", $bits(real_val));

    // --- Otomatik baslatma ---
    $display("\nVarsayilan baslangic degerleri:");
    $display("  logic varsayilan = %b (x)", l_byte);
    $display("  bit   varsayilan = %b (0)", b_byte);
    $display("  int   varsayilan = %0d (0)", signed_int);

    $display("\n=== Veri Tipleri Sonu ===");
    $finish;
  end

endmodule