OSVVM 2022.10 Release
Summary of recent changes in OSVVM.
- Added Ethernet Phy and MAC verification components for GMII, RGMII, MII, RMII
- Added interrupt handler that supports any verification component that uses the Address Bus Model Independent Interface
- RandomPkg: added SetRandomSalt as a method to add an offset to all InitSeed calculations – Thanks Torsten M
- Added demo of using multiple OSVVM VC using “for generate” in UART/testbench_multiple_uarts
- AlertLogPkg: SetTestName replaces SetAlertLogName
- Scripts: HTML log files now flag errors in red outside of the hidden regions
- Scripts: Added DoWaves for adding additional waveform files to simulate – Thanks Anna
- Scripts: Added ChangeWorkingDirectory and JoinWorkingDirectory – Thanks @fhuemer
- Scripts: Ignore errors in wave.do + ignore it during batch sims – Thanks Markus
- NVC: Added support for NVC (open source simulator) – Thanks Adam
- GHDL: fixed transcript files (missing analyze and simulate outputs) – Thanks Patrick
- GHDL: fixed generic – the script to set generics during simulate
- Questa/Questa-Intel – OSVVM regressions failed due to calls to PushBurstRandom/CheckBurstRandom – Thanks Jason
- Questa-Intel fails to compile OSVVM – see OSVVM forum discussion.
- Questa-Intel does not create complete html log files – Thanks Torsten M
- .gitmodules file – github paths changed to relative paths – Thanks Patrick and Ryan
Thanks to everyone who reported issues. You will note with this release, I have started to attribute the change to the person who reported it.
You can report issues here in the OSVVM Forum or on GitHub issues. Note on github, there is a separate issues page for each OSVVM submodule. The link shown goes to OsvvmLibraries.
The next release in currently in planning.
Added Ethernet Phy and MAC verification components for GMII, RGMII, MII, RMII
Ethernet verification components are in the directory OsvvmLibraries/Ethernet/src. Current testing connects the MAC VC to the Phy VC. The testbench can be found in the directory OsvvmLibraries/Ethernet/TestStandAlone.
A blog post and documentation will be provided in the near future.
Added interrupt handler that supports any verification component that uses the Address Bus Model Independent Interface
The Interrupt Handler verification component (InterruptHandler.vhd) is in OsvvmLibraries/Common/src. Its component declaration is in InterruptHandlerComponentPkg.vhd and is referenced by the context, OsvvmCommonContext.
A testbench using the InterruptHandler can be found in the AXI4 repository in directory OsvvmLibraries/AXI4/Axi4/testbench_interrupt.
A blog post and documentation will be provided in the near future.
RandomPkg: added SetRandomSalt as a method to add an offset to all InitSeed calculations – Thanks Torsten M
Sometimes we want to rerun a test with different seed values. With OSVVM, we can set a salt that is added to each call to InitSeed.
The Salt is set with a call to SetRandomSalt. The example below uses a constant string value, but it would be more appropriate to use a generic.
SetRandomSalt ("2022.1031") ; -- Today’s salt
SetRandomSalt supports either a string or an integer parameter:
procedure SetRandomSalt (I : integer) ; procedure SetRandomSalt (S : string) ; impure function GetRandomSalt return integer ;
Added demo of using multiple OSVVM VC using “for generate”
A demo using multiple OSVVM VC using “for generate” can be found in OsvvmLibraries/UART/testbench_multiple_uarts.
Customarily OSVVM would use a separate process to communicate with each VC. Instead the testbench here demonstrates how to use a single process to generate the stimulus (CentralTestProc) and uses “for generate” to create the separate processes that communicate this information to the VC.
A blog post and documentation will be provided in the near future. In addition additional test case examples will be generated that use independent processes to create the tests – rather than using CentralTestProc.
AlertLogPkg: SetTestName replaces SetAlertLogName
When OSVVM added the HTML reports, the name set by SetAlertLogName evolved to be the Test name. As a result, the procedure name was changed to SetTestName. That said, SetAlertLogName will remain supported by using an alias – OSVVM values backward compatibility.
Scripts: HTML log files now flag errors in red outside of the hidden regions
This update makes it possible to view just the HTML based test report for a build and find the errors – without finding them first in the Build Summary Report.
Scripts: Added DoWaves for adding additional waveform files to simulate – Thanks Anna
To include wave files beyond the predefined set, use the DoWaves function. DoWaves is called in the call to simulate as shown below. Note the square brackets are required and tell TCL to call the function to create the arguments for simulate.
library default simulate Tb [DoWaves wave1.do] simulate Tb [DoWaves wave1.do wave2.do]
If the wave1.do file is not in CurrentSimulationDirectory, then it will need path information. In Aldec and Siemens, these are run via the simulator command line (via -do). The method of running them may change in the future (and may use source).
Scripts: Added ChangeWorkingDirectory and JoinWorkingDirectory – Thanks @fhuemer
ChangeWorkingDirectory changes CurrentWorkingDirectory to [file join $CurrentWorkingDirectory $RelativePath]. Usage is as follows.
ChangeWorkingDirectory src
JoinWorkingDirectory returns [file join $CurrentWorkingDirectory $RelativePath]. This is useful in commands like LinkLibraryDirectory as follows.
LinkLibraryDirectory [JoinWorkingDirectory YourLocalPath]
Scripts: Ignore errors in wave.do + ignore it during batch sims – Thanks Markus
Scripts have been updated to catch errors in wave.do, and by default, ignore them. This behavior can be changed by creating an alternate version of CallbackOnError_WaveDo in LocalCallbacks.tcl. See CallbackDefaults.tcl for the default implementation.
In addition, wave.do will not be run if you are running a simulator in batch mode.
NVC: Added support for NVC (open source simulator) – Thanks Adam
The open source simulator is now supported in OSVVM.
GHDL: fixed transcript files (missing analyze and simulate outputs) – Thanks Patrick
GHDL simulations now capture output from analyze and simulate into the log and html log files.
GHDL: fixed generic – the script to set generics during simulate
Running GHDL simulations with OSVVM scripts now support generics.
Questa/Questa-Intel – OSVVM regressions failed due to calls to PushBurstRandom/CheckBurstRandom. – Thanks Jason
To work around this Questa bug, these procedures were updated.
Questa-Intel fails to compile OSVVM
In Questa-Intel version 2022.0X, the osvvm library was removed, but the library mapping for OSVVM still remains in the ini file. You will need to edit the global modelsim.ini file to remove the osvvm library mapping.
; osvvm = $MODEL_TECH/../osvvm
Questa-Intel does not create complete html log files
Questa-Intel install on Windows calls the wrong executable (vsim instead of questasim). See the OSVVM forum discussion.
.gitmodules file – github paths changed to relative paths – Thanks Patrick and Ryan
In the OsvvmLibraries repository, some of the links to the submodules in the .gitmodules files inappropriately had absolute paths to github.