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”.
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.
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”.
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:
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :are
- :este
- :nu
- $UP
- 30
- 300
- 600
- a
- Despre Noi
- adăuga
- adăugare
- Algoritmul
- de asemenea
- an
- și
- Orice
- api
- abordare
- SUNT
- Mulțime
- AS
- At
- evita
- conştient
- b
- BE
- deoarece
- fiind
- de mai jos
- între
- by
- denumit
- apeluri
- CAN
- caz
- Schimbare
- clasă
- cod
- comparație
- Completă
- Configuraţie
- Lua în considerare
- Recipient
- Containere
- continuă
- creaţie
- de date
- Baza de date
- definit
- Derivat
- modele
- detaliat
- dispozitiv
- diferit
- făcut
- în timpul
- uşor
- inginerii
- Eter (ETH)
- exemplu
- extinde
- FAST
- mai repede
- puțini
- Domenii
- Fișier
- Găsi
- Pentru
- din
- Complet
- funcţie
- obține
- obtinerea
- Caritate
- plecat
- ajutor
- highlights-uri
- Cum
- Cum Pentru a
- HTTPS
- if
- in
- include
- instanță
- in schimb
- interfeţe
- introdus
- probleme de
- IT
- jpg
- doar
- Nume
- mai tarziu
- Linie
- linii
- uitat
- căutare
- loturi
- Efectuarea
- potrivire
- max-width
- mecanism
- Metodologie
- minute
- minute
- mult
- nume
- nume
- Nou
- soluție nouă
- număr
- obiect
- of
- on
- ONE
- afară
- or
- afară
- pachet
- Hârtie
- parte
- trece
- fază
- Plato
- Informații despre date Platon
- PlatoData
- la care se adauga
- Popular
- Post
- precedenta
- probleme
- proprietate
- propune
- scopuri
- Îndepărtează
- eliminarea
- necesar
- REZULTATE
- reveni
- Bogat
- Alerga
- domeniu
- secunde
- vedea
- set
- instalare
- Emisiuni
- Siemens
- Simplifică
- încetini
- încetiniri
- So
- soluţie
- soluţii
- unele
- ceva
- viteză
- viteze
- Şir
- rezuma
- Super
- a sustine
- sistem
- T
- Lua
- luare
- test
- acea
- lor
- apoi
- Acolo.
- Acestea
- acest
- mii
- trei
- Prin
- timp
- la
- top
- subiect
- Trasabilitatea
- copac
- încercat
- tip
- în
- din pacate
- Universal
- Folosire
- utilizare
- utilizări
- folosind
- valoare
- Valori
- variabil
- Verificare
- verifica
- de
- Virtual
- Cale..
- care
- OMS
- voi
- cu
- lume
- scris
- tu
- Ta
- zephyrnet