🛠️ UVM Utility Field Makroları#
🚀 Giriş#
UVM Utility Field Makroları, copy
, compare
, print
ve pack/unpack
gibi temel nesne metodlarını otomatik olarak üreten güçlü araçlardır. Her bir metodu manuel olarak yazmak yerine, sadece field’ları tanımlayarak nesnenizin tüm işlevselliğini zahmetsizce elde edebilirsiniz.
🗂️ Temel Makro Kullanımı#
Tek Örnek Üzerinden Tüm Veri Tipleri#
Aşağıda farklı veri tiplerini (integer, string, dinamik array, kuyruk ve enum) bir arada kullanan kapsamlı bir örnek verilmiştir. Bu örnek, UVM Utility Field Makrolarını tek bir sınıf içinde nasıl etkili kullanabileceğinizi gösterir:
typedef enum {IDLE, ACTIVE, ERROR} state_e;
class all_fields_example extends uvm_object;
// Scalar fields
int timeout;
bit [7:0] data;
// String fields
string name;
string description;
// Dynamic array
bit [15:0] payload[];
// Queue
int values[$];
// Enum
state_e current_state;
`uvm_object_utils_begin(all_fields_example)
// 🔹 Integer alanlar
`uvm_field_int(timeout, UVM_ALL_ON | UVM_DEC)
`uvm_field_int(data, UVM_ALL_ON | UVM_HEX)
// 🔹 String alanlar
`uvm_field_string(name, UVM_ALL_ON)
`uvm_field_string(description, UVM_ALL_ON | UVM_NOCOMPARE)
// 🔹 Dinamik dizi
`uvm_field_array_int(payload, UVM_ALL_ON | UVM_HEX)
// 🔹 Kuyruk
`uvm_field_queue_int(values, UVM_ALL_ON | UVM_DEC)
// 🔹 Enum
`uvm_field_enum(state_e, current_state, UVM_ALL_ON)
`uvm_object_utils_end
function new(string name = "all_fields_example");
super.new(name);
current_state = IDLE;
endfunction
endclass
🏷️ Field Otomasyon Bayrakları#
Öne Çıkan Bayrak Kategorileri#
Bayrak | Açıklama |
---|---|
UVM_ALL_ON | Tüm metodları (copy, compare, print, pack, record) aktif eder |
UVM_COPY | copy() metoduna dahil eder |
UVM_COMPARE | compare() metoduna dahil eder |
UVM_PRINT | print() metoduna dahil eder |
UVM_PACK | pack() ve unpack() metodlarına dahil eder |
UVM_RECORD | record() metoduna dahil eder |
UVM_NOCOPY | copy() metodundan hariç tutar |
UVM_NOCOMPARE | compare() metodundan hariç tutar |
UVM_NOPRINT | print() metodundan hariç tutar |
UVM_HEX | Hex formatında yazdırır |
UVM_BIN | Binary formatında yazdırır |
UVM_NORAND | Randomizasyon dışında bırakır |
🚀 Özet#
Türkçe (Turkish)#
Özellik | Utility Macro | Field Macro |
---|---|---|
Amaç | Sınıfa temel UVM fonksiyonlarını ekler. | Sınıfın içindeki değişkenleri UVM işlemlerine kaydeder. |
Kullanım | uvm_object_utils , uvm_component_utils | uvm_field_int , uvm_field_string |
Fonksiyonlar | print() , copy() , compare() gibi metodları ekler. | Bu metodların içeriğini belirler (hangi alanlar işlenecek?). |
Performans | Daha hızlı (sadece temel fonksiyonları ekler). | Daha yavaş (runtime’da field’ları işler). |
uvm_component_utils
component ve ondan türetilmiş sınıflar için.uvm_object_utils
object ve ondan türetilmiş sınıflar için.
🔹 UVM Field Makrolarının Kullanımı:
✅ Hızlı nesne geliştirme
✅ Tek satırda metod üretimi (copy, compare, print, pack)
✅ Daha az manuel kod
✅ Daha az hata riski