📘 SystemVerilog Veri Türleri – Kapsamlı Bir Genel Bakış (Varsayılan Özelliklerle Birlikte)
#
SystemVerilog, Verilog’un sınırlı tür sistemini çok daha güçlü ve anlamlı hale getirir. Aşağıda, SystemVerilog’daki temel veri türlerinin varsayılan bit genişliği, işaret durumu (signed/unsigned) ve varsayılan başlangıç değeri gibi özellikleriyle birlikte tam bir özeti yer alıyor.
🔁 1. 4 Durumlu ve 2 Durumlu Türler (4-State vs 2-State)
#
Tür |
Durumlar |
Varsayılan Boyut |
Varsayılan İşaretlilik |
Varsayılan Değer |
Açıklama |
logic |
0, 1, X, Z |
Skaler (1 bit) veya tanımlı |
Unsigned |
X (bilinmiyor) |
reg ve wire yerine tercih edilir |
reg |
0, 1, X, Z |
Skaler (1 bit) veya tanımlı |
Unsigned |
X |
Eski Verilog, logic ile değiştirilir |
bit |
0, 1 |
Skaler (1 bit) veya tanımlı |
Unsigned |
0 |
2 durumlu, simülasyon için uygundur |
✅ RTL tasarımda logic
, performans içinse bit
kullanılması önerilir.
🧮 2. Tamsayı Türleri (Integer Types)
#
Tür |
Boyut |
İşaretli mi |
Varsayılan Değer |
Açıklama |
byte |
8-bit |
Evet |
0 |
Signed (işaretli) |
shortint |
16-bit |
Evet |
0 |
|
int |
32-bit |
Evet |
0 |
En yaygın kullanılan tamsayı türü |
longint |
64-bit |
Evet |
0 |
|
integer |
≥32-bit |
Evet |
0 |
Verilog’tan kalma |
time |
64-bit |
Hayır |
0 |
Simülasyon zaman takibi için |
🧠 Tavsiye: Yeni projelerde int
, longint
, bit
gibi modern türler tercih edilmelidir.
🔤 3. String Türü
#
Tür |
Açıklama |
Varsayılan Değer |
Notlar |
string |
Dinamik boyutlu karakter dizisi |
Boş string "" |
.len() , karşılaştırma, birleştirme yapılabilir |
string mesaj = "Merhaba!";
$display("Uzunluk: %0d", mesaj.len());
🔘 4. Sıralı Türler (Enumerations - enum
)
#
Özellik |
Açıklama |
Söz Dizimi |
typedef enum {KIRMIZI, YESIL, MAVI} renk_t; |
Alt Tür Belirleme |
enum logic [1:0] gibi tanımlanabilir |
Varsayılan Değer |
İlk listelenen değer (belirtilmediyse) |
İşaretlilik |
Alt tür neyse onu takip eder (signed/unsigned) |
📦 5. Yapılar (Structures - struct
)
#
Özellik |
Açıklama |
Söz Dizimi |
typedef struct { ... } isim_t; |
Packed Kullanımı |
packed ile bit düzeyinde yerleşim sağlanabilir |
Varsayılan Değer |
Her alan kendi türüne göre sıfırdan başlar |
İç İçe Kullanım |
Başka struct veya türler içerebilir |
typedef struct packed {
bit [7:0] id;
logic valid;
} header_t;
🔄 6. Birleşimler (Unions - union
)
#
Özellik |
Açıklama |
Bellek Paylaşımı |
Tüm alanlar aynı fiziksel belleği paylaşır |
Packed Kullanımı |
packed ile bit yerleşimi kontrol edilebilir |
Tagged Union |
union tagged ile güvenli kullanım mümkündür |
📚 7. Diziler (Arrays)
#
Dizi Türü |
Açıklama |
Packed Array |
Bit vektörleri (logic [7:0] ) |
Unpacked Array |
Bireysel elemanlardan oluşur (a[0] , a[1] , …) |
Dynamic Array |
Simülasyon sırasında boyutu değiştirilebilir |
Associative Array |
Herhangi bir skaler ile indekslenebilir (a["abc"] ) |
Queue |
FIFO benzeri yapı (queue[$] ) |
📗 8. Diğer Özel Türler
#
Tür |
Açıklama |
void |
Fonksiyon geri dönüşü yok |
event |
Simülasyon senkronizasyonu |
chandle |
C dili işaretçisi (pointer) |
mailbox |
İşlemler arası iletişim |
semaphore |
Kaynak paylaşımı kontrolü |
✅ Özet Tablo (Kısa Referans)
#
Tür Grubu |
Örnekler |
Varsayılan Boyut |
Varsayılan İşaretlilik |
Notlar |
2 durumlu |
bit , int , byte , longint |
Sabit genişlik |
Genelde işaretli |
X/Z yok, simülasyonda hızlı |
4 durumlu |
logic , reg , integer |
Değişken |
logic : unsigned, integer : signed |
X ve Z desteklenir |
Metinsel |
string |
Dinamik |
Yok |
Yöntemler, birleştirme vb. |
Bileşik |
struct , union , array |
Kullanıcı tanımlı |
Alanlara göre |
Gruplama ve organizasyon sağlar |
Sıralı (enum) |
enum |
Kullanıcı tanımlı |
Alt tipe bağlı |
Anlamlı sabitler tanımlar |
Özel |
time , event , chandle , mailbox |
Değişken |
Değişken |
Simülasyon ve IPC kullanımı |