Added "inout" ports support to read_liberty
authorClifford Wolf <clifford@clifford.at>
Wed, 16 Jul 2014 16:12:46 +0000 (18:12 +0200)
committerClifford Wolf <clifford@clifford.at>
Wed, 16 Jul 2014 16:12:46 +0000 (18:12 +0200)
frontends/liberty/liberty.cc

index 398e7a30ef41bfaab2fbf125cdc690db7a105441..e7af93720e0b006d112da415e73a03e3779f1cdc 100644 (file)
@@ -537,7 +537,7 @@ struct LibertyFrontend : public Frontend {
                        for (auto node : cell->children)
                                if (node->id == "pin" && node->args.size() == 1) {
                                        LibertyAst *dir = node->find("direction");
-                                       if (!dir || (dir->value != "input" && dir->value != "output" && dir->value != "internal"))
+                                       if (!dir || (dir->value != "input" && dir->value != "output" && dir->value != "inout" && dir->value != "internal"))
                                        {
                                                if (!flag_ignore_miss_dir)
                                                {
@@ -570,6 +570,11 @@ struct LibertyFrontend : public Frontend {
 
                                        RTLIL::Wire *wire = module->wires.at(RTLIL::escape_id(node->args.at(0)));
 
+                                       if (dir && dir->value == "inout") {
+                                               wire->port_input = true;
+                                               wire->port_output = true;
+                                       }
+
                                        if (dir && dir->value == "input") {
                                                wire->port_input = true;
                                                continue;