UVVM (Universal VHDL Verification Methodology) is a free and open-source VHDL verification methodology designed to reduce development time and to make structured and reusable testbenches. In 2017, ESA (European Space Agency) and NOSA (Norwegian Space Agency) awarded UVVM a contract to include new functionality and to improve the overall quality. The UVVM extensions were released in 2019 and were very well received by the UVVM community. Not long after this release, ESA and NOSA again decided to back UVVM in a new project that would extend the functionality even more, allowing for even better and more reusable testbenches.
Closing in on the release date of the complete project and all the new functionality added to UVVM, we are very proud to announce some of the functionality that will soon be made available for the UVVM community: Functional Coverage and Advanced Randomization.
When verifying a design, one needs to demonstrate that the design correctly implements its specifications, in other words ensuring that the design is created correctly. UVVM has a verification module, Specification Coverage VIP, which adds specification tracking to the test cases to ensure that all specifications have been tested. With the new Functional Coverage extension, the test designer can now measure what specific functionality and features the tests have executed.
With the Functional Coverage extension, the test designer will have a measurement that will guide him or her to create better stimuli. Together with randomization this can be a useful instrument for knowing which features have been covered and which have not. The new Functional Coverage extension provides the verification designers with features such as different types of bins (single value, set of values, range, transition, ignore, illegal), cross coverage, coverage goals, coverage weights, coverage reporting and coverage accumulation across testcases.
Basic randomization has always been a part of UVVM and found useful in many situations, but with the introduction of Enhanced and Optimized randomization UVVM has now taken a step up to deliver a complete randomization solution to improve test quality and run time.
With enhanced randomization, UVVM has now a randomization package which can be constrained to make the randomization stimuli more relevant for the tests. The constraints can include ranges, include and/or exclude values and select probability distributions such as uniform, gaussian and weighted. Enhanced randomization also supports generating unique values for vector types, and cyclic generation that ensures that no value is repeated until all values within the constraints have been generated.
Regular randomization stimuli will produce many repeated sequences as there is no connection between the generators and the coverage measuring monitors. Even when the randomization generators are constrained to produce stimuli that matches the verification plan, these repeated sequences are inevitable.
With Optimized randomization in UVVM there is a connection between the randomization generator and the coverage monitors, providing coverage information from the monitors back to the randomization generators. This way the randomization generators can produce stimuli with respect to coverage holes, which will significantly reduce simulation times.
Optimized randomization is strongly connected to the Functional Coverage functionality, where the random values can be generated by the coverage state, thus reducing the simulation run time. The Optimized randomization also supports randomization weights and randomization of transitions.