Coverage Data Integration
To integrate Coverage Data into Simscope, you need to:
- Create coverage TSV files
- If you have an existing coverage file format, you should build a conversion script first.
- Publish/import coverage into Simscope
Input Format
Field | Type | Description | Example Value |
---|---|---|---|
name | string | Coverage point name | a.b.c.my_coverage_point |
group | string | Parent coverage group (optional) | alpha |
location | string | file/line location (optional) | foo/bar.sv:1234 |
hits | int | Number of times the point was hit | 100 (or 0 indicates not hit) |
bins | int | For 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.