Late binding of variables during test case generation for hardware and software design verification
AssigneeInternational Business Machines Corporation
InventorsShmuel Ur, Avi Ziv
Life of this patent
Estimating the term…
Abstract
Methods and systems are provided that improve design verification by test generators by delaying assignment of values in the generated stimuli until these values are used in the design. Late binding allows the generator to have a more accurate view of the state of the design, and in order to choose correct values. Late binding can significantly improve test coverage with a reasonable performance penalty as measured by simulation time.
Claims22
A method of verifying a design, comprising the steps of:
- generating a stream of instructions, said stream including a first instruction that references an unidentified first resource;
- setting a first flag that designates said first resource as being unidentified;
- copying said first resource to a second resource;
- setting a second flag that designates said second resource as being unidentified;
- including said second resource in a set of unidentified resources that is associated with said first resource, wherein each member of said set has a status flag designating said member as being unidentified;
- and
- thereafter performing the steps of
- identifying said second resource;
- clearing said second flag;
- and
- removing said second resource from said set.
A computer software product, comprising a computer-readable medium in which computer program instructions are stored, which instructions, when read by a computer, cause the computer to perform a method of verifying a design, comprising the steps of:
- generating a stream of design instructions, said stream including a first instruction that references an unidentified first resource;
- setting a first flag that designates said first resource as being unidentified;
- copying said first resource to a second resource;
- setting a second flag that designates said second resource as being unidentified;
- including said second resource in a set of unidentified resources that is associated with said first resource, wherein each member of said set has a status flag designating said member as being unidentified;
- and
- thereafter performing the steps of
- identifying said second resource;
- clearing said second flag;
- and
- removing said second resource from said set.
A verification system for verifying a design, comprising a test generator adapted to perform the steps of:
- generating a stream of instructions, said stream including a first instruction that references an unidentified first resource;
- setting a first flag that designates said first resource as being unidentified;
- copying said first resource to a second resource;
- setting a second flag that designates said second resource as being unidentified;
- including said second resource in a set of unidentified resources that is associated with said first resource, wherein each member of said set has a status flag designating said member as being unidentified;
- and
- thereafter performing the steps of:
- identifying said second resource;
- clearing said second flag;
- and
- removing said second resource from said set.
A method of verifying a design, comprising the steps of:
- generating a stream of instructions for evaluation of a Boolean function in said design;
- constructing a set of inputs for said Boolean function, said set comprising members having unidentified input resources, and said inputs being outcome determinative of said Boolean function, said Boolean function further having an output resource;
- selecting one of said members;
- resolving an identity of said selected member;
- excluding said selected member from said set of inputs;
- removing all remaining members of said set of inputs that are no longer outcome determinative of said Boolean function;
- iterating said steps of selecting, resolving, excluding and removing until no more than one member remains in said set of inputs;
- and
- determining said output resource as a copy of said one member.
A computer software product, comprising a computer-readable medium in which computer program instructions are stored, which instructions, when read by a computer, cause the computer to perform a method of verifying a design, comprising the steps of:
- generating a stream of design instructions for evaluation of a Boolean function in said design;
- constructing a set of inputs for said Boolean function, said set comprising members having unidentified input resources, and said inputs being outcome determinative of said Boolean function, said Boolean function further having an output resource;
- selecting one of said members;
- resolving an identity of said selected member;
- excluding said selected member from said set of inputs;
- removing all remaining members of said set of inputs that are no longer outcome determinative of said Boolean function;
- iterating said steps of selecting, resolving, excluding and removing until no more than one member remains in said set of inputs;
- and
- determining said output resource as a copy of said one member.
The computer software product according to claim 18, wherein said computer is further instructed to perform the steps of:
- setting a flag that designates said output resource as being unidentified;
- and
- including said output resource in a set of unidentified resources that is associated with said one member, respective status flags being associated with each member of said set of unidentified resources that designate an unidentified status thereof.
A verification system of verifying a design, comprising a test generator adapted to perform the steps of:
- generating a stream of instructions for evaluation of a Boolean function in said design;
- constructing a set of inputs for said Boolean function, input resources associated with members of said set of inputs being unidentified, and said inputs being outcome determinative of said Boolean function, said Boolean function further having an output resource;
- selecting one of said members;
- resolving an identity of said selected member;
- excluding said selected member from said set of inputs;
- removing all remaining members of said set of inputs that are no longer outcome determinative of said Boolean function;
- and
- iterating said steps of selecting, resolving, excluding and removing until no more than one member remains in said set of inputs.
Dependencies are inferred from the claim text.