Yeni bir konfigürasyon sistemi aracılığıyla UVM'yi daha hızlı hale getirme - Semiwiki

Yeni bir konfigürasyon sistemi aracılığıyla UVM'yi daha hızlı hale getirmek – Semiwiki

Kaynak Düğüm: 3036575

Evrensel Doğrulama Metodolojisi (UVM), SystemVerilog tasarımlarını doğrulamaya yardımcı olan popüler bir yoldur ve şunları içerir: konfigürasyon sistemi maalesef bazı hız ve kullanım sorunları var. Siemens EDA'dan Rich Edelman, bu sorunların nasıl önlenebileceği konusunda 20 sayfalık ayrıntılı bir makale yazdı. Ben de sizin için önemli noktaları özetlemek amacıyla bu makaleyi inceledim. Doğrulama mühendisleri, değerleri ayarlamak ve daha sonra UVM testlerinde değerleri almak için bir UVM konfigürasyon veritabanını kullanır. 'T' değerini ayarlamanın ve almanın bir örneği:

uvm_config#(T)::set(kapsam, örnek_yol_adı, alan_adı, değer); uvm_config#(T)::get(kapsam, örnek_yol_adı, alan_adı, değer);

UVM test ortamının test altındaki cihaza bağlanması, sanal arayüzleri geçirmek için konfigürasyon veritabanını kullanır. UVM yapılandırmasını kullanmanın üç sorunu vardır:

  • Büyük kod, yaklaşık 2,600 satırlık kod
  • Tam tür eşleşmesi gerektirdiğinden 'int' ve 'bit' aynı değildir
  • Yavaş kod

Yavaş kod durumunu düşünün, çünkü set()'e yapılan binlerce çağrıda joker karakterlerin kullanıldığı adların 'set' ve 'get' aşamasını tamamlaması 30 dakikaya kadar sürebilir.

Geçen Süre dk.

Rich, UVM konfigürasyonlarına kıyasla çok daha yüksek hızlara sahip, yalnızca birkaç saniye süren yeni bir çözüm öneriyor.

yeni çözüm dk.

UVM kodunuz joker karakter kullanmaktan kaçınıyorsa ve az sayıda 'set' komutu içeriyorsa, kodunuz daha hızlı çalışacaktır.

UVM yapılandırma sorunlarına olası çözümler şunlardır:

  • Bunun yerine global bir değişken kullanın
  • Bir set() ile UVM yapılandırmasını kullanın
  • Birkaç set() ile UVM yapılandırmasını kullanın
  • Yapılandırma ağacı kullanma
  • Farklı bir şeyler dene

Farklı bir şey denemeye yönelik bu son yaklaşım, yeni çözümdür ve set() ve get() API'sini kullanmaya devam eder, ardından konfigürasyonların parametrelendirmesini kaldırarak basitleştirir, önceliği kaldırır ve arama algoritması değişikliğini ortadan kaldırır. Bu yeni yaklaşımın sonuçları yüksek hızlardır.

Yeni konfigürasyon öğeniz, 'config_item'den türetilmiş sınıfta tanımlanır ve aşağıdaki örnek, ayarlanmakta olan özellik olarak 'int value'yu gösterir. Hata ayıklama amacıyla güzel yazdırma işlevini eklersiniz.

my_special_config_item sınıfı config_item'i genişletir; function new(string name = "my_special_config_item"); süper.yeni(isim); son işlev int değeri; sanal işlev dizesi Convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); son işlev son sınıfı

'config_item'in bir ad özelliği vardır ve bu ad artı örnek adı aranır. Yapılandırma nesnesi ayrıca adı döndürmek için bir get_name() işlevine sahiptir. Herhangi bir "örnek_adı.alan_adı" bulmak için yapılandırma veritabanı, hızlı arama ve oluşturma hızları sağlayan ilişkisel bir dizi kullanır.
İzlenebilirlik açısından get'i kimin ayarladığını veya kimin çağırdığını öğrenebilirsiniz, çünkü dosya adı ve satır numarası set() ve get() işlev çağrılarındaki alanlardır.

set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)

Erişimci kuyruğu, set() ve get()'ı kimin çağırdığını görmek için hata ayıklama sırasında yazdırılabilir.

Joker karakterleri desteklemek için kapları kullanan bir arama mekanizması eklenmesi gerekiyordu. 'Top.abcd*_0' örnek adını düşünün.

konteyner ağacı min
Konteyner Ağacı

Örnek adının joker karakter kısmı, ilişkisel dizi yerine kap ağacı kullanılarak işlenir.

Özet

Bir UVM test ortamında modül/örnek ile sınıf tabanlı dünya arasında veri paylaşımı, UVM yapılandırma veritabanı kullanılarak yapılabilir; yalnızca hız yavaşlamalarına dikkat edin. Metodolojiniz çok sayıda konfigürasyon kullanıyorsa, UVM konfigürasyon veritabanı dosyasındaki 300 satırlık kod yerine yaklaşık 2,600 satırlık kod kullanan bir pakete sahip olan yeni yaklaşımı kullanmayı düşünün.

20 sayfalık makalenin tamamını okuyun, Yapılandırma Çılgınlığını Önlemenin Kolay Yolu Siemens EDA'da.

İlgili Bloglar

Bu gönderiyi şu yolla paylaş:

Zaman Damgası:

Den fazla yarı wiki