Fix coverage hierarchy being backwards with inlining.

This commit is contained in:
Wilson Snyder 2008-11-04 17:19:59 -05:00
parent ce212722ad
commit 3e8cf26c1a
3 changed files with 18 additions and 1 deletions

View File

@ -11,6 +11,8 @@ indicates the contributor was also the author of the fix; Thanks!
**** Fix 'for' under 'generate-for' causing error; bug38. [Rafael Shirakawa] **** Fix 'for' under 'generate-for' causing error; bug38. [Rafael Shirakawa]
**** Fix coverage hierarchy being backwards with inlining. [Vasu Arasanipalai]
**** Fix GCC 4.3 compile error; bug35. [Lane Brooks] **** Fix GCC 4.3 compile error; bug35. [Lane Brooks]
* Verilator 3.680 2008/10/08 * Verilator 3.680 2008/10/08

View File

@ -2111,6 +2111,21 @@ Verilator makes standard VCD (Value Change Dump) files. They are viewable
with the public domain Dinotrace or GtkWave programs, or any of the many with the public domain Dinotrace or GtkWave programs, or any of the many
commercial offerings. commercial offerings.
=item How do I reduce the size of large waveform (trace) files?
First, instead of calling SpTraceVcdCFile->open at the beginning of time,
delay calling it until the time stamp where you want to tracing to begin.
Likewise you can also call SpTraceVcdCFile->open before the end of time
(perhaps a short period after you detect a verification error.)
Next, add /*verilator tracing_off*/ to any very low level modules you never
want to trace (such as perhaps library cells). Finally, use the
--trace-depth option to limit the depth of tracing, for example
--trace-depth 1 to see only the top level signals.
Also be sure you write your trace files to a local disk, instead of to a
network disk. Network disks are generally far slower.
=item How do I do coverage analysis? =item How do I do coverage analysis?
Verilator supports both block (line) coverage and user inserted functional Verilator supports both block (line) coverage and user inserted functional

View File

@ -249,7 +249,7 @@ private:
virtual void visit(AstCoverDecl* nodep, AstNUser*) { virtual void visit(AstCoverDecl* nodep, AstNUser*) {
// Fix path in coverage statements // Fix path in coverage statements
if (m_cellp) { if (m_cellp) {
nodep->hier(nodep->hier()+"."+m_cellp->prettyName()); nodep->hier(m_cellp->prettyName()+"."+nodep->hier());
} }
nodep->iterateChildren(*this); nodep->iterateChildren(*this);
} }