Universal Verification Methodology (UVM) on suosittu tapa vahvistaa SystemVerilog-suunnittelua, ja se sisältää konfigurointijärjestelmä jossa on valitettavasti joitain nopeus- ja käyttöongelmia. Rich Edelman Siemens EDA:sta kirjoitti yksityiskohtaisen 20-sivuisen artikkelin näiden ongelmien välttämisestä, ja olen käynyt sen läpi tehdäkseni sinulle yhteenvedon kohokohdista. Varmennusinsinöörit käyttävät UVM-määritystietokantaa arvojen asettamiseen, minkä jälkeen ne saavat arvot myöhemmin UVM-testissään. Yksi esimerkki arvon "T" asettamisesta ja saamisesta on:
uvm_config#(T)::set(scope, ilmentymän_polun_nimi, kentän_nimi, arvo); uvm_config#(T)::get(scope, ilmentymän_polun_nimi, kentän_nimi, arvo);
UVM-testipenkin yhdistäminen testattavaan laitteeseen käyttää konfigurointitietokantaa virtuaalisten rajapintojen läpivientiin. UVM-kokoonpanon käytössä on kolme ongelmaa:
- Suuri koodi, noin 2,600 koodiriviä
- Vaatii tarkan tyyppivastaavuuden, joten "int" ja "bit" eivät ole sama asia
- Hidas koodi
Harkitse hitaan koodin tapausta, koska tuhansien set()-kutsujen yhteydessä jokerimerkkejä sisältävien nimien käyttäminen voi kestää jopa 30 minuuttia 'set'- ja 'get'-vaiheiden suorittamiseen.
Rich ehdottaa uutta ratkaisua UVM-kokoonpanoihin, joilla on paljon nopeammat nopeudet ja joka vie siihen verrattuna vain muutaman sekunnin.
Jos UVM-koodisi välttää jokerimerkkien käyttöä ja siinä on vähän "set"-komentoja, koodisi toimii nopeammin.
Mahdollisia ratkaisuja UVM-kokoonpanoongelmiin ovat:
- Käytä sen sijaan globaalia muuttujaa
- Käytä UVM-kokoonpanoa yhdellä setillä()
- Käytä UVM-kokoonpanoa muutamalla set()
- Käytä määrityspuuta
- Kokeile jotain erilaista
Viimeinen tapa kokeilla jotain erilaista on uusi ratkaisu, ja se jatkaa set()- ja get()-sovellusliittymän käyttöä, minkä jälkeen se yksinkertaistuu poistamalla konfiguraatioiden parametroinnin, poistaa ensisijaisuuden ja poistaa hakualgoritmin muutoksen. Tämän uuden lähestymistavan tulokset ovat suuret nopeudet.
Uusi määrityskohde on määritetty johdetussa luokassa osoitteesta "config_item", ja alla olevassa esimerkissä "int value" on asetettuna ominaisuutena. Viankorjaustarkoituksiin lisäät Pretty Print -toiminnon.
luokka my_special_config_item laajentaa config_item; funktio new(merkkijonon nimi = "oma_erityinen_määrityksen_kohde"); super.uusi(nimi); lopputoiminto int arvo; virtuaalifunktio merkkijono convert2string(); return $sformatf("%s - arvo=%0d ", get_name(), arvo, super.convert2string()); lopputoiminto loppuluokka
'config_item' sisältää name-attribuutin, ja tämä nimi sekä ilmentymän nimi etsitään. Konfigurointiobjektissa on myös funktio get_name() nimen palauttamiseksi. Löytääkseen minkä tahansa "instanssin_nimi.kentän_nimi" määritystietokanta käyttää assosiatiivista taulukkoa nopeaan haku- ja luontinopeuteen.
Jäljitettävyyden vuoksi voit selvittää, kuka asetti tai kuka kutsui get, koska tiedoston nimi ja rivinumero ovat kenttiä set()- ja get()-funktiokutsuissa.
set(null, "top.a.b.*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.a.b.c.d.monitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
Aksessorin jono voidaan tulostaa virheenkorjauksen aikana nähdäksesi, kuka kutsui set()- ja get()-komentoja.
Jokerimerkkien tukeminen edellytti hakumekanismin lisäämistä säilöillä. Harkitse ilmentymän nimeä "top.a.b.c.d.*_0".
Ilmentymän nimen yleismerkkiosa käsitellään konttipuun avulla assosiatiivisen taulukon sijaan.
Yhteenveto
Tietojen jakaminen moduulin/esiintymän ja luokkapohjaisen maailman välillä UVM-testipenkissä voidaan tehdä UVM-konfigurointitietokannan avulla, huomioi vain nopeuden hidastuminen. Jos menetelmäsi käyttää paljon kokoonpanoja, harkitse käyttöön otettua uutta lähestymistapaa, jossa paketissa on noin 300 koodiriviä UVM-määritystietokantatiedoston 2,600 XNUMX koodirivin sijaan.
Lue koko 20-sivuinen lehti, Vältä konfigurointihulluutta helposti Siemens EDA:ssa.
Liittyvät blogit
Jaa tämä viesti:
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- PlatonHealth. Biotekniikan ja kliinisten kokeiden älykkyys. Pääsy tästä.
- Lähde: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :on
- :On
- :ei
- $ YLÖS
- 30
- 300
- 600
- a
- Meistä
- lisätä
- lisää
- algoritmi
- Myös
- an
- ja
- Kaikki
- api
- lähestymistapa
- OVAT
- Ryhmä
- AS
- At
- välttää
- tietoinen
- b
- BE
- koska
- ovat
- alle
- välillä
- by
- nimeltään
- Puhelut
- CAN
- tapaus
- muuttaa
- luokka
- koodi
- vertailu
- täydellinen
- Konfigurointi
- Harkita
- Kontti
- Kontit
- jatkuu
- luominen
- tiedot
- tietokanta
- määritelty
- johdettu
- mallit
- yksityiskohtainen
- laite
- eri
- tehty
- aikana
- helppo
- Engineers
- Eetteri (ETH)
- esimerkki
- ulottuu
- FAST
- nopeampi
- harvat
- Fields
- filee
- Löytää
- varten
- alkaen
- koko
- toiminto
- saada
- saada
- Global
- poissa
- auttaa
- raidat
- Miten
- Miten
- HTTPS
- if
- in
- sisältää
- esimerkki
- sen sijaan
- rajapinnat
- käyttöön
- kysymykset
- IT
- jpg
- vain
- Sukunimi
- myöhemmin
- linja
- linjat
- Katsoin
- Katso ylös
- erien
- Tekeminen
- matching
- max-width
- mekanismi
- Metodologia
- minuuttia
- pöytäkirja
- paljon
- nimi
- nimet
- Uusi
- uusi ratkaisu
- numero
- objekti
- of
- on
- ONE
- vain
- or
- ulos
- paketti
- Paperi
- osa
- kulkea
- vaihe
- Platon
- Platonin tietotieto
- PlatonData
- plus
- Suosittu
- Kirje
- etusija
- ongelmia
- omaisuus
- ehdottaa
- tarkoituksiin
- Poistaa
- poistamalla
- tarvitaan
- tulokset
- palata
- Rikas
- ajaa
- laajuus
- sekuntia
- nähdä
- setti
- asetus
- Näytä
- Siemens
- yksinkertaistetaan
- hidas
- hidastukset
- So
- ratkaisu
- Ratkaisumme
- jonkin verran
- jotain
- nopeus
- nopeudet
- jono
- yhteenveto
- suuri
- tuki
- järjestelmä
- T
- ottaa
- ottaen
- testi
- että
- -
- heidän
- sitten
- Siellä.
- Nämä
- tätä
- tuhansia
- kolmella
- Kautta
- aika
- että
- ylin
- aihe
- Jäljitettävyys
- puu
- yrittää
- tyyppi
- varten
- valitettavasti
- Yleismaailmallinen
- Käyttö
- käyttää
- käyttötarkoituksiin
- käyttämällä
- arvo
- arvot
- muuttuja
- Vahvistus
- todentaa
- kautta
- Virtual
- Tapa..
- joka
- KUKA
- tulee
- with
- maailman-
- kirjoitti
- te
- Sinun
- zephyrnet