cxxrtl: unbuffer output wires of toplevel module.

Without unbuffering output wires of, at least, toplevel modules, it
is not possible to have most designs that rely on IO via toplevel
ports (as opposed to using exclusively blackboxes) converge within
one delta cycle. That seriously impairs the performance of CXXRTL.

This commit avoids unbuffering outputs of all modules solely so that
in future, CXXRTL could gain fully separate compilation, and not for
any present technical reason.
This commit is contained in:
whitequark 2020-06-12 00:05:05 +00:00
parent cd7bf115b6
commit 29bd81d662
1 changed files with 1 additions and 1 deletions

View File

@ -2154,7 +2154,7 @@ struct CxxrtlWorker {
for (auto wire : module->wires()) {
if (feedback_wires[wire]) continue;
if (wire->port_output) continue;
if (wire->port_output && !module->get_bool_attribute(ID::top)) continue;
if (wire->name.begins_with("$") && !unbuffer_internal) continue;
if (wire->name.begins_with("\\") && !unbuffer_public) continue;
if (flow.wire_sync_defs.count(wire) > 0) continue;