Recognise built-in types (e.g. $_DFF_*)
authorEddie Hung <eddie@fpgeh.com>
Sat, 31 Aug 2019 03:15:09 +0000 (20:15 -0700)
committerEddie Hung <eddie@fpgeh.com>
Sat, 31 Aug 2019 03:15:09 +0000 (20:15 -0700)
backends/aiger/xaiger.cc

index 8c8ff2f7e7ad445c4cfa7beb796e46729150a083..fa6ba0aca4f28b3c25ca93202b9426022c906768 100644 (file)
@@ -263,12 +263,12 @@ struct XAigerWriter
                                }
                        }
                        else {
-                               bool cell_known = inst_module;
+                               bool cell_known = inst_module || cell->known();
                                for (const auto &c : cell->connections()) {
                                        if (c.second.is_fully_const()) continue;
                                        auto port_wire = inst_module ? inst_module->wire(c.first) : nullptr;
-                                       auto is_input = !cell_known || port_wire->port_input;
-                                       auto is_output = !cell_known || port_wire->port_output;
+                                       auto is_input = (port_wire && port_wire->port_input) || !cell_known || cell->input(c.first);
+                                       auto is_output = (port_wire && port_wire->port_output) || !cell_known || cell->output(c.first);
                                        if (!is_input && !is_output)
                                                log_error("Connection '%s' on cell '%s' (type '%s') not recognised!\n", log_id(c.first), log_id(cell), log_id(cell->type));