The present invention adds capabilities to a Hardware Verification Language
(HVL) which facilitate the generation of random test data. Sources of
random numbers are easily produced by simply adding a randomness attribute
to a variable declaration of a class definition. Such variables are called
random variables. A "randomize" method call may be made to an instance of
the class definition to produce random values for each random variable.
The values assigned to random variables are controlled using constraint
blocks, which are part of the class definition. A constraint block is
comprised of constraint expressions, where each constraint expression
limits the values that can be assigned to a random variable on the
left-hand-side (lhs) of the constraint expression. A constraint_expression
can constrain any random variable which has been declared at its level in
the class hierarchy, or at any higher level. A constraint_expression
cannot constrain a random variable declared at a lower level in the
hierarchy. If a constraint block of an instance is active or ON, then all
the constraint expressions in the block will act to constrain their lhs
random variable. A constraint block which is OFF means that all of its
constraint expressions will not act to constrain their random variables.
The method "constraint_mode" can be used to turn ON or OFF any constraint
blocks of an instance. The effects of a constraint block can be completely
eliminated by defining, at a lower level in the hierarchy, another
constraint block with the same name.
Η παρούσα εφεύρεση προσθέτει τις ικανότητες σε μια γλώσσα επαλήθευσης υλικού (HVL) που διευκολύνουν την παραγωγή των τυχαίων στοιχείων δοκιμής. Οι πηγές τυχαίων αριθμών παράγονται εύκολα με απλά να προσθέσουν μια ιδιότητα τυχαίου σε μια μεταβλητή δήλωση ενός καθορισμού κατηγορίας. Τέτοιες μεταβλητές καλούνται τυχαίες μεταβλητές. "Τυχαιοποιήστε" την κλήση μεθόδου μπορεί να γίνει σε μια περίπτωση του καθορισμού κατηγορίας για να παραγάγει τις τυχαίες τιμές για κάθε τυχαία μεταβλητή. Οι τιμές που ορίζονται στις τυχαίες μεταβλητές ελέγχονται χρησιμοποιώντας τους φραγμούς περιορισμού, οι οποίοι είναι μέρος του καθορισμού κατηγορίας. Ένας φραγμός περιορισμού αποτελείται από τις εκφράσεις περιορισμού, όπου κάθε έκφραση περιορισμού περιορίζει τις τιμές που μπορούν να οριστούν σε μια τυχαία μεταβλητή στην αριστερός-χέρι-πλευρά (lhs) της έκφρασης περιορισμού. Ένα constraint_expression μπορεί να περιορίσει οποιαδήποτε τυχαία μεταβλητή που έχει δηλωθεί σε επίπεδό της στην ιεραρχία κατηγορίας, ή σε οποιοδήποτε πιό υψηλό επίπεδο. Ένα constraint_expression δεν μπορεί να περιορίσει μια τυχαία μεταβλητή που δηλώνεται σε χαμηλότερο επίπεδο στην ιεραρχία. Εάν ένας φραγμός περιορισμού μιας περίπτωσης είναι ενεργός ή ΕΠΑΝΩ, κατόπιν όλες οι εκφράσεις περιορισμού στο φραγμό θα ενεργήσουν για να περιορίσουν την τυχαία μεταβλητή lhs τους. Ένας φραγμός περιορισμού που είναι ΑΠΟ σημαίνει ότι οι όλες της εκφράσεις περιορισμού δεν θα ενεργήσουν για να περιορίσουν τις τυχαίες μεταβλητές τους. Η μέθοδος "constraint_mode" μπορεί να χρησιμοποιηθεί για να ανοίξει ή ΑΠΟ οποιουσδήποτε φραγμούς περιορισμού μιας περίπτωσης. Τα αποτελέσματα ενός φραγμού περιορισμού μπορούν να εξαλειφτούν πλήρως με τον καθορισμό, σε χαμηλότερο επίπεδο στην ιεραρχία, ενός άλλου φραγμού περιορισμού με το ίδιο όνομα.