De Universal Verification Methodology (UVM) is een populaire manier om SystemVerilog-ontwerpen te helpen verifiëren, en omvat: configuratie systeem dat heeft helaas enkele snelheids- en gebruiksproblemen. Rich Edelman van Siemens EDA schreef een gedetailleerd artikel van twintig pagina's over hoe je deze problemen kunt vermijden, en ik heb het doorgenomen om de hoogtepunten voor je samen te vatten. Verificatie-ingenieurs gebruiken een UVM-configuratiedatabase om waarden in te stellen en deze waarden later in hun UVM-test te verkrijgen. Een voorbeeld van het instellen en verkrijgen van een waarde 'T' is:
uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);
Het verbinden van de UVM-testbank met het te testen apparaat maakt gebruik van de configuratiedatabase om de virtuele interfaces door te geven. Er zijn drie problemen bij het gebruik van de UVM-configuratie:
- Grote code, zo'n 2,600 regels code
- Vereist exacte typematching, dus 'int' en 'bit' zijn niet hetzelfde
- Langzame code
Neem het geval van langzame code, omdat met duizenden aanroepen van set() het gebruik van namen met jokertekens wel 30 minuten kan duren om de 'set'- en 'get'-fase te voltooien.
Rich stelt een nieuwe oplossing voor UVM-configuraties voor die veel hogere snelheden biedt, die in vergelijking slechts een paar seconden in beslag nemen.
Als uw UVM-code het gebruik van jokertekens vermijdt en weinig 'set'-opdrachten bevat, wordt uw code sneller uitgevoerd.
Mogelijke oplossingen voor de UVM-configuratieproblemen zijn:
- Gebruik in plaats daarvan een globale variabele
- Gebruik UVM-configuratie met één set()
- Gebruik UVM-configuratie met een paar set()
- Gebruik een configuratieboom
- Probeer iets anders
Die laatste benadering om iets anders te proberen is de nieuwe oplossing, en deze blijft de API set() en get() gebruiken, en vereenvoudigt vervolgens door de parameterisering van de configuraties te verwijderen, de voorrang te verwijderen en de wijziging van het opzoekalgoritme te verwijderen. De resultaten van deze nieuwe aanpak zijn hoge snelheden.
Uw nieuwe configuratie-item is gedefinieerd in de afgeleide klasse van 'config_item', en het onderstaande voorbeeld toont 'int value' als de eigenschap die wordt ingesteld. Voor foutopsporingsdoeleinden voegt u de functie Pretty-Print toe.
klasse my_special_config_item breidt config_item uit; function new(stringnaam = "my_special_config_item"); super.nieuw(naam); eindfunctie int waarde; virtuele functie string convert2string(); return $sformatf("%s - waarde=%0d <%s>", get_name(), waarde, super.convert2string()); eindfunctie eindklasse
Het 'config_item' heeft een naamattribuut, en deze naam wordt opgezocht, plus de instantienaam. Het configuratieobject heeft ook een get_name() functie om de naam te retourneren. Om een “instance_name.field_name” te vinden, gebruikt de configuratiedatabase een associatieve array voor snelle opzoek- en aanmaaksnelheden.
Voor traceerbaarheid kunt u achterhalen wie get heeft ingesteld of heeft aangeroepen, omdat een bestandsnaam en regelnummer velden zijn in de functieaanroepen set() en get().
set(null, "top.ab*", "SPEED", mijn_snelheid_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
De toegangswachtrij kan tijdens het debuggen worden afgedrukt om te zien wie set() en get() heeft aangeroepen.
Ter ondersteuning van jokertekens was het toevoegen van een opzoekmechanisme met behulp van containers vereist. Beschouw de instantienaam 'top.abcd*_0'.
Het jokertekengedeelte van de instantienaam wordt afgehandeld door gebruik te maken van de containerboom, in plaats van de associatieve array.
Samengevat
Het delen van gegevens tussen de module/instantie en de op klassen gebaseerde wereld in een UVM-testbank kan worden gedaan met behulp van de UVM-configuratiedatabase, maar houd rekening met de snelheidsvertragingen. Als uw methodologie veel configuraties gebruikt, overweeg dan om de nieuwe aanpak te gebruiken die een pakket bevat dat ongeveer 300 regels code gebruikt in plaats van de 2,600 regels code in het UVM-configuratiedatabasebestand.
Lees het volledige artikel van 20 pagina's, Configuratiegekte vermijden op de gemakkelijke manier bij Siemens EDA.
Gerelateerde blogs
Deel dit bericht via:
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- Plato Gezondheid. Intelligentie op het gebied van biotech en klinische proeven. Toegang hier.
- Bron: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- : heeft
- :is
- :niet
- $UP
- 30
- 300
- 600
- a
- Over
- toevoegen
- toe te voegen
- algoritme
- ook
- an
- en
- elke
- api
- nadering
- ZIJN
- reeks
- AS
- At
- vermijd
- bewust
- b
- BE
- omdat
- wezen
- onder
- tussen
- by
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- oproepen
- CAN
- geval
- verandering
- klasse
- code
- vergelijking
- compleet
- Configuratie
- Overwegen
- Containers
- containers
- blijft
- het aanmaken
- gegevens
- Database
- gedefinieerd
- Afgeleid
- ontwerpen
- gedetailleerd
- apparaat
- anders
- gedaan
- gedurende
- En het is heel gemakkelijk
- Ingenieurs
- Ether (ETH)
- voorbeeld
- strekt
- SNELLE
- sneller
- weinig
- Velden
- Dien in
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- Voor
- oppompen van
- vol
- functie
- krijgen
- het krijgen van
- Globaal
- weg
- hulp
- highlights
- Hoe
- How To
- HTTPS
- if
- in
- omvat
- instantie
- verkrijgen in plaats daarvan
- interfaces
- geïntroduceerd
- problemen
- IT
- jpg
- voor slechts
- Achternaam*
- later
- Lijn
- lijnen
- keek
- lookup
- veel
- maken
- matching
- max-width
- mechanisme
- Methodologie
- Min
- minuten
- veel
- naam
- namen
- New
- nieuwe oplossing
- aantal
- object
- of
- on
- EEN
- Slechts
- or
- uit
- pakket
- Papier
- deel
- passeren
- fase
- Plato
- Plato gegevensintelligentie
- PlatoData
- plus
- Populair
- Post
- voorrang
- problemen
- eigendom
- stelt
- doeleinden
- verwijdert
- het verwijderen van
- nodig
- Resultaten
- terugkeer
- Rijk
- lopen
- omvang
- seconden
- zien
- reeks
- het instellen van
- Shows
- Siemens
- vereenvoudigt
- traag
- vertragingen
- So
- oplossing
- Oplossingen
- sommige
- iets
- snelheid
- snelheden
- Draad
- samenvatten
- Super
- ondersteuning
- system
- T
- Nemen
- het nemen
- proef
- dat
- De
- hun
- harte
- Er.
- Deze
- dit
- duizenden kosten
- drie
- Door
- niet de tijd of
- naar
- top
- onderwerp
- Traceerbaarheid
- boom
- proberen
- type dan:
- voor
- helaas
- Universeel
- Gebruik
- .
- toepassingen
- gebruik
- waarde
- Values
- variabele
- Verificatie
- controleren
- via
- Virtueel
- Manier..
- welke
- WIE
- wil
- Met
- wereld
- schreef
- u
- Your
- zephyrnet