Ana içeriğe geç

UVM Temel Sınıfları

· loading · loading · ·
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Sınıf Hiyerarşisi
Eğitim UVM Doğrulama
Axolot Logic
Yazar
Axolot Logic
Sayısal Tasarım Mühendisi
Table of Contents
UVM Serisi - This article is part of a series.
Part 3: This Article

🧩 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ı)

UVM Serisi - This article is part of a series.
Part 3: This Article

Related

UVM'de uvm_object Sınıfı
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Uvm_object
Eğitim UVM Doğrulama
UVM Utility Field Makroları
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Utility Makroları
Eğitim UVM Doğrulama
UVM'de Konfigürasyon Sınıfları Kullanımı
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Konfigürasyon Sınıfları Randomizasyon
Eğitim UVM Doğrulama
UVM'de Package Kullanımı ve Önemi
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Package Kullanımı Testbench Organizasyonu
Eğitim UVM Doğrulama
UVM'de Virtual Sequence, Virtual Sequencer, Sequence Library ve Sequence Arbitration
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Virtual Sequence Sequence Arbitration
Eğitim UVM Doğrulama
UVM'de _decl Makrosu Kullanımı
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog _Decl Makrosu Analysis Port
Eğitim UVM Doğrulama