🧠 logic
Veri Türü Nedir?#
SystemVerilog, Verilog’un miras aldığı iki ayrı sinyal türü olan wire
ve reg
arasındaki karmaşayı ortadan kaldırmak amacıyla yeni bir tür tanıttı: logic
.
logic
, hem prosedürel (sequential) hem de sürekli (continuous) atamaları destekleyen, 4 durumlu (0, 1, x, z) bir türdür.
🤯 reg
vs wire
Sorunu#
Verilog’da:
wire
: sadeceassign
ile bağlanabilir.reg
:always
bloğunda kullanılabilir ama donanımsal olarak register olmak zorunda değildir.
Bu durum, yeni başlayanlar için kafa karıştırıcıdır çünkü:
reg
ismi “register” izlenimi verir, ama sentetik olarak bu her zaman doğru değildir.wire
kullanımı RTL içindealways
ile yapılamaz.
💡 logic
Neden Tanıtıldı?#
SystemVerilog’un hedefi:
- RTL yazımını sadeleştirmek
- tip sistemini güçlendirmek
- kodun okunuşunu ve sentezlenebilirliğini iyileştirmek idi.
logic
sayesinde:
- Aynı tür ile hem RTL (
always_ff
) hem testbench (initial
,always_comb
) kodları yazılabilir. reg
‘in anlam karmaşasından kurtulunur.- Kod daha modüler ve sorunsuz sentezlenebilir hale gelir.
✅ Kullanım Örneği#
module counter(
input logic clk,
input logic rst,
output logic [3:0] count
);
always_ff @(posedge clk or posedge rst) begin
if (rst)
count <= 0;
else
count <= count + 1;
end
endmodule
logic [3:0] count
hemassign
hemalways
bloklarında kullanılabilir!
⚠️ Dikkat Edilmesi Gerekenler#
logic
bir net türü değildir! Yani doğrudan birden fazla kaynaktan sürülemez.- Eğer çoklu sürücülü (multiple driver) bir sinyal gerekiyorsa,
wire
hâlâ kullanılmalıdır.
- Eğer çoklu sürücülü (multiple driver) bir sinyal gerekiyorsa,
Her
logic
sinyal, sentetik olarak birreg
veyaflip-flop
ile sonuçlanmaz; bu, kullanım bağlamına göre değişir.
🔖 Not – reg, wire ve logic Üzerine#
Unutmayın:
reg
aslında bir variable (değişken) türüdür. Donanımsal olarak her zaman bir register üretmeyebilir; bazı durumlarda combinational mantık olarak sentezlenebilir.
wire
ise bir net türüdür ve sadece bağlantı (sinyal yönlendirme) amaçlıdır.
SystemVerilog’da tanıtılan logic
, bir variable olarak reg
‘in yerini alır ve isimlendirmede yarattığı anlam karmaşasını giderir.
Böylece kod daha anlaşılır ve hataya daha dayanıklı hale gelir.
📌 Özet#
SystemVerilog’un logic
türü:
✅ reg
ve wire
farkını ortadan kaldırır
✅ Modern RTL yazımını kolaylaştırır
✅ Hataları azaltır, kod okunabilirliğini artırır
✅ Hem sentez hem simülasyon dostudur