Η καθολική μεθοδολογία επαλήθευσης (UVM) είναι ένας δημοφιλής τρόπος για να βοηθήσει στην επαλήθευση των σχεδίων του SystemVerilog και περιλαμβάνει σύστημα διαμόρφωσης που δυστυχώς έχει κάποια προβλήματα ταχύτητας και χρήσης. Ο Rich Edelman από τη Siemens EDA έγραψε μια λεπτομερή εργασία 20 σελίδων σχετικά με το πώς να αποφύγετε αυτά τα ζητήματα, και το έχω διαβάσει για να συνοψίσω τα κυριότερα σημεία για εσάς. Οι μηχανικοί επαλήθευσης χρησιμοποιούν μια βάση δεδομένων διαμόρφωσης UVM για να ορίσουν τιμές και, στη συνέχεια, να λάβουν τις τιμές αργότερα στη δοκιμή UVM. Ένα παράδειγμα ρύθμισης και λήψης τιμής "T" είναι:
uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);
Η σύνδεση του πάγκου δοκιμών UVM με τη συσκευή υπό δοκιμή χρησιμοποιεί τη βάση δεδομένων διαμόρφωσης για να περάσει τις εικονικές διεπαφές. Υπάρχουν τρία προβλήματα με τη χρήση της διαμόρφωσης UVM:
- Μεγάλος κώδικας, περίπου 2,600 γραμμές κώδικα
- Απαιτεί ακριβή αντιστοίχιση τύπου, επομένως το "int" και το "bit" δεν είναι το ίδιο
- Αργός κώδικας
Σκεφτείτε την περίπτωση του αργού κώδικα, γιατί με χιλιάδες κλήσεις για set() η χρήση ονομάτων με χαρακτήρες μπαλαντέρ μπορεί να διαρκέσει έως και 30 λεπτά για να ολοκληρωθεί η φάση «set» και «get».
Η Rich προτείνει μια νέα λύση στις διαμορφώσεις UVM που έχει πολύ μεγαλύτερες ταχύτητες, απαιτώντας μόνο λίγα δευτερόλεπτα σε σύγκριση.
Εάν ο κωδικός UVM σας αποφεύγει τη χρήση χαρακτήρων μπαλαντέρ και έχει λίγες εντολές 'set', τότε ο κώδικάς σας θα εκτελεστεί πιο γρήγορα.
Πιθανές λύσεις στα ζητήματα διαμόρφωσης UVM είναι:
- Χρησιμοποιήστε μια καθολική μεταβλητή
- Χρησιμοποιήστε τη διαμόρφωση UVM με ένα σύνολο()
- Χρησιμοποιήστε τη διαμόρφωση UVM με λίγα set()
- Χρησιμοποιήστε ένα δέντρο διαμόρφωσης
- Δοκιμάστε κάτι διαφορετικό
Αυτή η τελευταία προσέγγιση για να δοκιμάσετε κάτι διαφορετικό είναι η νέα λύση και συνεχίζει να χρησιμοποιεί το API set() και get(), στη συνέχεια απλοποιεί καταργώντας την παραμετροποίηση των διαμορφώσεων, αφαιρεί την προτεραιότητα και καταργεί την αλλαγή αλγορίθμου αναζήτησης. Τα αποτελέσματα αυτής της νέας προσέγγισης είναι γρήγορες ταχύτητες.
Το νέο σας στοιχείο διαμόρφωσης ορίζεται στην προκύπτουσα κλάση από το 'config_item' και το παρακάτω παράδειγμα δείχνει την 'int value' ως την ιδιότητα που ορίζεται. Για σκοπούς εντοπισμού σφαλμάτων, προσθέτετε τη λειτουργία όμορφης εκτύπωσης.
Η κλάση my_special_config_item επεκτείνει το config_item. function new(όνομα συμβολοσειράς = "my_special_config_item"); super.new(όνομα); endfunction int τιμή? συμβολοσειρά εικονικής συνάρτησης convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); endfunction endclass
Το 'config_item' έχει ένα χαρακτηριστικό name και αυτό το όνομα αναζητείται, συν το όνομα της παρουσίας. Το αντικείμενο διαμόρφωσης έχει επίσης μια συνάρτηση get_name() για να επιστρέψει το όνομα. Για να βρείτε οποιοδήποτε "instance_name.field_name" η βάση δεδομένων διαμόρφωσης χρησιμοποιεί έναν συσχετιστικό πίνακα για γρήγορη αναζήτηση και ταχύτητες δημιουργίας.
Για την ιχνηλασιμότητα, μπορείτε να μάθετε ποιος ορίζει ή ποιος κάλεσε το get, επειδή το όνομα αρχείου και ο αριθμός γραμμής είναι πεδία στις κλήσεις της συνάρτησης set() και get().
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
Η ουρά του Accessor μπορεί να εκτυπωθεί κατά τη διάρκεια του εντοπισμού σφαλμάτων για να δούμε ποιος κάλεσε τη set() και την get().
Για την υποστήριξη χαρακτήρων μπαλαντέρ απαιτείται η προσθήκη ενός μηχανισμού αναζήτησης με χρήση κοντέινερ. Εξετάστε το όνομα της παρουσίας 'top.abcd*_0'.
Ο χειρισμός του τμήματος μπαλαντέρ του ονόματος της παρουσίας γίνεται χρησιμοποιώντας το δέντρο κοντέινερ, αντί του συσχετιστικού πίνακα.
Χαρακτηριστικά
Η κοινή χρήση δεδομένων μεταξύ της λειτουργικής μονάδας/παρουσίασης και του κόσμου που βασίζεται στην κλάση σε έναν πάγκο δοκιμών UVM μπορεί να γίνει χρησιμοποιώντας τη βάση δεδομένων διαμόρφωσης UVM, απλώς έχετε υπόψη σας τις επιβραδύνσεις της ταχύτητας. Εάν η μεθοδολογία σας χρησιμοποιεί πολλές διαμορφώσεις, τότε εξετάστε το ενδεχόμενο να χρησιμοποιήσετε τη νέα προσέγγιση που εισήχθη η οποία έχει ένα πακέτο που χρησιμοποιεί περίπου 300 γραμμές κώδικα αντί για τις 2,600 γραμμές κώδικα στο αρχείο βάσης δεδομένων διαμόρφωσης UVM.
Διαβάστε το πλήρες έγγραφο 20 σελίδων, Αποφυγή τρέλας διαμόρφωσης Ο εύκολος τρόπος στη 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