aboutsummaryrefslogtreecommitdiffstats
path: root/backends/cxxrtl
Commit message (Collapse)AuthorAgeFilesLines
...
* write_cxxrtl: add support for $dlatch and $dlatchsr cells.whitequark2020-04-091-3/+16
| | | | Also, fix codegen for $dffe and $adff.
* write_cxxrtl: add support for $sr cell.whitequark2020-04-091-27/+35
| | | | | | Also, fix the semantics of SET/CLR inputs of the $dffsr cell, and fix the scheduling of async FF cells to consider ARST/SET/CLR->Q as a forward combinatorial arc.
* write_cxxrtl: add support for $slice and $concat cells.whitequark2020-04-091-1/+16
|
* write_cxxrtl: improve writable memory handling.whitequark2020-04-092-65/+87
| | | | | | This commit reduces space and time overhead for writable memories to O(write port count) in both cases; implements handling for write port priorities; and simplifies runtime representation of memories.
* write_cxxrtl: add support for hierarchical designs.whitequark2020-04-091-18/+107
| | | | | | | | | | | Hierarchical design simulations are generally much slower, but this comes with a major increase in flexibility: 1. Since the `flatten` pass currently does not support flattening of designs with processes, this is the only way to simulate such designs with cxxrtl. 2. Support for hierarchy paves way for simulation black boxes, which are necessary for e.g. replacing PHYs with C++ code that integrates with the host system.
* write_cxxrtl: avoid undefined behavior on out-of-bounds memory access.whitequark2020-04-092-46/+78
| | | | | | | | | | After this commit, if NDEBUG is not defined, out-of-bounds accesses cause assertion failures for reads and writes. If NDEBUG is defined, out-of-bounds reads return zeroes, and out-of-bounds writes are ignored. This commit also adds support for memories that start with a non-zero index (`Memory::start_offset` in RTLIL).
* write_cxxrtl: statically schedule comb logic and localize wires.whitequark2020-04-092-68/+368
| | | | | | This results in further massive gains in performance, modest decrease in compile time, and, for designs without feedback arcs, makes it possible to run eval() once per clock edge in certain conditions.
* write_cxxrtl: elide wires for results of comb cells used once.whitequark2020-04-091-35/+359
| | | | | This results in massive gains in performance, equally massive reduction in compile time, and improved readability.
* write_cxxrtl: new backend.whitequark2020-04-093-0/+2010
This commit adds a basic implementation that isn't very performant but implements most of the planned features.