🔍 Giriş#
Universal Verification Methodology (UVM) testbenchi çalıştırma süreci, iyi tanımlanmış fazlar (phases) şeklinde organize edilir. Her faz, testbench yaşam döngüsünün belirli bir kısmını temsil eder; ilk inşa aşamasından simülasyon ve temizlik aşamasına kadar. Bu fazları anlamak, modüler ve yeniden kullanılabilir doğrulama ortamları yazabilmek için kritik öneme sahiptir.
🚦 UVM Phase Genel Bakış#
🚀 Phase Çalışma Sırası#
UVM fazları belirli bir sırayla çalıştırılır ve framework bu sıralamayı garanti eder. Bu, inşa işlemlerinin build phase’de yapılması, bağlantıların connect phase’de yapılması ve test stimulus’unun run phase’de verilmesi gerektiği anlamına gelir.
💡 İpucu: UVM’de faz metodlarını override ederek ihtiyaçlarına göre özelleştirebilirsin:
function void build_phase(uvm_phase phase); function void connect_phase(uvm_phase phase); task run_phase(uvm_phase phase);
Bu yöntemler her faz için farklı görevler tanımlamanı sağlar.
🧩 Phase Atlamaları ve Faz Kontrolü#
- UVM, faz atlamalarına (ör. bazı fazların atlanması veya sonradan atlanarak bir faza geçilmesi) destek verir.
uvm_phase
objesi kullanılarak faz durumu sorgulanabilir ve faz yürütmesi kontrol edilebilir (ör.phase.raise_objection(this);
).
📌 Sonuç#
UVM Phase’ları; testbench’i oluşturmak, bağlamak ve simüle etmek için yapılandırılmış bir yol sunar ve her aşamaya net bir görev kazandırır. Bu fazları iyi kavramak, etkili bir UVM testbench geliştirmek için gereklidir.
📚 Kaynaklar#
- UVM Class Reference Manual (Accellera)
- IEEE 1800.2 Standardı (UVM)