The Universal Verification Methodology (UVM) is a popular way to help verify SystemVerilog designs, and it includes a σύστημα διαμόρφωσης that unfortunately has some speed and usage issues. Rich Edelman from Siemens EDA wrote a detailed 20-page paper on the topic of how to avoid these issues, and I’ve gone through it to summarize the highlights for you. Verification engineers use a UVM configuration database to set values, then to get the values later in their UVM test. One example of setting and getting a value ‘T’ is:
uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);
Connecting the UVM testbench to the device under test uses the configuration database to pass the virtual interfaces. There are three problems with using the UVM configuration:
- Big code, some 2,600 lines of code
- Requires exact type matching, so ‘int’ and ‘bit’ are not the same
- Slow code
Consider the case of slow code, because with thousands of calls to set() using names with wildcards can take up to 30 minutes to complete the ‘set’ and ‘get’ phase.
Rich proposes a new solution to UVM configurations that has much faster speeds, taking only a few seconds in comparison.
If your UVM code avoids using wildcards and has few ‘set’ commands, then your code will run faster.
Possible solutions to the UVM configuration issues are:
- Use a global variable instead
- Use UVM configuration with one set()
- Use UVM configuration with a few set()
- Use a configuration tree
- Δοκιμάστε κάτι διαφορετικό
That last approach of trying something different is the new solution, and it continues to use the set() and get() API, then simplifies by removing parameterization of the configurations, removes precedence, and removes the lookup algorithm change. The results of this new approach are fast speeds.
Your new configuration item is defined in the derived class from ‘config_item’, and the example below shows ‘int value” as the property being set. For debug purposes you add the pretty-print function.
class my_special_config_item extends config_item; function new(string name = "my_special_config_item"); super.new(name); endfunction int value; virtual function string convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); endfunction endclass
The ’config_item’ has a name attribute, and this name is looked up, plus the instance name. The configuration object also has a get_name() function to return the name. To find any “instance_name.field_name” the configuration database uses an associative array for fast lookup and creation speeds.
For traceability you can find out who set or who called get, because a file name and line number are fields in the set() and get() function calls.
set(null, "top.a.b.*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.a.b.c.d.monitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
The accessor queue can be printed during debug to see who called set() and get().
To support wildcards required adding a lookup mechanism using containers. Consider the instance name ‘top.a.b.c.d.*_0’.
The wildcard part of the instance name is handled by using the container tree, instead of the associative array.
Χαρακτηριστικά
Sharing data between the module/instance and the class-based world in a UVM testbench can be done using the UVM configuration database, just be aware of the speed slowdowns. If your methodology uses lots of configurations, then consider using the new approach introduced which has a package using about 300 lines of code instead of the 2,600 lines of code in the UVM configuration database file.
Read the full 20-page paper, Avoiding Configuration Madness The Easy Way στη Siemens EDA.
Σχετικά ιστολόγια
Μοιραστείτε αυτήν την ανάρτηση μέσω:
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoData.Network Vertical Generative Ai. Ενδυναμώστε τον εαυτό σας. Πρόσβαση εδώ.
- PlatoAiStream. Web3 Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- PlatoESG. Ανθρακας, Cleantech, Ενέργεια, Περιβάλλον, Ηλιακός, Διαχείριση των αποβλήτων. Πρόσβαση εδώ.
- PlatoHealth. Ευφυΐα βιοτεχνολογίας και κλινικών δοκιμών. Πρόσβαση εδώ.
- πηγή: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :έχει
- :είναι
- :δεν
- $UP
- 30
- 300
- 600
- a
- Σχετικα
- προσθέτω
- προσθήκη
- αλγόριθμος
- Επίσης
- an
- και
- κάθε
- api
- πλησιάζω
- ΕΙΝΑΙ
- Παράταξη
- AS
- At
- αποφύγετε
- επίγνωση
- b
- BE
- επειδή
- είναι
- παρακάτω
- μεταξύ
- by
- που ονομάζεται
- κλήσεις
- CAN
- περίπτωση
- αλλαγή
- τάξη
- κωδικός
- σύγκριση
- πλήρης
- διαμόρφωση
- Εξετάστε
- Δοχείο
- Εμπορευματοκιβώτια
- συνεχίζεται
- δημιουργία
- ημερομηνία
- βάση δεδομένων
- ορίζεται
- Συμπληρωματικός
- σχέδια
- λεπτομερής
- συσκευή
- διαφορετικές
- γίνεται
- κατά την διάρκεια
- εύκολος
- Μηχανικοί
- Αιθέρας (ΕΤΗ)
- παράδειγμα
- Επεκτείνεται
- FAST
- γρηγορότερα
- λίγοι
- Πεδία
- Αρχεία
- Εύρεση
- Για
- από
- πλήρη
- λειτουργία
- παίρνω
- να πάρει
- Παγκόσμιο
- φύγει
- βοήθεια
- ανταύγειες
- Πως
- Πώς να
- HTTPS
- if
- in
- περιλαμβάνει
- παράδειγμα
- αντί
- διεπαφές
- εισήγαγε
- θέματα
- IT
- jpg
- μόλις
- Επίθετο
- αργότερα
- γραμμή
- γραμμές
- κοίταξε
- αναζήτηση
- πλήθος
- Κατασκευή
- ταιριάζουν
- max-width
- μηχανισμός
- Μεθοδολογία
- πρακτικά
- πρακτικά
- πολύ
- όνομα
- ονόματα
- Νέα
- νέα λύση
- αριθμός
- αντικείμενο
- of
- on
- ONE
- αποκλειστικά
- or
- έξω
- πακέτο
- Χαρτί
- μέρος
- passieren
- φάση
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- συν
- Δημοφιλής
- Θέση
- προβάδισμα
- προβλήματα
- περιουσία
- προτείνει
- σκοποί
- Αφαιρεί
- αφαίρεση
- απαιτείται
- Αποτελέσματα
- απόδοση
- Πλούσιος
- τρέξιμο
- έκταση
- δευτερόλεπτα
- δείτε
- σειρά
- τον καθορισμό
- Δείχνει
- Siemens
- απλοποιεί
- επιβραδύνουν
- επιβραδύνσεις
- So
- λύση
- Λύσεις
- μερικοί
- κάτι
- ταχύτητα
- ταχύτητες
- Σπάγγος
- συνοψίζω
- Σούπερ
- υποστήριξη
- σύστημα
- T
- Πάρτε
- λήψη
- δοκιμή
- ότι
- Η
- τους
- τότε
- Εκεί.
- Αυτοί
- αυτό
- χιλιάδες
- τρία
- Μέσω
- ώρα
- προς την
- κορυφή
- τοπικός
- Ιχνηλασιμότητα
- δέντρο
- προσπαθώντας
- τύπος
- υπό
- Δυστυχώς
- Παγκόσμιος
- Χρήση
- χρήση
- χρησιμοποιεί
- χρησιμοποιώντας
- αξία
- Αξίες
- μεταβλητή
- Επαλήθευση
- επαληθεύει
- μέσω
- Πραγματικός
- Τρόπος..
- Ποιό
- Ο ΟΠΟΊΟΣ
- θα
- με
- κόσμος
- Έγραψε
- εσείς
- Σας
- zephyrnet