nickg/nvc

Coverage refactoring - Tracking Issue

Blebowski opened this issue · 4 comments

Convert all Cover Items to one Bin per item, make each item counter:

  1. Branch coverage - Done only half-way, coverage reporting still uses to mask and flag.
  2. FSM coverage - Each bin single item, but mask is used
  3. Toggle coverage - Not done
  4. Expression coverage - Not done

Fully encode bin name into the cover item hierarchy:

  1. FSM coverage
  2. Toggle coverage
  3. Branch coverage
  4. Expression coverage

Other internal refactoring / improvements:

  1. Saturate run-time counters to avoid overflow and therefore rarily marking covered item as uncovered.
  2. Convert unreachability mask to a single bit flag. Since single cover item is single bin, no "unreachability mask" is needed.
  3. Convert exclude mask to single bit flag. The same as above

Changes related to the "user":

  1. Change specification of exclude files not to require bin name separately -> Since bin name will be part of hierarchy, this will simplify exclude file, its loading, checking and handling.

Make run-time counters 64 bit (32 bit toggle can overflow in realistically long simulation)

This will also double the memory usage of the counters and isn't needed in 99% of cases. It would be better to just make the counter saturate at 2^32 - 1 instead.

This will also double the memory usage of the counters and isn't needed in 99% of cases. It would be better to just make the counter saturate at 2^32 - 1 instead.

Agreed. Any solution that does not overflow and will cause covered item to be reported as uncovered in works for me.

It would be better to just make the counter saturate at 2^32 - 1 instead.

I did this in 1745c08.

Thanks, I have rebased my new branch where I am trying to the the coverage refactoring more gradually. It is still WIP, but I am on a much better track now :) Time wise, I am still busy, but I will try to push it a little.