Reply To: Merging coverage databases

Why OSVVM™? Forums OSVVM Merging coverage databases Reply To: Merging coverage databases

Jim Lewis

Hi Lyle,

What is your application? 

There is a ReadCovDb and WriteCovDb.  I will be adding a merge option to ReadCovDb in the next revision, however, with Intelligent Coverage I do not expect merging to be a main stream methodology. 

Let me explain.  OSVVM’s Intelligent Coverage is a closed loop test.  It generates stimulus based on the current coverage holes.  As long as there is a good correlation between the stimulus generation and the coverage model (for inputs there is 100% correlation), the test will achieve coverage closure in the sum of the coverage goals for each coverage bin.   A functional coverage model that is too big to be run in a single simulation run may be partitioned into multiple independent models and run separately.  You can even run the separately for your daily fast simulations and combine them together for your longer regression tests.

Intelligent Coverage then is alot different from SystemVerilog Constrained Random.  Constrained Random is an open loop test – there is no guarantee that a given set of constraints. will achieve coverage closure and indeed to achieve coverage closure you often end up with multiple testbenches that use different constraints, different controls, and perhaps even different seeds (gag). 

There are situations where we use Intelligent Coverage to configure a test.  In this situation, the configuration is randomized at the beginning.  The steps we do is read the coverage database, randomize the configuration, and write out the coverage database (before running the test).  In this case, we can launch multiple simulations provided that each waits long enough for the prior one to read and then write out the coverage database.  

If you show me an application where with you need merging with OSVVM, I can make sure that it gets added sooner – adding it is a trivial addition (where ReadCovDb  currently replaces the current value of the coverage with the read value, simply replace that with the current value plus the read value) – the more interesting part is testing it.