forked from github/verilator
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:
parent
afa8e4c786
commit
8b2666cd04
4
Changes
4
Changes
@ -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
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user