Hitrejša izdelava UVM z novim konfiguracijskim sistemom - Semiwiki

Hitrejši UVM z novim konfiguracijskim sistemom – Semiwiki

Izvorno vozlišče: 3036575

Univerzalna metodologija preverjanja (UVM) je priljubljen način za pomoč pri preverjanju zasnov SystemVerilog in vključuje konfiguracijski sistem ki ima na žalost nekaj težav s hitrostjo in uporabo. Rich Edelman iz Siemens EDA je napisal podroben dokument na 20 straneh na temo, kako se izogniti tem težavam, jaz pa sem ga pregledal, da bi za vas povzel poudarke. Inženirji za preverjanje uporabljajo konfiguracijsko zbirko podatkov UVM za nastavitev vrednosti, nato pa za pridobitev vrednosti pozneje v svojem preizkusu UVM. En primer nastavitve in pridobivanja vrednosti 'T' je:

uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);

Pri povezovanju preskusne naprave UVM z napravo, ki se preskuša, se uporabi konfiguracijska baza podatkov za posredovanje virtualnih vmesnikov. Pri uporabi konfiguracije UVM obstajajo tri težave:

  • Velika koda, približno 2,600 vrstic kode
  • Zahteva natančno ujemanje tipa, zato 'int' in 'bit' nista enaka
  • Počasna koda

Razmislite o primeru počasne kode, saj lahko s tisoči klicev set() z uporabo imen z nadomestnimi znaki traja do 30 minut, da dokončate fazo 'set' in 'get'.

Pretečeni čas min

Rich predlaga novo rešitev za konfiguracije UVM, ki ima veliko višje hitrosti, v primerjavi z le nekaj sekundami.

nova rešitev min

Če se vaša koda UVM izogiba uporabi nadomestnih znakov in ima malo ukazov 'set', bo vaša koda delovala hitreje.

Možne rešitve za težave s konfiguracijo UVM so:

  • Namesto tega uporabite globalno spremenljivko
  • Uporabi konfiguracijo UVM z enim nizom()
  • Uporabite konfiguracijo UVM z nekaj set()
  • Uporabite konfiguracijsko drevo
  • Poskusite nekaj drugega

Ta zadnji pristop poskusa nečesa drugačnega je nova rešitev, ki še naprej uporablja API set() in get(), nato pa poenostavi z odstranitvijo parametrizacije konfiguracij, odstrani prednost in odstrani spremembo algoritma iskanja. Rezultat tega novega pristopa so visoke hitrosti.

Vaš novi konfiguracijski element je definiran v izpeljanem razredu iz 'config_item', spodnji primer pa prikazuje 'int value' kot lastnost, ki se nastavlja. Za namene odpravljanja napak dodate funkcijo lepega tiskanja.

razred my_special_config_item razširja config_item; funkcija nova (ime niza = "my_special_config_item"); super.novo(ime); končna funkcija int vrednost; virtualni funkcijski niz convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); končna funkcija končni razred

'config_item' ima atribut imena in to ime se poišče skupaj z imenom primerka. Konfiguracijski objekt ima tudi funkcijo get_name() za vrnitev imena. Za iskanje katerega koli »instance_name.field_name« konfiguracijska zbirka podatkov uporablja asociativno polje za hitro iskanje in hitrost ustvarjanja.
Za sledljivost lahko ugotovite, kdo je nastavil ali kdo je poklical get, ker sta ime datoteke in številka vrstice polji v klicih funkcij set() in get().

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

Čakalno vrsto dostopnika je mogoče natisniti med odpravljanjem napak, da vidite, kdo je poklical set() in get().

Za podporo nadomestnih znakov je treba dodati mehanizem iskanja z vsebniki. Razmislite o imenu primerka 'top.abcd*_0'.

kontejnersko drevo min
Drevo zabojnika

Del imena primerka z nadomestnimi znaki se obravnava z uporabo vsebniškega drevesa namesto z asociativnim poljem.

Povzetek

Skupna raba podatkov med modulom/primerkom in svetom, ki temelji na razredu, v preizkusni napravi UVM se lahko izvede z uporabo podatkovne baze konfiguracije UVM, le bodite pozorni na upočasnitve hitrosti. Če vaša metodologija uporablja veliko konfiguracij, potem razmislite o uporabi uvedenega novega pristopa, ki ima paket, ki uporablja približno 300 vrstic kode namesto 2,600 vrstic kode v konfiguracijski datoteki zbirke podatkov UVM.

Preberite celoten dokument na 20 straneh, Izogibanje konfiguracijski norosti na enostaven način pri Siemens EDA.

Sorodni dnevniki

Delite to objavo prek:

Časovni žig:

Več od Semiwiki