cxxrtl: split processes into sync and case nodes.
authorwhitequark <whitequark@whitequark.org>
Tue, 22 Dec 2020 00:07:45 +0000 (00:07 +0000)
committerwhitequark <whitequark@whitequark.org>
Tue, 22 Dec 2020 03:48:09 +0000 (03:48 +0000)
commit7378194169e6af370ed467347d5b73d50ee22e4b
tree83fed805ed4e3e7b4ed857c629b9cb461b99925a
parentac988cfac50050314f974dd1c7cc29ba4b46935d
cxxrtl: split processes into sync and case nodes.

Similar to the treatment of black boxes, splitting processes into two
scheduling nodes adds sufficient freedom so that netlists with
well-behaved processes (e.g. those emitted by nMigen) can immediately
converge.

Because processes are not emitted into edge-triggered regions, this
approach has comparable performance to -O5 (without -noproc), which
is substantially slower than -O6.
backends/cxxrtl/cxxrtl_backend.cc