🧠 SystemVerilog Boyutsuz Sabitler (Unsized Literals)#
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)