cxxrtl: add (*cxxrtl.{comb,sync}*) annotations on black box outputs.
authorwhitequark <whitequark@whitequark.org>
Tue, 21 Apr 2020 21:48:17 +0000 (21:48 +0000)
committerwhitequark <whitequark@whitequark.org>
Tue, 21 Apr 2020 22:08:36 +0000 (22:08 +0000)
commitd22a8d157da855ca70ff89ead8406dcd629642fb
treed0338bc123d7b09e2573f5c25e050a34c85c4a32
parent164b0746d2111be17bd33b04852070fc4b65e48c
cxxrtl: add (*cxxrtl.{comb,sync}*) annotations on black box outputs.

If the annotations are not used, this commit does not alter semantics
at all, other than removing elision of outputs of black box cells.
(Elision of such outputs is expected to be too rare to have any
noticeable benefit, and the implementation was somewhat of a hack.)

The (* cxxrtl.comb *) annotation alters the semantics of the output
of the black box it is applied to such that, if the black box
converges immediately, no additional delta cycle is necessary to
propagate the computed combinatorial value upwards in hierarchy.

The (* cxxrtl.sync *) annotation alters the semantics of the output
of the black box it is applied to such as to remove any uses of
the black box by the wires connected to this output, and break false
feedback arcs arising from conservative modeling of dependencies of
the black box.

Although currently these attributes are only recognized on black
boxes, if separate compilation is added in the future, it could also
emit and consume them.
backends/cxxrtl/cxxrtl.cc