Az UVM gyorsabbá tétele egy új konfigurációs rendszerrel - Semiwiki

Az UVM gyorsabbá tétele egy új konfigurációs rendszerrel – Semiwiki

Forrás csomópont: 3036575

Az Universal Verification Methodology (UVM) egy népszerű módszer a SystemVerilog-tervek ellenőrzésére, és tartalmaz egy konfigurációs rendszer aminek sajnos vannak sebességi és használati problémái. Rich Edelman, a Siemens EDA-tól részletes, 20 oldalas tanulmányt írt arról, hogyan lehet elkerülni ezeket a problémákat, és végignéztem, hogy összefoglaljam a legfontosabbakat. Az ellenőrző mérnökök egy UVM konfigurációs adatbázist használnak az értékek beállítására, majd az értékek későbbi lekérésére az UVM-teszt során. Egy példa a "T" érték beállítására és megszerzésére:

uvm_config#(T)::set(hatókör, példány_útvonala, mezőnév, érték); uvm_config#(T)::get(hatókör, példány_útvonala, mezőnév, érték);

Az UVM tesztpadnak a tesztelt eszközhöz való csatlakoztatása a konfigurációs adatbázist használja a virtuális interfészek átadására. Három probléma van az UVM-konfiguráció használatával:

  • Nagy kód, körülbelül 2,600 kódsor
  • Pontos típusegyezést igényel, így az „int” és a „bit” nem ugyanaz
  • Lassú kód

Vegyük fontolóra a lassú kód esetét, mert a set() több ezer hívása esetén a nevek helyettesítő karakterekkel történő használata akár 30 percet is igénybe vehet a 'set' és 'get' fázis befejezése.

Eltelt idő min

A Rich új megoldást javasol az UVM-konfigurációkhoz, amelyek sokkal nagyobb sebességgel rendelkeznek, és ehhez képest mindössze néhány másodpercet vesz igénybe.

új megoldás min

Ha az UVM-kód kerüli a helyettesítő karakterek használatát, és kevés "set" parancsot tartalmaz, akkor a kód gyorsabban fog futni.

Az UVM konfigurációs problémák lehetséges megoldásai:

  • Használjon helyette globális változót
  • UVM konfiguráció használata egy set()
  • UVM konfiguráció használata néhány set()
  • Használjon konfigurációs fát
  • Próbálj ki valami mást

Ez az utolsó megközelítés, amikor valami mást próbálunk ki, az új megoldás, és továbbra is a set() és get() API-t használja, majd leegyszerűsíti a konfigurációk paraméterezésének eltávolításával, eltávolítja a prioritást és eltávolítja a keresési algoritmus változását. Ennek az új megközelítésnek az eredménye a gyors sebesség.

Az új konfigurációs elem a „config_item” származtatott osztályban van definiálva, és az alábbi példa az „int value”-t mutatja beállítandó tulajdonságként. Hibakeresés céljából hozzáadja a szép nyomtatás funkciót.

osztály my_special_config_item kiterjeszti config_item; function new(string name = "saját_speciális_konfig_elem"); szuper.új(név); endfunction int érték; virtuális függvény string convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); endfunction endclass

A 'config_item' név attribútummal rendelkezik, és ez a név, valamint a példánynév kikereshető. A konfigurációs objektumnak van egy get_name() függvénye is, amely visszaadja a nevet. Bármely „példány_neve.mezőnév” megtalálásához a konfigurációs adatbázis asszociatív tömböt használ a gyors keresési és létrehozási sebesség érdekében.
A nyomon követhetőség érdekében megtudhatja, hogy ki állította be vagy ki hívta a get, mivel a fájlnév és a sorszám a set() és get() függvényhívások mezői.

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

A hozzáférési sor kinyomtatható a hibakeresés során, hogy megnézze, ki hívta meg a set() és get() függvényeket.

A helyettesítő karakterek támogatásához egy konténereket használó keresési mechanizmust kellett hozzáadni. Tekintsük a „top.abcd*_0” példánynevet.

konténerfa min
Konténer fa

A példánynév helyettesítő karakteres részét a konténerfa kezeli az asszociatív tömb helyett.

Összegzésként

Az adatok megosztása a modul/példány és az osztály-alapú világ között egy UVM-tesztben az UVM konfigurációs adatbázis használatával is elvégezhető, csak ügyeljen a sebesség lassulására. Ha a módszertan sok konfigurációt használ, fontolja meg a bevezetett új megközelítés használatát, amely körülbelül 300 kódsort tartalmaz az UVM konfigurációs adatbázisfájlban található 2,600 kódsor helyett.

Olvassa el a teljes 20 oldalas cikket, A konfigurációs őrület elkerülése egyszerű módon a Siemens EDA-nál.

Kapcsolódó blogok

Oszd meg ezt a bejegyzést ezen keresztül:

Időbélyeg:

Még több Semiwiki