cxxrtl: make alias analysis outlining-aware.
authorwhitequark <whitequark@whitequark.org>
Sun, 13 Dec 2020 15:33:47 +0000 (15:33 +0000)
committerwhitequark <whitequark@whitequark.org>
Tue, 15 Dec 2020 11:02:38 +0000 (11:02 +0000)
commit4d40595d644cfe58425a3de023c712641c429010
tree9c39c6094d45257471784cf537bf94559c28de4a
parentdd6a761db04ca67205ad25d7f5dbb63daa8d9e9d
cxxrtl: make alias analysis outlining-aware.

Before this commit, if a sequence of wires assigned in a chain would
terminate on a cell, none of the wires would get marked as aliases,
and typically all of the public wires would get outlined. The reason
for this behavior is that alias analysis predates outlining and in
fact runs before it.

After this commit, alias analysis runs after outlining and considers
outlined wires valid aliasees. More importantly, if the chained wires
contain any valid aliasees, then all of the wires are aliased to
the one that is topologically deepest.

Aliased wires incur virtually no overhead for the VCD writer, unlike
outlined wires that would otherwise take their place. On Minerva SoC
SRAM, size of the full VCD dump is reduced by ~65%, and throughput
is increased by ~55%.
backends/cxxrtl/cxxrtl_backend.cc