aboutsummaryrefslogtreecommitdiffstats
path: root/backends
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2020-06-12 00:05:05 +0000
committerwhitequark <whitequark@whitequark.org>2020-06-12 00:31:57 +0000
commit29bd81d66239b22ffdbe1f72416624823d712d34 (patch)
treeaace69502e4b4fc58f8b9741dc051036640c020c /backends
parentcd7bf115b668da8e59b07b939ab17771da983983 (diff)
downloadyosys-29bd81d66239b22ffdbe1f72416624823d712d34.tar.gz
yosys-29bd81d66239b22ffdbe1f72416624823d712d34.tar.bz2
yosys-29bd81d66239b22ffdbe1f72416624823d712d34.zip
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.
Diffstat (limited to 'backends')
-rw-r--r--backends/cxxrtl/cxxrtl_backend.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/backends/cxxrtl/cxxrtl_backend.cc b/backends/cxxrtl/cxxrtl_backend.cc
index 0a810b8d1..c6b8bbc47 100644
--- a/backends/cxxrtl/cxxrtl_backend.cc
+++ b/backends/cxxrtl/cxxrtl_backend.cc
@@ -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;