Ana içeriğe geç

SystemVerilog Boyutsuz Literaller

· loading · loading · ·
Donanım Tasarımı SystemVerilog Literal RTL Tasarımı Başlatma Sentezleme Reset Mantığı
Donanım Tasarımı
Axolot Logic
Yazar
Axolot Logic
Sayısal Tasarım Mühendisi
Table of Contents
SystemVerilog Tasarım Serisi - This article is part of a series.
Part 6: This Article

🧠 SystemVerilog Boyutsuz Sabitler (Unsized Literals)
#

📘 Önceki Rehber: 👉 Verilog Veri Türleri Rehberi sayfasını inceleyebilirsiniz.

SystemVerilog’ta aşağıdaki ifade:

data = '0;

şu anlama gelir:

data sinyalinin tüm bitlerini sıfıra ata.”

Bu sözdizimi, başında bir tek tırnak (') bulunan bir boyutsuz sabit (0) kullanır. SystemVerilog, sağ taraftaki değerin bit genişliğini sol taraftaki değişkene otomatik olarak uyarlar.


✅ Örnek
#

logic [31:0] data;
data = '0;  // Şuna denktir: data = 32'b0;

Bit genişliğini manuel olarak belirtmen gerekmez — '0 sabiti, data’nın tam genişliğini dolduracak şekilde sıfırla genişletilir.


🔍 Neden Güvenlidir?
#

'hFF gibi sabit değerler sabit bit uzunluklarıyla gelirken, '0 ve '1 gibi değerler tek bitlik sabitler olarak değerlendirilir ve hedef değişkenin tüm bitlerine yayılır.

Örneğin:

logic [7:0] a = '1;  // a = 8'b11111111
logic [15:0] b = '0; // b = 16'b0000000000000000

🔗 İlgili Konu
#

Boyutsuz sabitlerin 'hF, 'd5, 'x gibi kullanım örneklerini ve varsayılan davranışları merak ediyor musun? 👉 Verilog’ta Boyutsuz Sabitler (Unsized Literals) Hakkında Daha Fazla Bilgi Alın


🔖 Not
#

'0 ve '1 gibi sabitleri bu şekilde kullanmak açık, kısa ve sentezle uyumlu bir yazım şeklidir. SystemVerilog’ta bir sinyali sıfırlamak veya başlangıç değeri vermek için yaygın olarak önerilir.
module unsized_literals_tb;

  // Farklı genişliklerde logic sinyaller
  logic [7:0]    a;
  logic [15:0]   b;
  logic [31:0]   c;
  logic signed [15:0] d;

  initial begin
    // Boyutsuz sabitlerle atama
    a = '1;  // Tüm bitler 1 olur: 8'b11111111
    b = '0;  // Tüm bitler 0 olur: 16'b0000_0000_0000_0000
    c = '1;  // Tüm bitler 1 olur: 32'b1...1
    d = '0;  // Signed sinyaller için de geçerlidir

    // Sonuçları yazdır
    $display("a (8-bit)  = %b", a);
    $display("b (16-bit) = %b", b);
    $display("c (32-bit) = %b", c);
    $display("d (signed) = %b", d);

    // Alternatif örnek: tüm biti X yapma
    a = 'x;
    $display("a = 'x      -> %b (tüm bitler bilinmiyor)", a);

    // Alternatif örnek: tüm biti Z yapma
    b = 'z;
    $display("b = 'z      -> %b (tüm bitler high impedance)", b);
  end

endmodule

📤 Output:
#

# a (8-bit)  = 11111111
# b (16-bit) = 0000000000000000
# c (32-bit) = 11111111111111111111111111111111
# d (signed) = 0000000000000000
# a = 'x      -> xxxxxxxx (tüm bitler bilinmiyor)
# b = 'z      -> zzzzzzzzzzzzzzzz (tüm bitler high impedance)

SystemVerilog Tasarım Serisi - This article is part of a series.
Part 6: This Article

Related

SystemVerilog Veri Türleri
· loading · loading
Donanım Tasarımı Doğrulama SystemVerilog Verilog RTL Tasarımı Veri Tipleri Sentezleme Simülasyon
Donanım Tasarımı Doğrulama
SystemVerilog Logic Veri Türü
· loading · loading
Donanım Tasarımı Doğrulama SystemVerilog Logic RTL Tasarımı Verilog Sentezleme Net vs Değişken
Donanım Tasarımı Doğrulama
SystemVerilog Enum Veri Tipi
· loading · loading
Donanım Tasarımı Doğrulama SystemVerilog Enum Durum Makinesi RTL Tasarımı Testbench Hata Ayıklama
Donanım Tasarımı Doğrulama
SystemVerilog'da Blocking ve Non-Blocking Atamalar – Farklar ve En İyi Kullanım
· loading · loading
Donanım Tasarımı SystemVerilog Blocking Non-Blocking RTL Tasarımı Simülasyon Always Bloğu
Donanım Tasarımı
SystemVerilog Clocking Block – Testbench Zamanlama Kontrolü
· loading · loading
Doğrulama Donanım Tasarımı SystemVerilog Clocking Block RTL Tasarımı Testbench UVM Zamanlama
Doğrulama Donanım Tasarımı
SystemVerilog Döngüler ve Kontrol Akışı – for, while, foreach, repeat, break
· loading · loading
Donanım Tasarımı Doğrulama SystemVerilog Döngüler Kontrol Akışı Testbench RTL Tasarımı Break/Continue
Donanım Tasarımı Doğrulama