Fix to make trace code allocation dense. (#2250)

This looks like a bits/bytes bug. The affected m_codeInc member
determines how many 32-bit words to allocate in a buffer used to store
previous values of the signal, but this was off by a factor of 8, so
we used to use too much memory.

SweRV VCD tracing speed +6.5% (excluding IO, clang 6.0), due mainly to
reduced D cache misses.
This commit is contained in:
Geza Lore 2020-04-11 16:00:43 +01:00 committed by GitHub
parent afa8e4c786
commit 8b2666cd04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 3 deletions

View File

@ -15,11 +15,11 @@ The contributors that suggested a given feature are shown in []. Thanks!
**** Add error if use SystemC 2.2 and earlier (pre-2011) as is deprecated.
**** Improve FST dump performance, #2244. [Geza Lore]
**** Improve FST dump performance, #2244, #2250. [Geza Lore]
**** Fix build of fast path tracing code to use OPT_FAST, #2245. [Geza Lore]
**** Improve VCD dump performance, ##2246. [Geza Lore]
**** Improve VCD dump performance, #2246, #2250. [Geza Lore]
* Verilator 4.032 2020-04-04

View File

@ -4227,7 +4227,7 @@ public:
m_code = 0;
m_codeInc = ((arrayRange.ranged() ? arrayRange.elements() : 1)
* valuep->dtypep()->widthWords()
* (VL_EDATASIZE / sizeof(uint32_t))); // A code is always 32-bits
* (VL_EDATASIZE / (8*sizeof(uint32_t)))); // A code is always 32-bits
m_varType = varp->varType();
m_declKwd = varp->declKwd();
m_declDirection = varp->declDirection();