Ana içeriğe geç

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
Axolot Logic
Yazar
Axolot Logic
Sayısal Tasarım Mühendisi
Table of Contents
UVM Serisi - This article is part of a series.
Part 12: This Article

🎯 UVM Sequence Kullanımı ve Adder Örneği
#

🚀 Giriş
#

uvm_sequence, UVM doğrulama ortamlarında stimulus (test verisi) üretmek için kullanılan en temel sınıflardan biridir. Testbench’in sequencer ve driver bileşenleriyle birlikte çalışarak transaction’ları oluşturur ve gönderir.

UVM testbenchi genellikle bir sequence, sequencer ve driver üçgeni üzerine kuruludur. Bu yapı, test senaryolarının modüler, tekrarlanabilir ve esnek bir şekilde geliştirilmesine olanak sağlar.


🗂️ uvm_sequence Nedir?
#

uvm_sequence, uvm_sequence_item sınıfından türetilen transaction’ları üretir ve bunları sequencer üzerinden driver‘a gönderir.
Bu yapı; test senaryolarının, veri akışlarının ve test stimulus’larının organize edilmesinde büyük kolaylık sağlar.

Temel Özellikler
#

uvm_sequence_item nesnelerini randomize ederek stimulus üretir
body() metodu ile ana test akışını tanımlar
pre_body() ve post_body() metodları ile kullanıcı özelleştirmesi yapılabilir
✅ Sequencer ve driver ile uyumlu çalışır


📝 Adder Sequence Örneği
#

Aşağıda, basit bir adder_base_seq örneği verilmiştir. Bu örnek, adder_packet nesnelerini rastgele üreterek bir adder tasarımını test etmeyi hedefler.

  class adder_sequence extends uvm_sequence #(adder_transaction);
    int num_transactions = 20;

    `uvm_object_utils(adder_sequence)

    function new(string name = "adder_sequence");
      super.new(name);
    endfunction

    virtual task body();
      adder_transaction tr;
      repeat(num_transactions) begin
        tr = adder_transaction::type_id::create("tr");
        `uvm_do(tr);
      end
    endtask

/*
  task pre_body();
    `uvm_info(get_type_name(), "Pre Body", UVM_MEDIUM) // Print info message
  endtask : pre_body

  task post_body();
    `uvm_info(get_type_name(), "Post Body", UVM_MEDIUM) // Print info message
  endtask : post_body
*/
  endclass

🔍 Açıklamalar
#

  • pre_body(): Sequence başlamadan önce bilgi mesajı basar.
  • body(): Sequence’in ana çalışma kısmıdır. repeat (5) ile 5 adet rastgele adder_packet üretilir ve sequencer-driver yapısına gönderilir.
  • post_body(): Sequence tamamlandıktan sonra bilgi mesajı basar.

Elbette! İşte kısa ve net bir açıklama:


🔹 uvm_do makrosu, UVM’de bir sequence item veya sequence nesnesi yaratıp randomize() edip bir sequencer üzerinden driver’a gönderilmesini sağlayan kullanışlı bir kısayol makrosudur.

✅ Görevleri:

  • create() ile nesneyi oluşturur.
  • randomize() ile nesneyi rastgeleleştirir (randomization).
  • start_item() ve finish_item() çağrıları ile item’ı sequencer’a gönderir.

💡 Özet
#

🔹 uvm_sequence, UVM’in stimulus üretim mekanizmasının temelini oluşturur.
🔹 Test senaryolarını modüler ve tekrarlanabilir hale getirir.
🔹 Adder örneği, adder_packet sequence item’ları üreterek basit bir toplama test ortamı kurulmasını sağlar.
🔹 pre_body() ve post_body() metodları kullanıcıya ek bilgi ve özelleştirme imkanı sunar.


UVM Serisi - This article is part of a series.
Part 12: 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_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
UVM'de uvm_sequence_item ve Veri Modelleme
· loading · loading
Eğitim UVM Doğrulama UVM Doğrulama SystemVerilog Veri Modelleme Uvm_sequence_item
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