Efectuarea UVM-ului mai rapid printr-un nou sistem de configurare - Semiwiki

Efectuarea UVM-ului mai rapid printr-un nou sistem de configurare – Semiwiki

Nodul sursă: 3036575

Metodologia de verificare universală (UVM) este o modalitate populară de a ajuta la verificarea designurilor SystemVerilog și include o sistem de configurare care, din păcate, are unele probleme de viteză și utilizare. Rich Edelman de la Siemens EDA a scris o lucrare detaliată de 20 de pagini despre cum să evităm aceste probleme, iar eu l-am parcurs pentru a rezuma cele mai importante puncte. Inginerii de verificare folosesc o bază de date de configurare UVM pentru a seta valori, apoi pentru a obține valorile mai târziu în testul lor UVM. Un exemplu de setare și obținere a unei valori „T” este:

uvm_config#(T)::set(sfera de aplicare, nume_cale_instanță, nume_câmp, valoare); uvm_config#(T)::get(domeniu, instance_path_name, field_name, value);

Conectarea bancului de testare UVM la dispozitivul testat folosește baza de date de configurare pentru a trece interfețele virtuale. Există trei probleme cu utilizarea configurației UVM:

  • Cod mare, aproximativ 2,600 de linii de cod
  • Necesită potrivirea exactă a tipului, deci „int” și „bit” nu sunt identice
  • Cod lent

Luați în considerare cazul codului lent, deoarece cu mii de apeluri la set() folosind nume cu metacaractere poate dura până la 30 de minute pentru a finaliza faza „set” și „get”.

Timp scurs min

Rich propune o nouă soluție pentru configurațiile UVM care are viteze mult mai mari, luând doar câteva secunde în comparație.

solutie noua min

Dacă codul dvs. UVM evită utilizarea metacaracterilor și are câteva comenzi „setate”, atunci codul dumneavoastră va rula mai repede.

Soluțiile posibile la problemele de configurare UVM sunt:

  • Utilizați în schimb o variabilă globală
  • Utilizați configurația UVM cu un set()
  • Utilizați configurația UVM cu câteva set()
  • Utilizați un arbore de configurare
  • Încercați ceva diferit

Ultima abordare de a încerca ceva diferit este noua soluție și continuă să folosească set() și get() API, apoi simplifică prin eliminarea parametrizării configurațiilor, elimină precedența și elimină modificarea algoritmului de căutare. Rezultatele acestei noi abordări sunt viteze rapide.

Noul dvs. element de configurare este definit în clasa derivată din „config_item”, iar exemplul de mai jos arată „int value” ca proprietate care este setată. În scopuri de depanare, adăugați funcția pretty-print.

clasa my_special_config_item extinde config_item; function new(nume sir = "my_special_config_item"); super.new(nume); endfunction int valoare; șir de funcție virtuală convert2string(); return $sformatf("%s - valoare=%0d <%s>", get_name(), valoare, super.convert2string()); endfunction endclass

„Config_item” are un atribut de nume, iar acest nume este căutat, plus numele instanței. Obiectul de configurare are, de asemenea, o funcție get_name() pentru a returna numele. Pentru a găsi orice „nume_instanță.nume_câmp”, baza de date de configurare folosește o matrice asociativă pentru viteze rapide de căutare și creare.
Pentru trasabilitate puteți afla cine a setat sau cine a apelat get, deoarece un nume de fișier și un număr de linie sunt câmpuri din apelurile funcției set() și get().

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

Coada de accesare poate fi tipărită în timpul depanării pentru a vedea cine a apelat set() și get().

Pentru a suporta caracterele joker, a fost necesară adăugarea unui mecanism de căutare folosind containere. Luați în considerare numele instanței „top.abcd*_0”.

arbore container min
Arborele Containerului

Partea wildcard a numelui instanței este gestionată folosind arborele containerului, în loc de tabloul asociativ.

Rezumat

Partajarea datelor între modul/instanță și lumea bazată pe clasă într-un banc de testare UVM se poate face folosind baza de date de configurare UVM, trebuie doar să țineți cont de încetinirile vitezei. Dacă metodologia dvs. folosește o mulțime de configurații, atunci luați în considerare utilizarea noii abordări introduse, care are un pachet care utilizează aproximativ 300 de linii de cod în loc de cele 2,600 de linii de cod din fișierul bazei de date de configurare UVM.

Citiți întreaga lucrare de 20 de pagini, Evitarea nebuniei configurației pe calea ușoară la Siemens EDA.

Bloguri înrudite

Distribuie această postare prin:

Timestamp-ul:

Mai mult de la Semiwiki