Improve handling of "bus" pins in liberty front-end (some files use bus.pin.direction)
authorClifford Wolf <clifford@clifford.at>
Thu, 15 Feb 2018 16:36:08 +0000 (17:36 +0100)
committerClifford Wolf <clifford@clifford.at>
Thu, 15 Feb 2018 16:36:08 +0000 (17:36 +0100)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
frontends/liberty/liberty.cc

index 5458c60ea4f0e6f6429dc30db310d00e83f102e6..af80c292197aab75d66f31513102643b6c6f5f5e 100644 (file)
@@ -582,6 +582,12 @@ struct LibertyFrontend : public Frontend {
 
                                        LibertyAst *dir = node->find("direction");
 
+                                       if (dir == nullptr) {
+                                               LibertyAst *pin = node->find("pin");
+                                               if (pin != nullptr)
+                                                       dir = pin->find("direction");
+                                       }
+
                                        if (!dir || (dir->value != "input" && dir->value != "output" && dir->value != "inout" && dir->value != "internal"))
                                                log_error("Missing or invalid direction for bus %s on cell %s.\n", node->args.at(0).c_str(), log_id(module->name));