aboutsummaryrefslogtreecommitdiffstats
path: root/backends/cxxrtl/cxxrtl_vcd.h
Commit message (Collapse)AuthorAgeFilesLines
* cxxrtl: handle multipart signals.whitequark2020-06-111-10/+23
| | | | This avoids losing design visibility when using the `splitnets` pass.
* cxxrtl: disambiguate values/wires and their aliases in debug info.whitequark2020-06-101-5/+12
| | | | | | | With this change, it is easier to see which signals carry state (only wire<>s appear as `reg` in VCD files) and to construct a minimal checkpoint (CXXRTL_WIRE debug items represent the canonical smallest set of state required to fully reconstruct the simulation).
* cxxrtl: fix two buggy split_by functions.whitequark2020-06-091-7/+7
|
* cxxrtl: don't check immutable values for changes in VCD writer.whitequark2020-06-081-4/+10
| | | | | | | | | | | This commit changes the VCD writer such that for all signals that have `debug_item.type == VALUE && debug_item.next == nullptr`, it would only sample the value once. Commit f2d7a187 added more debug information by including constant wires, and decreased the performance of VCD writer proportionally because the constant wires were still repeatedly sampled; this commit eliminates the performance hit.
* cxxrtl: track aliases in VCD writer.whitequark2020-06-081-10/+14
| | | | | | | | | | | This commit changes the VCD writer such that for all signals that share `debug_item.curr`, it would only emit a single VCD identifier, and sample the value once. Commit 9b39c6f7 added redundancy to debug information by including alias wires, and increased the size of VCD files proportionally; this commit eliminates the redundancy from VCD files so that their size is the same as before.
* cxxrtl: only write VCD values that were actually updated.whitequark2020-06-071-10/+30
| | | | | On a representative design (Minerva SoC) this reduces VCD file size by ~20× and runtime by ~3×.
* cxxrtl: add a VCD writer using debug information.whitequark2020-06-071-0/+194