A question was raised to stackoverflow about how can one extend the dut _error() for printing more information. The capability to provide the test runners and debuggers more information upon an error can be a great enhancement to the quality and usability of the verification environment, so I decided to extend here a bit the answer given in the stackoverflow . The request was worded: Can we extend the dut _error() method to print additional information such as the name of the package from which the error is reported. Actually, although it looks like a method, dut _error() is not a method so it cannot be extended. But what you can do is to use the dut _error_ struct . This struct contains two methods that you can extend, pre_error() and write() , and multiple methods that you can call. The pre_error() is a hook method called when dut _error() is called. The write() method is the method that writes the error message, and you can extend it to add information and/or modify the message format. In your code you can use the dut _error_ struct API for getting information such as which struct issued the error. For example, the following code increases a counter whenever there is an error during post_generate() , and reduces the check effect to IGNORE: extend dut _error_ struct { pre_error() is also { if source_method_name() == "post_generate" { out("\ nProblem in generation, ", source_location()); sys.gen_errors_counter += 1; set_check_effect (IGNORE); }; }; }; To get the package name, as was requested in the original request, we have to know which struct reported this error, and then query it using the reflection API: extend dut _error_ struct { write() is first { // Special output for errors coming from the // ahb package: var reporter_rf : rf_ struct = rf_manager.get_ struct _of_instance(source_ struct () ); if reporter_rf.get_package().get_name() == " ahb " { out(append(" xxxxxx another bug in AHB package, ", "\ nreported ", source_location())); }; }; These are just two examples of ways to extend the dut _error_ struct , for implementing advanced verification utilities. Additional examples can be downloaded from github-spmn-dut _error . Please try it out, and see if it cannot help you adjust and improve your verification methodology and requirements. Efrat Shneydor , Specman team
↧