🖨️ uvm_object::print()
, sprint()
, sformat()
, sformatf()
ve convert2string()
Metodlarının Anlaşılması#
Bu bölümde, uvm_object
‘in print, sprint, sformat, sformatf ve convert2string metodlarını inceliyoruz. Bu metodlar, UVM testbench’lerinde nesne içeriklerini debug etmek ve görüntülemek için oldukça önemlidir.
1️⃣ print()
Nedir?#
✅ print()
metodu, bir nesnenin içeriğini simülatör konsoluna veya transcript penceresine yazdırır.
- UVM printer kullanarak insan tarafından okunabilir bir çıktı üretir.
- Nesnenin tüm kayıtlı alanlarını gösterir.
Örnek:
txn.print();
2️⃣ sprint()
Nedir?#
✅ sprint()
metodu, çıktıyı doğrudan yazdırmak yerine string olarak döner.
- Nesne verilerini log dosyalarına veya UVM raporlarına eklemek için kullanışlıdır.
Örnek:
string txt;
txt = txn.sprint();
`uvm_info("TXN_DATA", txt, UVM_LOW)
3️⃣ sformat()
Nedir?#
✅ sformat()
metodu, nesne içeriğini tek satırlık bir özet şeklinde biçimlendirir ve string olarak döner.
- Loglar için hızlı ve öz bir görünüm sağlar.
Örnek:
string summary;
summary = txn.sformat();
`uvm_info("TXN_SUMMARY", summary, UVM_LOW)
4️⃣ sformatf()
Nedir?#
✅ sformatf()
metodu, gömülü değişkenlerle string biçimlendirmek için kullanılan bir SystemVerilog yerleşik fonksiyonudur. C’deki printf()
fonksiyonuna benzer.
- Genellikle
convert2string()
metodu içinde özel özetler oluşturmak için kullanılır.
Örnek:
function string convert2string();
return $sformatf("op_a=%0h, op_b=%0h, opcode=%0h", op_a, op_b, opcode);
endfunction
Kullanım:
string summary;
summary = txn.convert2string();
`uvm_info("TXN_STRING", summary, UVM_LOW)
5️⃣ convert2string()
Nedir?#
✅ convert2string()
metodu, nesnenin kullanıcı tarafından tanımlanabilen bir string temsiliğini üretir.
- Varsayılan olarak
sformat()
sonucunu döner. - Özelleştirerek nesne özetlerini istediğiniz gibi şekillendirebilirsiniz.
Örnek:
function string convert2string();
return $sformatf("op_a=%0h, op_b=%0h, opcode=%0h", op_a, op_b, opcode);
endfunction
Kullanım:
string summary;
summary = txn.convert2string();
`uvm_info("TXN_STRING", summary, UVM_LOW)
6️⃣ Avantajları#
✅ Bu metodlar:
- Nesne içeriklerini hızlı ve tutarlı bir şekilde kontrol etmenizi sağlar.
- Manuel
$display
yazımlarına olan ihtiyacı azaltır. - UVM raporlama altyapısı ile entegre çalışır.
- Debug, randomizasyon ve DUT ile etkileşimleri kolaylaştırır.
📖 Sonuç#
print()
, sprint()
, sformat()
, sformatf()
ve convert2string()
metodları, uvm_object
‘in doğrulama ortamınızı debug etmek ve bakımını yapmak için güçlü araçlardır.