Announcing OSVVM Release 2022.06
Summary of Changes in 2022.06
- Scripting: At build completion, print single-line, text-based build summary
- Scripting: Improved Error Handling. (continuing from 2022.05)
- Scripting: Updated HTML log file generation. Log file always created. HTML optionally created
- Scripting: Optional generation of a do file – for submitting bug reports to vendors
- Scripting: Added Generic handling for simulate: `simulate Tb “[generic a 5]”`
- AlertLogPkg: Added output formatter to Alerts and Logs that allows printing time first.
- CoveragePkg: Propagate Pass Fail information to html reports.
Lets explore these in more detail.
Scripting: At build completion, print single-line, text-based build summary
Complete build status is available in the HTML Build Summary Report. However, if the test passes, we no longer need to open the file – the single line summary printed at the end of a build is enough. Below is an example of the message.
Scripting: Improved Error Handling – 2022.05 + 2022.06
With 2022.05, all errors generated by analyze or simulate during the simulation process are caught. With 2022.06, any error generated during report generation is caught and the files are closed. Closing files is important as this was the cause of file copy issues in the past.
When analyze catches an error, the scripts will continue if the AnalyzeErrorCount is less than the AnalyzeErrorStopCount or if AnalyzeErrorStopCount is 0. When simulate catches an error, the scripts will continue if the SimulateErrorCount is less than the SimulateErrorStopCount or if SimulateErrorStopCount is 0. Following simulate, if the test case report generation catches an error, simulations will continue if FailOnReportErrors is false.
When build completes, if it caught an error, or if AnalyzeErrorCount or SimulateErrorCount are nonzero, the build will signal an error if FailOnBuildError is true. If report generation catches an error, the build will signal an error if FailOnReportErrors is true. If a test case failed, the build will signal an error if FailOnTestCaseErrors is true.
The defaults for the above variables are as shown below. These are set in OsvvmDefaultSettings.tcl. If you want to change these variables, override them in the file LocalScriptDefaults.tcl. LocalScriptDefaults.tcl is not in the OSVVM release and will not be overwritten when you update. For a template of this file, see Example_LocalScriptDefaults.tcl.
variable FailOnBuildErrors "true"
variable FailOnReportErrors "true"
variable FailOnTestCaseErrors "false"
variable AnalyzeErrorStopCount 0
variable SimulateErrorStopCount 0
Scripting: Updated HTML log file generation.
Previous versions either generated a text based log or an html based log. When html based logs were generated the simulation transcript window had html tags in it.
The updated version always generates a text based log file. When build finishes, if `SetTranscriptType “html”` is called, then an html transcript will also be generated. The simulation transcript window no longer has html tags in it.
Scripting: Optional generation of a do file – for submitting bug reports to vendors
When build finishes, if CreateSimScripts is “true”, a file with extension .tcl is created with all of the simulator commands run during the build.
Scripting: Added Generic handling for simulate – 2022.05d
To specify a generic for a test case, use the following:
simulate Tb "[generic a 5]"
simulate Tb "[generic G1 5][generic G2 10]"
The notation [generic a 5] is a call to a function in tcl that returns a value. Here it returns a value that is appropriate for the simulator being used. Note that the expression must be in quotes and when specifying more than one generic, the entire expression must be in quotes. Currently RivierPRO, ActiveHDL, ModelSim and QuestaSim are supported.
AlertLogPkg: Added output formatter to Alerts and Logs
Alerts and Logs now use an output formatter that allows printing of either time first or time last (original default format).
The following shows writing time last without justification of the AlertLogIDs (original default format).
The following shows writing time first with justification of the AlertLogIDs and the time field.
The following code is used to write time first with justification of the AlertLogIDs and the time field.
wait for 0 ns ;
SetAlertLogOptions(WriteTimeLast => FALSE) ; -- Write time first
SetAlertLogOptions(TimeJustifyAmount => 16) ; -- Amount to justify the time
SetAlertLogJustify ; -- Justify AlertLogIDs
SetAlertLogJustify can be used when writing time last. Currently there is a requirement that all AlertLogIDs are set before calling SetAlertLogJustify, and hence, the reason why the above example uses `wait for 0 ns`. There are plans to make this more flexible in a future release.
CoveragePkg: Propagate Pass Fail information to html reports.
The yaml based coverage reports were updated to support printing of PASSED or FAILED based on whether the desired functional coverage was achieved or not.
Setting WritePassFail enables printing PASSED/FAILED in the HTML based Test Case Report (extract of it shown above).
SetReportOptions (WritePassFail => ENABLED) ;