Signature Bucket Overflow
Signature buckets can have a few problems in Simscope.
Regression Overflow
To prevent new Signatures from exploding into the database, Simscope has an automatic detection during regressions.
- If more than
25
brand new Signatures occur within a single regression, Simscope will enable overflow on this regression- When this happens, rather than allocating new signatures, it will bucketize into a special signature called "Regression Bucket Overflow"
Note: if Simscope were not to automatically go into Overflow behavior, it could create hundreds (or thousands) of signatures within a single regression, which is a messy situation to clean up.
Fixing Overflow
To correct this behavior add <<ignore>>
sections in your errors.
If you would like more help with bucketizing, please contact VerOps to explain overflow.
Example Error Fix
Here is an example, where an error message is printing an instruction into the error, which needs to be stripped out.
Original Error:
`uvm_error(`gfn, $sformatf("Found unexpected illegal instr: %0s [%0s]",
trace["instr"], line))
→ Fixed Error: (notice the <<
angle brackets >>
)
`uvm_error(`gfn, $sformatf("Found unexpected illegal instr: <<%0s [%0s]>>",
trace["instr"], line))
False Bucketizing (missing ignore section)
If errors contain extraneous alphabetic text, Simscope may inadvertently not group them into common Signatures correctly.
For example, these two job error messages:
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy horse
- Will bucketize into two separate signatures, because
dog
andhorse
are not detected as numbers/symbols to be removed by Simscope's bucketizer.
To fix this problem, change the error message and create an <<ignore>>
section, by surrounding the dynamic part of the message with angle brackets, like this:
The quick brown fox jumps over the lazy <<dog>>
The quick brown fox jumps over the lazy <<horse>>
Simscope will now automatically group them into the following common signature:
The quick brown fox jumps over the lazy <<ignore>>