🧩 UVM Temel Sınıfları#
🚀 Giriş#
UVM kütüphanesi, tüm UVM bileşenlerinin temelini oluşturan temel sınıflar hiyerarşisine dayanır. Bu sınıflar, UVM’nin güçlü ve esnek olmasını sağlayan temel özellikleri sunar.
🏗️ UVM Sınıf Hiyerarşisi#
Bu bölümde, UVM’nin sınıf hiyerarşisi sunulmaktadır. Temel sınıflar ve hangi sınıfların hangi sınıflardan türediği açıkça gösterilmiştir.
uvm_void
└── uvm_object
├── uvm_transaction
├── uvm_sequence_item
├── uvm_sequence_base
└── uvm_component
├── uvm_test
├── uvm_env
├── uvm_agent
├── uvm_driver
├── uvm_monitor
└── uvm_sequencer
🪝 uvm_void#
Bu sınıf, UVM sınıf ağacının en üstünde yer alır ve veri üyesi veya fonksiyonu bulunmayan soyut bir sınıftır.
✨ Temel Özellikler#
virtual class uvm_void;
// 🔹 Tüm UVM sınıflarının temel soyut sınıfıdır.
// 🔹 Varsayılan olarak herhangi bir üye veya metod içermez.
endclass
📦 uvm_object#
uvm_object
, tüm UVM nesneleri için temel sınıftır. Kopyalama, karşılaştırma ve yazdırma gibi temel nesne işlemlerini içerir.
✨ Temel Özellikler#
virtual class uvm_object extends uvm_void;
// 🔹 Yapıcı (constructor): İsteğe bağlı bir isimle yeni bir nesne oluşturur
extern function new(string name = "");
// 🔹 Nesnenin yerel ismini döndürür
extern virtual function string get_name();
// 🔹 Nesnenin tam hiyerarşik ismini döndürür
extern virtual function string get_full_name();
// 🔹 Nesnenin tür sarmalayıcısını döndürür (not: static)
extern static function uvm_object_wrapper get_type();
// 🔹 Fabrika kullanarak dinamik olarak yeni bir nesne oluşturur
virtual function uvm_object create(string name="");
return null;
endfunction
// 🔹 Nesnenin bir kopyasını (deep copy) oluşturur
extern virtual function uvm_object clone();
// 🔹 Aynı tipte başka bir nesneden değerleri kopyalar
extern function void copy(uvm_object rhs);
// 🔹 Bu nesneyi başka bir nesne ile karşılaştırır
extern function bit compare(uvm_object rhs, uvm_comparer comparer=null);
// 🔹 Nesnenin içeriğini yazdırır
extern function void print(uvm_printer printer=null);
// 🔹 Nesneyi string temsiline çevirir
extern virtual function string convert2string();
endclass
🗂️ uvm_root#
uvm_root
, tüm UVM testbench’inin global yöneticisidir. Singleton pattern kullanarak test başlatmayı ve faz yönetimini sağlar.
✨ Temel Özellikler#
class uvm_root extends uvm_component;
// 🔹 Singleton instance'ı döner
static function uvm_root get();
// 🔹 Belirtilen testi başlatır ve fazları yönetir
virtual task run_test (string test_name="");
...
endclass
🏗️ uvm_component#
uvm_component
, tüm testbench bileşenlerinin temelini oluşturur. Build, connect ve run gibi faz metodlarını içerir.
✨ Temel Özellikler#
virtual class uvm_component extends uvm_report_object;
// 🔹 Yapıcı metod: Bileşeni adı ve parent ile oluşturur
function new (string name, uvm_component parent);
// 🔹 Simülasyonun ana çalışma fazı
virtual task run_phase(uvm_phase phase);
// 🔹 Alt bileşenleri oluşturma ve konfigürasyon yapma fazı
virtual function void build_phase(uvm_phase phase);
// 🔹 Port ve interface bağlantılarını yapma fazı
virtual function void connect_phase(uvm_phase phase);
...
endclass
📝 Özet#
UVM temel sınıfları şunları sağlar:
- Hiyerarşik yapı (modüler ve tekrar kullanılabilir tasarımlar)
- Kod tekrar kullanımı (copy, compare, print gibi metodlar)
- Standartlaşma (tutarlı API ve isimlendirme)
- Faz yönetimi (build, connect, run vb. fazlar)
- Factory ve tip override desteği (dinamik nesne yaratımı)
- Konfigürasyon yönetimi (tüm hierarchy’de ortak ayar paylaşımı)