Die Universal Verification Methodology (UVM) ist eine beliebte Methode zur Überprüfung von SystemVerilog-Designs und umfasst Folgendes: Konfigurationssystem Das hat leider einige Geschwindigkeits- und Nutzungsprobleme. Rich Edelman von Siemens EDA hat einen detaillierten 20-seitigen Artikel zum Thema Vermeidung dieser Probleme geschrieben, und ich habe ihn durchgesehen, um die Highlights für Sie zusammenzufassen. Verifizierungsingenieure verwenden eine UVM-Konfigurationsdatenbank, um Werte festzulegen und die Werte später in ihrem UVM-Test abzurufen. Ein Beispiel für das Festlegen und Abrufen eines Werts „T“ ist:
uvm_config#(T)::set(scope, example_path_name, field_name, value); uvm_config#(T)::get(scope, example_path_name, field_name, value);
Beim Verbinden der UVM-Testbench mit dem zu testenden Gerät wird die Konfigurationsdatenbank zum Übergeben der virtuellen Schnittstellen verwendet. Bei der Verwendung der UVM-Konfiguration gibt es drei Probleme:
- Großer Code, etwa 2,600 Codezeilen
- Erfordert eine genaue Typübereinstimmung, daher sind „int“ und „bit“ nicht dasselbe
- Langsamer Code
Stellen Sie sich den Fall von langsamem Code vor, da es bei Tausenden von Aufrufen von set() mit Namen mit Platzhaltern bis zu 30 Minuten dauern kann, bis die „Set“- und „Get“-Phase abgeschlossen ist.
Rich schlägt eine neue Lösung für UVM-Konfigurationen vor, die viel schnellere Geschwindigkeiten bietet und im Vergleich nur wenige Sekunden dauert.
Wenn Ihr UVM-Code die Verwendung von Platzhaltern vermeidet und nur wenige Set-Befehle enthält, wird Ihr Code schneller ausgeführt.
Mögliche Lösungen für die UVM-Konfigurationsprobleme sind:
- Verwenden Sie stattdessen eine globale Variable
- Verwenden Sie die UVM-Konfiguration mit einem set()
- Verwenden Sie die UVM-Konfiguration mit ein paar set()
- Verwenden Sie einen Konfigurationsbaum
- Probieren Sie etwas anderes
Dieser letzte Ansatz, etwas anderes auszuprobieren, ist die neue Lösung. Sie verwendet weiterhin die APIs set() und get() und vereinfacht sie dann durch Entfernen der Parametrisierung der Konfigurationen, Entfernen der Priorität und Entfernen der Änderung des Suchalgorithmus. Das Ergebnis dieses neuen Ansatzes sind hohe Geschwindigkeiten.
Ihr neues Konfigurationselement wird in der abgeleiteten Klasse von „config_item“ definiert und im folgenden Beispiel wird „int value“ als festgelegte Eigenschaft angezeigt. Zu Debugzwecken fügen Sie die Pretty-Print-Funktion hinzu.
Klasse my_special_config_item erweitert config_item; function new(string name = "my_special_config_item"); super.new(name); Endfunktion int-Wert; virtueller Funktionsstring konvertieren2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); Endfunktion Endklasse
Das „config_item“ verfügt über ein Namensattribut, und dieser Name sowie der Instanzname werden nachgeschlagen. Das Konfigurationsobjekt verfügt außerdem über eine get_name()-Funktion, um den Namen zurückzugeben. Um „instance_name.field_name“ zu finden, verwendet die Konfigurationsdatenbank ein assoziatives Array für schnelle Such- und Erstellungsgeschwindigkeiten.
Zur Nachverfolgbarkeit können Sie herausfinden, wer get gesetzt oder aufgerufen hat, da ein Dateiname und eine Zeilennummer Felder in den Funktionsaufrufen set() und get() sind.
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
Die Zugriffswarteschlange kann während des Debuggens ausgedruckt werden, um zu sehen, wer set() und get() aufgerufen hat.
Um Platzhalter zu unterstützen, musste ein Suchmechanismus mithilfe von Containern hinzugefügt werden. Betrachten Sie den Instanznamen „top.abcd*_0“.
Der Platzhalterteil des Instanznamens wird mithilfe des Containerbaums anstelle des assoziativen Arrays verarbeitet.
Zusammenfassung
Der Datenaustausch zwischen dem Modul/der Instanz und der klassenbasierten Welt in einer UVM-Testbench kann mithilfe der UVM-Konfigurationsdatenbank erfolgen. Beachten Sie jedoch die Geschwindigkeitseinbußen. Wenn Ihre Methodik viele Konfigurationen verwendet, sollten Sie die Verwendung des neu eingeführten Ansatzes in Betracht ziehen, bei dem ein Paket etwa 300 Codezeilen anstelle der 2,600 Codezeilen in der UVM-Konfigurationsdatenbankdatei verwendet.
Lesen Sie den vollständigen 20-seitigen Artikel, Konfigurationswahnsinn ganz einfach vermeiden bei Siemens EDA.
Verwandte Blogs
Teile diesen Beitrag über:
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :hast
- :Ist
- :nicht
- $UP
- 30
- 300
- 600
- a
- Über uns
- hinzufügen
- Hinzufügen
- Algorithmus
- ebenfalls
- an
- und
- jedem
- Bienen
- Ansatz
- SIND
- Feld
- AS
- At
- vermeiden
- bewusst
- b
- BE
- weil
- Sein
- unten
- zwischen
- by
- namens
- Aufrufe
- CAN
- Häuser
- Übernehmen
- Klasse
- Code
- Vergleich
- abschließen
- Konfiguration
- Geht davon
- Container
- Behälter
- weiter
- Schaffung
- technische Daten
- Datenbase
- definiert
- Abgeleitet
- Designs
- detailliert
- Gerät
- anders
- erledigt
- im
- Einfache
- Ingenieure
- Äther (ETH)
- Beispiel
- erweitert
- FAST
- beschleunigt
- wenige
- Felder
- Reichen Sie das
- Finden Sie
- Aussichten für
- für
- voller
- Funktion
- bekommen
- bekommen
- Global
- weg
- Hilfe
- Highlights
- Ultraschall
- Hilfe
- HTTPS
- if
- in
- Dazu gehören
- Instanz
- beantragen müssen
- Schnittstellen
- eingeführt
- Probleme
- IT
- jpg
- nur
- Nachname
- später
- Line
- Linien
- sah
- Nachschlagen
- viel
- Making
- Abstimmung
- max-width
- Mechanismus
- Methodik
- Min.
- Minuten
- viel
- Name
- Namen
- Neu
- neue Lösung
- Anzahl
- Objekt
- of
- on
- EINEM
- einzige
- or
- Paket
- Papier
- Teil
- passieren
- Phase
- Plato
- Datenintelligenz von Plato
- PlatoData
- erfahren
- Beliebt
- Post
- Vorrang
- Probleme
- Resorts
- schlägt vor
- Zwecke
- entfernt
- Entfernen
- falls angefordert
- Die Ergebnisse
- Rückkehr
- Reiches
- Führen Sie
- Umfang
- Sekunden
- sehen
- kompensieren
- Einstellung
- Konzerte
- Siemens
- Vereinfacht
- langsam
- Verlangsamungen
- So
- Lösung
- Lösungen
- einige
- etwas
- Geschwindigkeit
- Geschwindigkeiten
- Schnur
- zusammenfassen
- Super
- Support
- System
- T
- Nehmen
- Einnahme
- Test
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- ihr
- dann
- Dort.
- Diese
- fehlen uns die Worte.
- Tausende
- nach drei
- Durch
- Zeit
- zu
- Top
- Thema
- Rückverfolgbarkeit
- Baum
- Versuch
- tippe
- für
- Unglücklicherweise
- Universal-
- Anwendungsbereich
- -
- verwendet
- Verwendung von
- Wert
- Werte
- Variable
- Verification
- überprüfen
- Assistent
- Weg..
- welche
- WHO
- werden wir
- mit
- weltweit wie ausgehandelt und gekauft ausgeführt wird.
- schrieb
- U
- Ihr
- Zephyrnet