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.
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.
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.
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:
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- PlatoData.Network Vertical Generative Ai. Erősítse meg magát. Hozzáférés itt.
- PlatoAiStream. Web3 Intelligence. Felerősített tudás. Hozzáférés itt.
- PlatoESG. Carbon, CleanTech, Energia, Környezet, Nap, Hulladékgazdálkodás. Hozzáférés itt.
- PlatoHealth. Biotechnológiai és klinikai vizsgálatok intelligencia. Hozzáférés itt.
- Forrás: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :van
- :is
- :nem
- $ UP
- 30
- 300
- 600
- a
- Rólunk
- hozzá
- hozzáadásával
- algoritmus
- Is
- an
- és a
- bármilyen
- api
- megközelítés
- VANNAK
- Sor
- AS
- At
- elkerülése érdekében
- tudatában van
- b
- BE
- mert
- hogy
- lent
- között
- by
- hívott
- kéri
- TUD
- eset
- változik
- osztály
- kód
- összehasonlítás
- teljes
- Configuration
- Fontolja
- Konténer
- Konténerek
- tovább
- teremtés
- dátum
- adatbázis
- meghatározott
- Származtatott
- tervek
- részletes
- eszköz
- különböző
- csinált
- alatt
- könnyű
- Mérnökök
- Eter (ETH)
- példa
- nyúlik
- GYORS
- gyorsabb
- kevés
- Fields
- filé
- Találjon
- A
- ból ből
- Tele
- funkció
- kap
- szerzés
- Globális
- elmúlt
- segít
- kiemeli
- Hogyan
- How To
- HTTPS
- if
- in
- magában foglalja a
- példa
- helyette
- interfészek
- Bevezetett
- kérdések
- IT
- jpg
- éppen
- keresztnév
- a későbbiekben
- vonal
- vonalak
- nézett
- lookup
- sok
- Gyártás
- egyező
- max-width
- mechanizmus
- Módszertan
- perc
- jegyzőkönyv
- sok
- név
- nevek
- Új
- új megoldás
- szám
- tárgy
- of
- on
- ONE
- csak
- or
- ki
- csomag
- Papír
- rész
- elhalad
- fázis
- Plató
- Platón adatintelligencia
- PlatoData
- plusz
- Népszerű
- állás
- elsőbbség
- problémák
- ingatlan
- javasolja
- célokra
- elmozdít
- eltávolítása
- kötelező
- Eredmények
- visszatérés
- Gazdag
- futás
- hatálya
- másodperc
- lát
- készlet
- beállítás
- Műsorok
- Siemens
- egyszerűsíti
- lassú
- lassítások
- So
- megoldások
- Megoldások
- néhány
- valami
- sebesség
- sebesség
- Húr
- összegez
- szuper
- támogatás
- rendszer
- T
- Vesz
- bevétel
- teszt
- hogy
- A
- azok
- akkor
- Ott.
- Ezek
- ezt
- ezer
- három
- Keresztül
- idő
- nak nek
- felső
- téma
- Nyomon követhetőség
- fa
- próbál
- típus
- alatt
- sajnálatos módon
- Egyetemes
- Használat
- használ
- használ
- segítségével
- érték
- Értékek
- változó
- Igazolás
- ellenőrzése
- keresztül
- Tényleges
- Út..
- ami
- WHO
- lesz
- val vel
- világ
- írt
- te
- A te
- zephyrnet