diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-10-24 13:44:35 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-10-24 13:44:35 +0200 |
commit | 2a0f577f839bc43a5045ddf5a2b580bba8cabeab (patch) | |
tree | 11dcfe50c8a777f66a6bf52c620b0fb3959ea6f1 /kernel | |
parent | 4cec1c058d5cef6960e12bc4d5371aa853cb72d9 (diff) | |
download | yosys-2a0f577f839bc43a5045ddf5a2b580bba8cabeab.tar.gz yosys-2a0f577f839bc43a5045ddf5a2b580bba8cabeab.tar.bz2 yosys-2a0f577f839bc43a5045ddf5a2b580bba8cabeab.zip |
Fixed handling of driver-driver conflicts in wreduce
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/modtools.h | 23 | ||||
-rw-r--r-- | kernel/rtlil.cc | 4 |
2 files changed, 26 insertions, 1 deletions
diff --git a/kernel/modtools.h b/kernel/modtools.h index 44c1bde12..1480ec71f 100644 --- a/kernel/modtools.h +++ b/kernel/modtools.h @@ -226,7 +226,7 @@ struct ModIndex : public RTLIL::Monitor auto_reload_module = true; } - ModIndex(RTLIL::Module *_m) : module(_m) + ModIndex(RTLIL::Module *_m) : sigmap(_m), module(_m) { auto_reload_counter = 0; auto_reload_module = true; @@ -274,6 +274,27 @@ struct ModIndex : public RTLIL::Monitor return empty_result_set; return info->ports; } + + void dump_db() + { + log("--- ModIndex Dump ---\n"); + + if (auto_reload_module) { + log("AUTO-RELOAD\n"); + reload_module(); + } + + for (auto &it : database) { + log("BIT %s:\n", log_signal(it.first)); + if (it.second.is_input) + log(" PRIMARY INPUT\n"); + if (it.second.is_output) + log(" PRIMARY OUTPUT\n"); + for (auto &port : it.second.ports) + log(" PORT: %s.%s[%d] (%s)\n", log_id(port.cell), + log_id(port.port), port.offset, log_id(port.cell->type)); + } + } }; struct ModWalker diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc index 7090fe913..8332219ae 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -1448,6 +1448,10 @@ void RTLIL::Module::connect(const RTLIL::SigSig &conn) for (auto mon : design->monitors) mon->notify_connect(this, conn); +#ifndef NDEBUG + log_assert(!conn.first.has_const()); +#endif + if (yosys_xtrace) { log("#X# Connect (SigSig) in %s: %s = %s (%d bits)\n", log_id(this), log_signal(conn.first), log_signal(conn.second), GetSize(conn.first)); log_backtrace("-X- ", yosys_xtrace-1); |