📊 UVM Scoreboard Kullanımı ve Toplayıcı (Adder) Örneği#
🚀 Giriş#
UVM’de scoreboard, testbench’in bir bileşenidir ve DUT’un (Test Edilen Tasarım) ürettiği gerçek sonuçları beklenen sonuçlarla karşılaştırmak için kullanılır. Monitor’dan veri alır ve bu verileri bir altın model veya basit aritmetik kurallarla kontrol ederek DUT’un davranışını doğrular. Scoreboard, testin geçip geçmediğini rapor ederek test sürecine dair geri bildirim sağlar.
📝 Toplayıcı Scoreboard Örneği#
Aşağıda basit bir adder_scoreboard örneği verilmiştir. Bu scoreboard, toplama işlemlerini adder_transaction
kullanarak doğrular.
class adder_scoreboard extends uvm_component;
uvm_analysis_imp #(adder_transaction, adder_scoreboard) analysis_export;
int total_transactions;
int correct_transactions;
`uvm_component_utils(adder_scoreboard)
function new(string name = "adder_scoreboard", uvm_component parent);
super.new(name, parent);
analysis_export = new("analysis_export", this);
endfunction
function void write(adder_transaction t);
int expected_result = t.num1 + t.num2;
t.is_correct = (t.result == expected_result);
`uvm_info("SCOREBOARD", $sformatf("Kontrol edildi: num1=0x%0d, num2=0x%0d, DUT sonucu=0x%0d, Beklenen=0x%0d, %s",
t.num1, t.num2, t.result, expected_result, t.is_correct ? "GEÇTİ" : "KALDI"), UVM_MEDIUM)
total_transactions++;
if (t.is_correct) correct_transactions++;
endfunction
function void report_phase(uvm_phase phase);
`uvm_info("SCOREBOARD_REPORT", $sformatf("Toplam İşlem: %0d, Doğru İşlem: %0d, Başarı Oranı: %0.2f%%",
total_transactions, correct_transactions, (correct_transactions * 100.0) / total_transactions), UVM_NONE)
endfunction
endclass
🔍 Açıklamalar#
- uvm_analysis_imp: Monitor’dan gelen
adder_transaction
verilerini almak için kullanılır. - adder_transaction: Alınan verileri kontrol etmek için saklar.
- total_transactions: İşlem sayacı (coverage veya loglama için isteğe bağlı olarak kullanılabilir).
- report_phase(): Toplama işleminin doğruluğunu kontrol eder ve sonucu raporlar.
💡 Özet#
🔹 Scoreboard, DUT’un gerçek davranışını beklenen davranışla karşılaştırmak için kullanılır. 🔹 Bu toplayıcı örneğinde, toplama sonucunun doğru olup olmadığı kontrol edilir. 🔹 Basit hata ve bilgi mesajları test sonuçlarını raporlar. 🔹 Bu yapı, testbench’in verimliliğini ve güvenilirliğini artırır.