Ana içeriğe geç

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

· loading · loading · ·
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Uvm_driver Stimulus Sürme
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 14: This Article

🚗 UVM Sürücü Kullanımı ve Toplayıcı (Adder) Örneği (Güncel)
#

🚀 Giriş
#

uvm_driver, bir UVM testbench’inde sequencer ile DUT (Test Edilen Tasarım) arasındaki köprü görevi gören temel bileşendir. Sürücü, sequencer‘dan sequence item’ları alır ve bunları virtual interface kullanarak DUT’un girişlerine uygular.


🗂️ uvm_driver Nedir?
#

  • uvm_driver, get_next_item() kullanarak sequencer’dan transaction (işlem) çeker.
  • Transaction verilerini DUT girişlerine uygular.
  • Transaction tamamlandığında sequencer’a item_done() ile bildirim yapar.
  • DUT ile bağlantı kurmak için virtual interface kullanır.
  • Simülasyon sırasında önemli mesajlar kaydeder.

📝 Güncel Toplayıcı Sürücü Örneği
#

Aşağıda güncellenmiş bir adder_driver örneği bulunuyor. Bu sürücü, adder_transaction sequence item’larını sequencer’dan alır ve DUT’a virtual interface üzerinden uygular.

class adder_driver extends uvm_driver #(adder_transaction);
  virtual adder_if vif;
  adder_config cfg;

  `uvm_component_utils(adder_driver)

  function new(string name = "adder_driver", uvm_component parent);
    super.new(name, parent);
  endfunction

  virtual function void build_phase(uvm_phase phase);
    super.build_phase(phase);
    if (!uvm_config_db #(virtual adder_if)::get(this, "", "vif", vif))
      `uvm_fatal("DRIVER", "No virtual interface specified!");
    if (!uvm_config_db #(adder_config)::get(this, "", "cfg", cfg))
      `uvm_fatal("DRIVER", "No config specified!");
  endfunction

  virtual task run_phase(uvm_phase phase);
    adder_transaction tr;
    forever begin
      seq_item_port.get_next_item(tr);

      // Delay (use config)
      repeat(cfg.delay_min + $urandom_range(0, cfg.delay_max - cfg.delay_min)) // konfigüraston sınıfı tarafından tanımlanan delay kadar bekle
        @(posedge vif.clk);

      @(posedge vif.clk);
      vif.num1 <= tr.num1;
      vif.num2 <= tr.num2;

      @(posedge vif.clk);
      tr.result <= vif.out;

      tr.print();
      seq_item_port.item_done();
    end
  endtask
endclass

🔍 Temel Noktalar
#

  • Virtual Interface (vif): Sürücüyü DUT’un clock ve veri portlarına bağlar.

  • build_phase(): uvm_config_db kullanarak virtual interface’i alır ve bağlar.

  • run_phase():

    • seq_item_port.get_next_item() ile transaction alır.
    • Girişleri (num1, num2) DUT’a uygular.
    • Bir clock döngüsü bekler ve DUT sonucunu okur (vif.out).
    • Transaction objesini günceller.
    • item_done() ile transaction’ın tamamlandığını bildirir.

💡 Özet
#

🔹 uvm_driver, sequencer’dan gelen stimulus’u DUT’a uygular. 🔹 Bu toplayıcı örneğinde operand değerleri DUT’a gönderilir ve sonuç okunur. 🔹 Virtual interface sayesinde sinyallere kolay erişim sağlanır. 🔹 Sürücü, UVM testbench’inde kritik bir bileşendir ve stimulus teslimini ve sonuç toplamasını düzenler.


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

Related

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
UVM'de Package Kullanımı ve Önemi
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Package Kullanımı Testbench Organizasyonu
Eğitim UVM Doğrulama
UVM'de Virtual Sequence, Virtual Sequencer, Sequence Library ve Sequence Arbitration
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Virtual Sequence Sequence Arbitration
Eğitim UVM Doğrulama
UVM'de _decl Makrosu Kullanımı
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog _Decl Makrosu Analysis Port
Eğitim UVM Doğrulama
UVM'de do_ Metodları
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Do_ Metodları
Eğitim UVM Doğrulama