Ana içeriğe geç

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
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 3: This Article

🧠 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: sadece assign 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çinde always 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 hem assign hem always 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.
  • Her logic sinyal, sentetik olarak bir reg veya flip-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


SystemVerilog Tasarım Serisi - This article is part of a series.
Part 3: 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 Giriş
· loading · loading
Donanım Tasarımı Doğrulama SystemVerilog Verilog RTL Tasarımı UVM Donanım Doğrulama IEEE 1800
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 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 Task ve Function Yapıları
· loading · loading
Donanım Tasarımı Doğrulama SystemVerilog Task Function RTL Tasarımı Testbench Yeniden Kullanılabilirlik
Donanım Tasarımı Doğrulama
SystemVerilog Boyutsuz Literaller
· loading · loading
Donanım Tasarımı SystemVerilog Literal RTL Tasarımı Başlatma Sentezleme Reset Mantığı
Donanım Tasarımı