Knowledge Base Administration Guide

Coverage Data Integration

To integrate Coverage Data into Simscope, you need to:

  1. Create coverage TSV files
    • If you have an existing coverage file format, you should build a conversion script first.
  2. Publish/import coverage into Simscope

Input Format

FieldTypeDescriptionExample Value
namestringCoverage point namea.b.c.my_coverage_point
groupstringParent coverage group (optional)alpha
locationstringfile/line location (optional)foo/bar.sv:1234
hitsintNumber of times the point was hit100 (or 0 indicates not hit)
binsintFor line coverage, this indicates the number of statement lines (use 0 or comma for normal coverage)0

Example Coverage TSV file

Simscope Coverage uses a TSV (tab-separated-value) input file format.

Each line describes one coverage point, and each field is delimited by a <TAB> character.

name	group	location	hits	bins
a.b.c.unused	ChkAllPtFlushUnusedCheck	tb/file1.sv	0	,
a.b.c.full[0]	2D Array	tb/file2.sv	1111	,
a.b.c.full[1]	2D Array	tb/file3.sv	400	,

This example contains:

  • Three coverage points
  • Two coverage groups
  • One coverage point has zero hits (ie uncovered)
  • All coverage points are using default bins (via a single comma)

Enabling Coverage in Simscope

To enable coverage in Simscope, add the following to your simscope.config file:

[coverage]
enabled = true

# Optional: Cover group separator to enable hierarchical tree grouping.
# This can be any string, and can also be multiple characters.
# - For example, cover group "a.b.c" with a groupseparator of "." would split into three groups (a, b, and c)
#groupseparator = "."

# To enable formal coverage property tracking, add these settings.
#enableformal = true
# For 'bounded' proof properties, set this to the minimum number of cycles for a bounded pass.
# Any undetermined property with cycles below this value is a fail.
#minimumcycles = 5


Publishing coverage

To publish (ie import) coverage databases, run the simscope-publish-coverage Python script:

  • TSV coverage path
  • Regression name to store under

For example, to import mycov.tsv into Regression daily/123:

> bin/simscope-publish-coverage mycov.tsv --tunnel-config=simscope-tunnel.config --regr daily/123

If successful, you should see a response on the console similar to the following:

coverage ok: /home/pdq/mycov.tsv → daily/123

Alternative: Curl publishing

If you don't want to use Python and Tunnel to publish covearge, you can alternatively use simscope-tunnel-publish.sh to publish via curl (which also requires an API Token).


Overwriting coverage

If you re-run simscope-publish-coverage on an existing Regression, it will overwrite any existing coverage.


Multiple coverage databases

Simscope currently allows one coverage database per regression.

  • Please contact VerOps: it is possible to allow multiple databases, as a feature request.