Ana içeriğe geç

UVM'de uvm_scoreboard Kullanımı ve Adder Örneği

· loading · loading · ·
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Uvm_scoreboard Test Sonuçları
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 17: This Article

📊 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.


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

Related

UVM'de uvm_agent Kullanımı ve Adder Örneği
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Uvm_agent Testbench Yapısı
Eğitim UVM Doğrulama
UVM'de uvm_monitor Kullanımı ve Adder Örneği
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Uvm_monitor Coverage
Eğitim UVM Doğrulama
UVM'de uvm_sequence Kullanımı ve Adder Örneği
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Uvm_sequence Stimulus Generation
Eğitim UVM Doğrulama
UVM'de uvm_test Kullanımı ve base_test Örneği
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Uvm_test Test Senaryosu
Eğitim UVM Doğrulama
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
UVM Utility Field Makroları
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Utility Makroları
Eğitim UVM Doğrulama