Run formatting on all plugins

Signed-off-by: Tomasz Michalak <tmichalak@antmicro.com>
diff --git a/bank_tiles.h b/bank_tiles.h
index 3197ee0..3ff5220 100644
--- a/bank_tiles.h
+++ b/bank_tiles.h
@@ -20,36 +20,34 @@
 #include "kernel/log.h"
 #include "libs/json11/json11.hpp"
 
-
 USING_YOSYS_NAMESPACE
 // Coordinates of HCLK_IOI tiles associated with a specified bank
 using BankTilesMap = std::unordered_map<int, std::string>;
 
 // Find the part's JSON file with information including the IO Banks
 // and extract the bank tiles.
-inline BankTilesMap get_bank_tiles(const std::string json_file_name) {
-	BankTilesMap bank_tiles;
-	std::ifstream json_file(json_file_name);
-	if (!json_file.good()) {
-		log_cmd_error("Can't open JSON file %s", json_file_name.c_str());
-	}
-	std::string json_str((std::istreambuf_iterator<char>(json_file)),
-			std::istreambuf_iterator<char>());
-	std::string error;
-	auto json = json11::Json::parse(json_str, error);
-	if (!error.empty()) {
-		log_cmd_error("%s\n", error.c_str());
-	}
-	auto json_objects = json.object_items();
-	auto iobanks = json_objects.find("iobanks");
-	if (iobanks == json_objects.end()) {
-		log_cmd_error("IO Bank information missing in the part's json: %s\n", json_file_name.c_str());
-	}
+inline BankTilesMap get_bank_tiles(const std::string json_file_name)
+{
+    BankTilesMap bank_tiles;
+    std::ifstream json_file(json_file_name);
+    if (!json_file.good()) {
+        log_cmd_error("Can't open JSON file %s", json_file_name.c_str());
+    }
+    std::string json_str((std::istreambuf_iterator<char>(json_file)), std::istreambuf_iterator<char>());
+    std::string error;
+    auto json = json11::Json::parse(json_str, error);
+    if (!error.empty()) {
+        log_cmd_error("%s\n", error.c_str());
+    }
+    auto json_objects = json.object_items();
+    auto iobanks = json_objects.find("iobanks");
+    if (iobanks == json_objects.end()) {
+        log_cmd_error("IO Bank information missing in the part's json: %s\n", json_file_name.c_str());
+    }
 
-	for (auto iobank : iobanks->second.object_items()) {
-		bank_tiles.emplace(std::atoi(iobank.first.c_str()), iobank.second.string_value());
-	}
+    for (auto iobank : iobanks->second.object_items()) {
+        bank_tiles.emplace(std::atoi(iobank.first.c_str()), iobank.second.string_value());
+    }
 
-	return bank_tiles;
+    return bank_tiles;
 }
-
diff --git a/design_introspection-plugin/design_introspection.cc b/design_introspection-plugin/design_introspection.cc
index 64fdbbc..4bd348d 100644
--- a/design_introspection-plugin/design_introspection.cc
+++ b/design_introspection-plugin/design_introspection.cc
@@ -18,22 +18,21 @@
  *
  */
 
-#include "get_nets.h"
-#include "get_ports.h"
 #include "get_cells.h"
+#include "get_nets.h"
 #include "get_pins.h"
+#include "get_ports.h"
 
 USING_YOSYS_NAMESPACE
 
 PRIVATE_NAMESPACE_BEGIN
 
 struct DesignIntrospection {
-    DesignIntrospection(){}
+    DesignIntrospection() {}
     GetNets get_nets_cmd;
     GetPorts get_ports_cmd;
     GetCells get_cells_cmd;
     GetPins get_pins_cmd;
 } DesignIntrospection;
 
-
 PRIVATE_NAMESPACE_END
diff --git a/design_introspection-plugin/get_cells.cc b/design_introspection-plugin/get_cells.cc
index 937545d..d0e6ce0 100644
--- a/design_introspection-plugin/get_cells.cc
+++ b/design_introspection-plugin/get_cells.cc
@@ -25,24 +25,24 @@
 
 std::string GetCells::SelectionType() { return "c"; }
 
-GetCells::SelectionObjects GetCells::ExtractSelection(RTLIL::Design* design, const CommandArgs& args) {
+GetCells::SelectionObjects GetCells::ExtractSelection(RTLIL::Design *design, const CommandArgs &args)
+{
     SelectionObjects selected_objects;
     for (auto module : design->selected_modules()) {
-	for (auto cell : module->selected_cells()) {
-	    if (args.filters.size() > 0) {
-		Filter filter = args.filters.at(0);
-		std::string attr_value = cell->get_string_attribute(
-		    RTLIL::IdString(RTLIL::escape_id(filter.first)));
-		if (attr_value.compare(filter.second)) {
-		    continue;
-		}
-	    }
-	    std::string object_name(RTLIL::unescape_id(cell->name));
-	    selected_objects.push_back(object_name);
-	}
+        for (auto cell : module->selected_cells()) {
+            if (args.filters.size() > 0) {
+                Filter filter = args.filters.at(0);
+                std::string attr_value = cell->get_string_attribute(RTLIL::IdString(RTLIL::escape_id(filter.first)));
+                if (attr_value.compare(filter.second)) {
+                    continue;
+                }
+            }
+            std::string object_name(RTLIL::unescape_id(cell->name));
+            selected_objects.push_back(object_name);
+        }
     }
     if (selected_objects.size() == 0 and !args.is_quiet) {
-	log_warning("Couldn't find matching cell.\n");
+        log_warning("Couldn't find matching cell.\n");
     }
     return selected_objects;
 }
diff --git a/design_introspection-plugin/get_cells.h b/design_introspection-plugin/get_cells.h
index 205d50b..c9ba621 100644
--- a/design_introspection-plugin/get_cells.h
+++ b/design_introspection-plugin/get_cells.h
@@ -29,8 +29,7 @@
 
     std::string TypeName() override;
     std::string SelectionType() override;
-    SelectionObjects ExtractSelection(RTLIL::Design* design,
-                          const CommandArgs& args) override;
+    SelectionObjects ExtractSelection(RTLIL::Design *design, const CommandArgs &args) override;
 };
 
-#endif  // GET_CELLS_H_
+#endif // GET_CELLS_H_
diff --git a/design_introspection-plugin/get_cmd.cc b/design_introspection-plugin/get_cmd.cc
index 4b54ded..66401a6 100644
--- a/design_introspection-plugin/get_cmd.cc
+++ b/design_introspection-plugin/get_cmd.cc
@@ -2,7 +2,8 @@
 
 USING_YOSYS_NAMESPACE
 
-void GetCmd::help() {
+void GetCmd::help()
+{
     //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
     log("\n");
     log("   get_%ss [-quiet] [-filter filter_expression] "
@@ -30,106 +31,94 @@
     log("\n");
 }
 
-void GetCmd::ExecuteSelection(RTLIL::Design* design, const CommandArgs& args) {
+void GetCmd::ExecuteSelection(RTLIL::Design *design, const CommandArgs &args)
+{
     std::vector<std::string> selection_args;
     // Add name of top module to selection string
-    std::transform(args.selection_objects.begin(), args.selection_objects.end(),
-                   std::back_inserter(selection_args),
-                   [&](const std::string& obj) {
-	               return RTLIL::unescape_id(design->top_module()->name) +
-	                      "/" + SelectionType() + ":" + obj;
-                   });
+    std::transform(args.selection_objects.begin(), args.selection_objects.end(), std::back_inserter(selection_args),
+                   [&](const std::string &obj) { return RTLIL::unescape_id(design->top_module()->name) + "/" + SelectionType() + ":" + obj; });
     extra_args(selection_args, 0, design);
     if (design->selected_modules().empty()) {
-	if (!args.is_quiet) {
-	    log_warning("Specified %s not found in design\n",
-	                TypeName().c_str());
-	}
+        if (!args.is_quiet) {
+            log_warning("Specified %s not found in design\n", TypeName().c_str());
+        }
     }
 }
 
-void GetCmd::PackToTcl(const SelectionObjects& objects) {
-    Tcl_Obj* tcl_result;
+void GetCmd::PackToTcl(const SelectionObjects &objects)
+{
+    Tcl_Obj *tcl_result;
     if (objects.size() == 1) {
-	tcl_result = Tcl_NewStringObj(objects.at(0).c_str(), -1);
+        tcl_result = Tcl_NewStringObj(objects.at(0).c_str(), -1);
     } else {
-	tcl_result = Tcl_NewListObj(0, NULL);
-	for (const auto& object : objects) {
-	    Tcl_Obj* value_obj = Tcl_NewStringObj(object.c_str(), -1);
-	    Tcl_ListObjAppendElement(yosys_get_tcl_interp(), tcl_result,
-	                             value_obj);
-	}
+        tcl_result = Tcl_NewListObj(0, NULL);
+        for (const auto &object : objects) {
+            Tcl_Obj *value_obj = Tcl_NewStringObj(object.c_str(), -1);
+            Tcl_ListObjAppendElement(yosys_get_tcl_interp(), tcl_result, value_obj);
+        }
     }
     Tcl_SetObjResult(yosys_get_tcl_interp(), tcl_result);
 }
 
-GetCmd::CommandArgs GetCmd::ParseCommand(const std::vector<std::string>& args) {
-    CommandArgs parsed_args{.filters = Filters(),
-                            .is_quiet = false,
-                            .selection_objects = SelectionObjects()};
+GetCmd::CommandArgs GetCmd::ParseCommand(const std::vector<std::string> &args)
+{
+    CommandArgs parsed_args{.filters = Filters(), .is_quiet = false, .selection_objects = SelectionObjects()};
     size_t argidx(0);
     for (argidx = 1; argidx < args.size(); argidx++) {
-	std::string arg = args[argidx];
-	if (arg == "-quiet") {
-	    parsed_args.is_quiet = true;
-	    continue;
-	}
+        std::string arg = args[argidx];
+        if (arg == "-quiet") {
+            parsed_args.is_quiet = true;
+            continue;
+        }
 
-	if (arg == "-filter" and argidx + 1 < args.size()) {
-	    std::string filter_arg = args[++argidx];
+        if (arg == "-filter" and argidx + 1 < args.size()) {
+            std::string filter_arg = args[++argidx];
 
-	    // Remove spaces
-	    filter_arg.erase(
-	        std::remove_if(filter_arg.begin(), filter_arg.end(), isspace),
-	        filter_arg.end());
+            // Remove spaces
+            filter_arg.erase(std::remove_if(filter_arg.begin(), filter_arg.end(), isspace), filter_arg.end());
 
-	    // Parse filters
-	    // TODO Add support for multiple condition expression
-	    // Currently only a single == is supported
-	    std::regex filter_attr_regex("(\\w+\\s?==\\s?\\w+)([(||)(&&)]*)");
-	    std::regex_token_iterator<std::string::iterator> regex_end;
-	    std::regex_token_iterator<std::string::iterator> matches(
-	        filter_arg.begin(), filter_arg.end(), filter_attr_regex, 1);
-	    if (matches == regex_end) {
-		log_warning(
-		    "Currently -filter switch supports only a single "
-		    "'equal(==)' condition expression, the rest will be "
-		    "ignored\n");
-	    }
+            // Parse filters
+            // TODO Add support for multiple condition expression
+            // Currently only a single == is supported
+            std::regex filter_attr_regex("(\\w+\\s?==\\s?\\w+)([(||)(&&)]*)");
+            std::regex_token_iterator<std::string::iterator> regex_end;
+            std::regex_token_iterator<std::string::iterator> matches(filter_arg.begin(), filter_arg.end(), filter_attr_regex, 1);
+            if (matches == regex_end) {
+                log_warning("Currently -filter switch supports only a single "
+                            "'equal(==)' condition expression, the rest will be "
+                            "ignored\n");
+            }
 
-	    while (matches != regex_end) {
-		std::string filter(*matches++);
-		auto separator = filter.find("==");
-		if (separator == std::string::npos) {
-		    log_cmd_error("Incorrect filter expression: %s\n",
-		                  args[argidx].c_str());
-		}
-		parsed_args.filters.emplace_back(filter.substr(0, separator),
-		                                 filter.substr(separator + 2));
-	    }
-	    if (parsed_args.filters.size() > 1) {
-		log_warning(
-		    "Currently -filter switch supports only a single "
-		    "'equal(==)' condition expression, the rest will be "
-		    "ignored\n");
-	    }
-	    continue;
-	}
+            while (matches != regex_end) {
+                std::string filter(*matches++);
+                auto separator = filter.find("==");
+                if (separator == std::string::npos) {
+                    log_cmd_error("Incorrect filter expression: %s\n", args[argidx].c_str());
+                }
+                parsed_args.filters.emplace_back(filter.substr(0, separator), filter.substr(separator + 2));
+            }
+            if (parsed_args.filters.size() > 1) {
+                log_warning("Currently -filter switch supports only a single "
+                            "'equal(==)' condition expression, the rest will be "
+                            "ignored\n");
+            }
+            continue;
+        }
 
-	if (arg.size() > 0 and arg[0] == '-') {
-	    log_cmd_error("Unknown option %s.\n", arg.c_str());
-	}
+        if (arg.size() > 0 and arg[0] == '-') {
+            log_cmd_error("Unknown option %s.\n", arg.c_str());
+        }
 
-	break;
+        break;
     }
-    std::copy(args.begin() + argidx, args.end(),
-              std::back_inserter(parsed_args.selection_objects));
+    std::copy(args.begin() + argidx, args.end(), std::back_inserter(parsed_args.selection_objects));
     return parsed_args;
 }
 
-void GetCmd::execute(std::vector<std::string> args, RTLIL::Design* design) {
+void GetCmd::execute(std::vector<std::string> args, RTLIL::Design *design)
+{
     if (design->top_module() == nullptr) {
-	log_cmd_error("No top module detected\n");
+        log_cmd_error("No top module detected\n");
     }
 
     CommandArgs parsed_args(ParseCommand(args));
diff --git a/design_introspection-plugin/get_cmd.h b/design_introspection-plugin/get_cmd.h
index 983a50d..5d1a120 100644
--- a/design_introspection-plugin/get_cmd.h
+++ b/design_introspection-plugin/get_cmd.h
@@ -29,27 +29,25 @@
     using Filters = std::vector<Filter>;
     using SelectionObjects = std::vector<std::string>;
     struct CommandArgs {
-	Filters filters;
-	bool is_quiet;
-	SelectionObjects selection_objects;
+        Filters filters;
+        bool is_quiet;
+        SelectionObjects selection_objects;
     };
 
-    GetCmd(const std::string& name, const std::string& description)
-        : Pass(name, description) {}
+    GetCmd(const std::string &name, const std::string &description) : Pass(name, description) {}
 
     void help() override;
-    void execute(std::vector<std::string> args, RTLIL::Design* design) override;
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override;
 
-   protected:
-    CommandArgs ParseCommand(const std::vector<std::string>& args);
-    void PackToTcl(const SelectionObjects& objects);
+  protected:
+    CommandArgs ParseCommand(const std::vector<std::string> &args);
+    void PackToTcl(const SelectionObjects &objects);
 
-   private:
+  private:
     virtual std::string TypeName() = 0;
     virtual std::string SelectionType() = 0;
-    virtual SelectionObjects ExtractSelection(RTLIL::Design* design, const CommandArgs& args) = 0;
-    virtual void ExecuteSelection(RTLIL::Design* design,
-                                  const CommandArgs& args);
+    virtual SelectionObjects ExtractSelection(RTLIL::Design *design, const CommandArgs &args) = 0;
+    virtual void ExecuteSelection(RTLIL::Design *design, const CommandArgs &args);
 };
 
-#endif  // GET_CMD_H_
+#endif // GET_CMD_H_
diff --git a/design_introspection-plugin/get_nets.cc b/design_introspection-plugin/get_nets.cc
index db5d375..09e5ed4 100644
--- a/design_introspection-plugin/get_nets.cc
+++ b/design_introspection-plugin/get_nets.cc
@@ -25,25 +25,24 @@
 
 std::string GetNets::SelectionType() { return "w"; }
 
-GetNets::SelectionObjects GetNets::ExtractSelection(RTLIL::Design* design,
-                                                    const CommandArgs& args) {
+GetNets::SelectionObjects GetNets::ExtractSelection(RTLIL::Design *design, const CommandArgs &args)
+{
     SelectionObjects selected_objects;
     for (auto module : design->selected_modules()) {
-	for (auto wire : module->selected_wires()) {
-	    if (args.filters.size() > 0) {
-		Filter filter = args.filters.at(0);
-		std::string attr_value = wire->get_string_attribute(
-		    RTLIL::IdString(RTLIL::escape_id(filter.first)));
-		if (attr_value.compare(filter.second)) {
-		    continue;
-		}
-	    }
-	    std::string object_name(RTLIL::unescape_id(wire->name));
-	    selected_objects.push_back(object_name);
-	}
+        for (auto wire : module->selected_wires()) {
+            if (args.filters.size() > 0) {
+                Filter filter = args.filters.at(0);
+                std::string attr_value = wire->get_string_attribute(RTLIL::IdString(RTLIL::escape_id(filter.first)));
+                if (attr_value.compare(filter.second)) {
+                    continue;
+                }
+            }
+            std::string object_name(RTLIL::unescape_id(wire->name));
+            selected_objects.push_back(object_name);
+        }
     }
     if (selected_objects.size() == 0 and !args.is_quiet) {
-	log_warning("Couldn't find matching net.\n");
+        log_warning("Couldn't find matching net.\n");
     }
     return selected_objects;
 }
diff --git a/design_introspection-plugin/get_nets.h b/design_introspection-plugin/get_nets.h
index 11f7502..d9f5850 100644
--- a/design_introspection-plugin/get_nets.h
+++ b/design_introspection-plugin/get_nets.h
@@ -29,8 +29,7 @@
 
     std::string TypeName() override;
     std::string SelectionType() override;
-    SelectionObjects ExtractSelection(RTLIL::Design* design,
-                                      const CommandArgs& args) override;
+    SelectionObjects ExtractSelection(RTLIL::Design *design, const CommandArgs &args) override;
 };
 
-#endif  // GET_NETS_H_
+#endif // GET_NETS_H_
diff --git a/design_introspection-plugin/get_pins.cc b/design_introspection-plugin/get_pins.cc
index d39f6bc..e94e3ae 100644
--- a/design_introspection-plugin/get_pins.cc
+++ b/design_introspection-plugin/get_pins.cc
@@ -25,57 +25,50 @@
 
 std::string GetPins::SelectionType() { return "c"; }
 
-void GetPins::ExecuteSelection(RTLIL::Design* design, const CommandArgs& args) {
+void GetPins::ExecuteSelection(RTLIL::Design *design, const CommandArgs &args)
+{
     (void)design;
     (void)args;
 }
 
-GetPins::SelectionObjects GetPins::ExtractSelection(RTLIL::Design* design,
-                                                    const CommandArgs& args) {
+GetPins::SelectionObjects GetPins::ExtractSelection(RTLIL::Design *design, const CommandArgs &args)
+{
     SelectionObjects selected_objects;
     for (auto obj : args.selection_objects) {
-	size_t port_separator = obj.find_last_of("/");
-	std::string cell = obj.substr(0, port_separator);
-	std::string port = obj.substr(port_separator + 1);
-	SelectionObjects selection{
-	    RTLIL::unescape_id(design->top_module()->name) + "/" +
-	    SelectionType() + ":" + cell};
-	extra_args(selection, 0, design);
-	ExtractSingleSelection(selected_objects, design, port, args);
+        size_t port_separator = obj.find_last_of("/");
+        std::string cell = obj.substr(0, port_separator);
+        std::string port = obj.substr(port_separator + 1);
+        SelectionObjects selection{RTLIL::unescape_id(design->top_module()->name) + "/" + SelectionType() + ":" + cell};
+        extra_args(selection, 0, design);
+        ExtractSingleSelection(selected_objects, design, port, args);
     }
     if (selected_objects.size() == 0 and !args.is_quiet) {
-	log_warning("Couldn't find matching pin.\n");
+        log_warning("Couldn't find matching pin.\n");
     }
     return selected_objects;
 }
 
-void GetPins::ExtractSingleSelection(SelectionObjects& objects,
-                                     RTLIL::Design* design,
-                                     const std::string& port_name,
-                                     const CommandArgs& args) {
+void GetPins::ExtractSingleSelection(SelectionObjects &objects, RTLIL::Design *design, const std::string &port_name, const CommandArgs &args)
+{
     if (design->selected_modules().empty()) {
-	if (!args.is_quiet) {
-	    log_warning("Specified %s not found in design\n",
-	                TypeName().c_str());
-	}
+        if (!args.is_quiet) {
+            log_warning("Specified %s not found in design\n", TypeName().c_str());
+        }
     }
     for (auto module : design->selected_modules()) {
-	for (auto cell : module->selected_cells()) {
-	    if (!cell->hasPort(RTLIL::escape_id(port_name))) {
-		continue;
-	    }
-	    if (args.filters.size() > 0) {
-		Filter filter = args.filters.at(0);
-		std::string attr_value = cell->get_string_attribute(
-		    RTLIL::IdString(RTLIL::escape_id(filter.first)));
-		if (attr_value.compare(filter.second)) {
-		    continue;
-		}
-	    }
-	    std::string pin_name(RTLIL::unescape_id(cell->name) + "/" +
-	                         port_name);
-	    objects.push_back(pin_name);
-	}
+        for (auto cell : module->selected_cells()) {
+            if (!cell->hasPort(RTLIL::escape_id(port_name))) {
+                continue;
+            }
+            if (args.filters.size() > 0) {
+                Filter filter = args.filters.at(0);
+                std::string attr_value = cell->get_string_attribute(RTLIL::IdString(RTLIL::escape_id(filter.first)));
+                if (attr_value.compare(filter.second)) {
+                    continue;
+                }
+            }
+            std::string pin_name(RTLIL::unescape_id(cell->name) + "/" + port_name);
+            objects.push_back(pin_name);
+        }
     }
 }
-
diff --git a/design_introspection-plugin/get_pins.h b/design_introspection-plugin/get_pins.h
index f7ebe14..5d2cde0 100644
--- a/design_introspection-plugin/get_pins.h
+++ b/design_introspection-plugin/get_pins.h
@@ -27,17 +27,12 @@
 struct GetPins : public GetCmd {
     GetPins() : GetCmd("get_pins", "Print matching pins") {}
 
-   private:
+  private:
     std::string TypeName() override;
     std::string SelectionType() override;
-    SelectionObjects ExtractSelection(RTLIL::Design* design,
-                                      const CommandArgs& args) override;
-    void ExecuteSelection(RTLIL::Design* design,
-                          const CommandArgs& args) override;
-    void ExtractSingleSelection(SelectionObjects& objects,
-                                RTLIL::Design* design,
-                                const std::string& port_name,
-                                const CommandArgs& args);
+    SelectionObjects ExtractSelection(RTLIL::Design *design, const CommandArgs &args) override;
+    void ExecuteSelection(RTLIL::Design *design, const CommandArgs &args) override;
+    void ExtractSingleSelection(SelectionObjects &objects, RTLIL::Design *design, const std::string &port_name, const CommandArgs &args);
 };
 
-#endif  // GET_PINS_H_
+#endif // GET_PINS_H_
diff --git a/design_introspection-plugin/get_ports.cc b/design_introspection-plugin/get_ports.cc
index ef29b95..042ada7 100644
--- a/design_introspection-plugin/get_ports.cc
+++ b/design_introspection-plugin/get_ports.cc
@@ -25,33 +25,29 @@
 
 std::string GetPorts::SelectionType() { return "x"; }
 
-void GetPorts::ExecuteSelection([[gnu::unused]] RTLIL::Design* design,
-                               [[gnu::unused]] const CommandArgs& args) {
-}
+void GetPorts::ExecuteSelection([[gnu::unused]] RTLIL::Design *design, [[gnu::unused]] const CommandArgs &args) {}
 
-GetPorts::SelectionObjects GetPorts::ExtractSelection(RTLIL::Design* design,
-                                                      const CommandArgs& args) {
+GetPorts::SelectionObjects GetPorts::ExtractSelection(RTLIL::Design *design, const CommandArgs &args)
+{
     std::string port_name = args.selection_objects.at(0);
     std::string port_str(port_name.size(), '\0');
     int bit(0);
     if (!sscanf(port_name.c_str(), "%[^[][%d]", &port_str[0], &bit)) {
-	log_error("Couldn't find port %s\n", port_name.c_str());
+        log_error("Couldn't find port %s\n", port_name.c_str());
     }
 
     port_str.resize(strlen(port_str.c_str()));
     RTLIL::IdString port_id(RTLIL::escape_id(port_str));
     SelectionObjects objects;
     if (auto wire = design->top_module()->wire(port_id)) {
-	if (wire->port_input || wire->port_output) {
-	    if (bit >= wire->start_offset &&
-	        bit < wire->start_offset + wire->width) {
-		objects.push_back(port_name);
-	    }
-	}
+        if (wire->port_input || wire->port_output) {
+            if (bit >= wire->start_offset && bit < wire->start_offset + wire->width) {
+                objects.push_back(port_name);
+            }
+        }
     }
     if (objects.size() == 0 and !args.is_quiet) {
-	log_warning("Couldn't find port matching %s\n", port_name.c_str());
+        log_warning("Couldn't find port matching %s\n", port_name.c_str());
     }
     return objects;
 }
-
diff --git a/design_introspection-plugin/get_ports.h b/design_introspection-plugin/get_ports.h
index 89ba49a..b1ccb0b 100644
--- a/design_introspection-plugin/get_ports.h
+++ b/design_introspection-plugin/get_ports.h
@@ -27,14 +27,12 @@
 struct GetPorts : public GetCmd {
     GetPorts() : GetCmd("get_ports", "Print matching ports") {}
 
-   private:
+  private:
     std::string TypeName() override;
     std::string SelectionType() override;
     /* void execute(std::vector<std::string> args, RTLIL::Design* design) override; */
-    SelectionObjects ExtractSelection(RTLIL::Design* design,
-                                      const CommandArgs& args) override;
-    void ExecuteSelection(RTLIL::Design* design,
-                          const CommandArgs& args) override;
+    SelectionObjects ExtractSelection(RTLIL::Design *design, const CommandArgs &args) override;
+    void ExecuteSelection(RTLIL::Design *design, const CommandArgs &args) override;
 };
 
-#endif  // GET_PORTS_H_
+#endif // GET_PORTS_H_
diff --git a/fasm-plugin/fasm.cc b/fasm-plugin/fasm.cc
index 4ddfdb2..5ab4c1a 100644
--- a/fasm-plugin/fasm.cc
+++ b/fasm-plugin/fasm.cc
@@ -24,62 +24,65 @@
  *   annotations on the design cells.
  */
 
+#include "../bank_tiles.h"
+#include "kernel/log.h"
 #include "kernel/register.h"
 #include "kernel/rtlil.h"
-#include "kernel/log.h"
-#include "../bank_tiles.h"
 
 USING_YOSYS_NAMESPACE
 PRIVATE_NAMESPACE_BEGIN
 
 struct WriteFasm : public Backend {
-	WriteFasm() : Backend("fasm", "Write out FASM features") {}
+    WriteFasm() : Backend("fasm", "Write out FASM features") {}
 
+    void help() override
+    {
+        //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+        log("\n");
+        log("    write_fasm -part_json <part_json_filename> <filename>\n");
+        log("\n");
+        log("Write out a file with vref FASM features.\n");
+        log("\n");
+    }
 
-	void help() override {
-		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
-		log("\n");
-		log("    write_fasm -part_json <part_json_filename> <filename>\n");
-		log("\n");
-		log("Write out a file with vref FASM features.\n");
-		log("\n");
-	}
+    void execute(std::ostream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) override
+    {
+        size_t argidx = 1;
+        std::string part_json;
+        if (args[argidx] == "-part_json" && argidx + 1 < args.size()) {
+            part_json = args[++argidx];
+            argidx++;
+        }
+        extra_args(f, filename, args, argidx);
+        extract_fasm_features(f, design, part_json);
+    }
 
-	void execute(std::ostream *&f, std::string filename,  std::vector<std::string> args, RTLIL::Design *design) override {
-		size_t argidx = 1;
-		std::string part_json;
-		if (args[argidx] == "-part_json" && argidx + 1 < args.size()) {
-			part_json = args[++argidx];
-			argidx++;
-		}
-		extra_args(f, filename, args, argidx);
-		extract_fasm_features(f, design, part_json);
-	}
-
-	void extract_fasm_features(std::ostream *&f, RTLIL::Design* design, const std::string& part_json) {
-		RTLIL::Module* top_module(design->top_module());
-		if (top_module == nullptr) {
-			log_cmd_error("%s: No top module detected.\n", pass_name.c_str());
-		}
-		auto bank_tiles = get_bank_tiles(part_json);
-		// Generate a fasm feature associated with the INTERNAL_VREF value per bank
-		// e.g. VREF value of 0.675 for bank 34 is associated with tile HCLK_IOI3_X113Y26
-		// hence we need to emit the following fasm feature: HCLK_IOI3_X113Y26.VREF.V_675_MV
-		for (auto cell : top_module->cells()) {
-			if (!cell->hasParam(ID(FASM_EXTRA))) continue;
-			if (cell->getParam(ID(FASM_EXTRA)) == RTLIL::Const("INTERNAL_VREF")) {
-				if (bank_tiles.size() == 0) {
-					log_cmd_error("%s: No bank tiles available on the target part.\n", pass_name.c_str());
-				}
-				int bank_number(cell->getParam(ID(NUMBER)).as_int());
-				if (bank_tiles.count(bank_number) == 0) {
-					log_cmd_error("%s: No IO bank number %d on the target part.\n", pass_name.c_str(), bank_number);
-				}
-				int bank_vref(cell->getParam(ID(INTERNAL_VREF)).as_int());
-				*f << "HCLK_IOI3_" << bank_tiles[bank_number] <<".VREF.V_" << bank_vref << "_MV\n";
-			}
-		}
-	}
+    void extract_fasm_features(std::ostream *&f, RTLIL::Design *design, const std::string &part_json)
+    {
+        RTLIL::Module *top_module(design->top_module());
+        if (top_module == nullptr) {
+            log_cmd_error("%s: No top module detected.\n", pass_name.c_str());
+        }
+        auto bank_tiles = get_bank_tiles(part_json);
+        // Generate a fasm feature associated with the INTERNAL_VREF value per bank
+        // e.g. VREF value of 0.675 for bank 34 is associated with tile HCLK_IOI3_X113Y26
+        // hence we need to emit the following fasm feature: HCLK_IOI3_X113Y26.VREF.V_675_MV
+        for (auto cell : top_module->cells()) {
+            if (!cell->hasParam(ID(FASM_EXTRA)))
+                continue;
+            if (cell->getParam(ID(FASM_EXTRA)) == RTLIL::Const("INTERNAL_VREF")) {
+                if (bank_tiles.size() == 0) {
+                    log_cmd_error("%s: No bank tiles available on the target part.\n", pass_name.c_str());
+                }
+                int bank_number(cell->getParam(ID(NUMBER)).as_int());
+                if (bank_tiles.count(bank_number) == 0) {
+                    log_cmd_error("%s: No IO bank number %d on the target part.\n", pass_name.c_str(), bank_number);
+                }
+                int bank_vref(cell->getParam(ID(INTERNAL_VREF)).as_int());
+                *f << "HCLK_IOI3_" << bank_tiles[bank_number] << ".VREF.V_" << bank_vref << "_MV\n";
+            }
+        }
+    }
 } WriteFasm;
 
 PRIVATE_NAMESPACE_END
diff --git a/get_count-plugin/get_count.cc b/get_count-plugin/get_count.cc
index b78f9b8..5faff16 100644
--- a/get_count-plugin/get_count.cc
+++ b/get_count-plugin/get_count.cc
@@ -30,18 +30,12 @@
 
 struct GetCount : public Pass {
 
-    enum class ObjectType {
-        NONE,
-        MODULE,
-        CELL,
-        WIRE
-    };
+    enum class ObjectType { NONE, MODULE, CELL, WIRE };
 
-    GetCount () :
-        Pass("get_count", "Returns count of various selected object types to the TCL interpreter") {
-        }    
+    GetCount() : Pass("get_count", "Returns count of various selected object types to the TCL interpreter") {}
 
-    void help() YS_OVERRIDE {
+    void help() YS_OVERRIDE
+    {
         log("\n");
         log("    get_count <options> [selection]");
         log("\n");
@@ -59,8 +53,9 @@
         log("        Returns the count of wires in selection\n");
         log("\n");
     }
-    
-    void execute(std::vector<std::string> a_Args, RTLIL::Design* a_Design) YS_OVERRIDE {
+
+    void execute(std::vector<std::string> a_Args, RTLIL::Design *a_Design) YS_OVERRIDE
+    {
 
         // Parse args
         ObjectType type = ObjectType::NONE;
@@ -70,29 +65,25 @@
 
         if (a_Args[1] == "-modules") {
             type = ObjectType::MODULE;
-        }
-        else if (a_Args[1] == "-cells") {
+        } else if (a_Args[1] == "-cells") {
             type = ObjectType::CELL;
-        }
-        else if (a_Args[1] == "-wires") {
+        } else if (a_Args[1] == "-wires") {
             type = ObjectType::WIRE;
-        }
-        else if (a_Args[1][0] == '-') {
+        } else if (a_Args[1][0] == '-') {
             log_error("Invalid argument '%s'!\n", a_Args[1].c_str());
-        }
-        else {
+        } else {
             log_error("Object type not specified!\n");
         }
 
         extra_args(a_Args, 2, a_Design);
 
         // Get the TCL interpreter
-        Tcl_Interp* tclInterp = yosys_get_tcl_interp();
+        Tcl_Interp *tclInterp = yosys_get_tcl_interp();
 
         // Count objects
         size_t moduleCount = 0;
-        size_t cellCount   = 0;
-        size_t wireCount   = 0;
+        size_t cellCount = 0;
+        size_t wireCount = 0;
 
         moduleCount += a_Design->selected_modules().size();
         for (auto module : a_Design->selected_modules()) {
@@ -101,8 +92,7 @@
         }
 
         size_t count = 0;
-        switch (type)
-        {
+        switch (type) {
         case ObjectType::MODULE:
             count = moduleCount;
             break;
@@ -119,7 +109,7 @@
         // Return the value as string to the TCL interpreter
         std::string value = std::to_string(count);
 
-        Tcl_Obj* tclStr = Tcl_NewStringObj(value.c_str(), value.size());
+        Tcl_Obj *tclStr = Tcl_NewStringObj(value.c_str(), value.size());
         Tcl_SetObjResult(tclInterp, tclStr);
     }
 
diff --git a/integrateinv-plugin/integrateinv.cc b/integrateinv-plugin/integrateinv.cc
index 4a4f693..f3d5690 100644
--- a/integrateinv-plugin/integrateinv.cc
+++ b/integrateinv-plugin/integrateinv.cc
@@ -27,315 +27,315 @@
 
 /// A structure representing a pin
 struct Pin {
-  RTLIL::Cell *cell;    /// Cell pointer
-  RTLIL::IdString port; /// Cell port name
-  int bit;              /// Port bit index
+    RTLIL::Cell *cell;    /// Cell pointer
+    RTLIL::IdString port; /// Cell port name
+    int bit;              /// Port bit index
 
-  Pin(RTLIL::Cell *_cell, const RTLIL::IdString &_port, int _bit = 0)
-      : cell(_cell), port(_port), bit(_bit) {}
+    Pin(RTLIL::Cell *_cell, const RTLIL::IdString &_port, int _bit = 0) : cell(_cell), port(_port), bit(_bit) {}
 
-  Pin(const Pin &ref) = default;
+    Pin(const Pin &ref) = default;
 
-  unsigned int hash() const {
-    if (cell == nullptr) {
-      return mkhash_add(port.hash(), bit);
-    } else {
-      return mkhash_add(mkhash(cell->hash(), port.hash()), bit);
-    }
-  };
+    unsigned int hash() const
+    {
+        if (cell == nullptr) {
+            return mkhash_add(port.hash(), bit);
+        } else {
+            return mkhash_add(mkhash(cell->hash(), port.hash()), bit);
+        }
+    };
 };
 
-bool operator==(const Pin &lhs, const Pin &rhs) {
-  return (lhs.cell == rhs.cell) && (lhs.port == rhs.port) &&
-         (lhs.bit == rhs.bit);
-}
+bool operator==(const Pin &lhs, const Pin &rhs) { return (lhs.cell == rhs.cell) && (lhs.port == rhs.port) && (lhs.bit == rhs.bit); }
 
 struct IntegrateInv : public Pass {
 
-  /// Temporary SigBit to SigBit helper map.
-  SigMap m_SigMap;
-  /// Map of SigBit objects to inverter cells.
-  dict<RTLIL::SigBit, RTLIL::Cell *> m_InvMap;
-  /// Map of inverter cells that can potentially be integrated and invertable
-  /// pins that they are connected to
-  dict<RTLIL::Cell *, pool<Pin>> m_Inverters;
-  /// Map of invertable pins and names of parameters controlling inversions
-  dict<Pin, RTLIL::IdString> m_InvParams;
+    /// Temporary SigBit to SigBit helper map.
+    SigMap m_SigMap;
+    /// Map of SigBit objects to inverter cells.
+    dict<RTLIL::SigBit, RTLIL::Cell *> m_InvMap;
+    /// Map of inverter cells that can potentially be integrated and invertable
+    /// pins that they are connected to
+    dict<RTLIL::Cell *, pool<Pin>> m_Inverters;
+    /// Map of invertable pins and names of parameters controlling inversions
+    dict<Pin, RTLIL::IdString> m_InvParams;
 
-  IntegrateInv()
-      : Pass("integrateinv", "Integrates inverters ($_NOT_ cells) into ports "
-                             "with 'invertible_pin' attribute set") {}
-
-  void help() override {
-    log("\n");
-    log("    integrateinv [selection]");
-    log("\n");
-    log("This pass integrates inverters into cells that have ports with the\n");
-    log("'invertible_pin' attribute set. The attribute should contain the name\n");
-    log("of a parameter controlling the inversion.\n");
-    log("\n");
-    log("This pass is essentially the opposite of the 'extractinv' pass.\n");
-    log("\n");
-  }
-
-  void execute(std::vector<std::string> a_Args,
-               RTLIL::Design *a_Design) override {
-    log_header(a_Design,
-               "Executing INTEGRATEINV pass (integrating pin inverters).\n");
-
-    extra_args(a_Args, 1, a_Design);
-
-    // Process modules
-    for (auto module : a_Design->selected_modules()) {
-
-      // Setup the SigMap
-      m_SigMap.clear();
-      m_SigMap.set(module);
-
-      m_Inverters.clear();
-      m_InvParams.clear();
-
-      // Setup inverter map
-      buildInverterMap(module);
-
-      // Identify inverters that can be integrated and assign them with
-      // lists of cells and ports to integrate with
-      for (auto cell : module->selected_cells()) {
-        collectInverters(cell);
-      }
-
-      // Integrate inverters
-      integrateInverters();
+    IntegrateInv()
+        : Pass("integrateinv", "Integrates inverters ($_NOT_ cells) into ports "
+                               "with 'invertible_pin' attribute set")
+    {
     }
 
-    // Clear maps
-    m_SigMap.clear();
-
-    m_InvMap.clear();
-    m_Inverters.clear();
-    m_InvParams.clear();
-  }
-
-  void buildInverterMap(RTLIL::Module *a_Module) {
-    m_InvMap.clear();
-
-    for (auto cell : a_Module->cells()) {
-
-      // Skip non-inverters
-      if (cell->type != RTLIL::escape_id("$_NOT_")) {
-        continue;
-      }
-
-      // Get output connection
-      auto sigspec = cell->getPort(RTLIL::escape_id("Y"));
-      auto sigbit = m_SigMap(sigspec.bits().at(0));
-
-      // Store
-      log_assert(m_InvMap.count(sigbit) == 0);
-      m_InvMap[sigbit] = cell;
-    }
-  }
-
-  void collectInverters(RTLIL::Cell *a_Cell) {
-    auto module = a_Cell->module;
-    auto design = module->design;
-
-    for (auto conn : a_Cell->connections()) {
-      auto port = conn.first;
-      auto sigspec = conn.second;
-
-      // Consider only inputs.
-      if (!a_Cell->input(port)) {
-        continue;
-      }
-
-      // Get the cell module
-      auto cellModule = design->module(a_Cell->type);
-      if (!cellModule) {
-        continue;
-      }
-
-      // Get wire.
-      auto wire = cellModule->wire(port);
-      if (!wire) {
-        continue;
-      }
-
-      // Check if the pin has an embedded inverter.
-      auto it = wire->attributes.find(ID::invertible_pin);
-      if (it == wire->attributes.end()) {
-        continue;
-      }
-
-      // Decode the parameter name.
-      RTLIL::IdString paramName = RTLIL::escape_id(it->second.decode_string());
-
-      // Look for connected inverters
-      auto sigbits = sigspec.bits();
-      for (size_t bit = 0; bit < sigbits.size(); ++bit) {
-
-        auto sigbit = sigbits[bit];
-        if (!sigbit.wire) {
-          continue;
-        }
-
-        sigbit = m_SigMap(sigbit);
-
-        // Get the inverter if any
-        if (!m_InvMap.count(sigbit)) {
-          continue;
-        }
-        auto inv = m_InvMap.at(sigbit);
-
-        // Save the inverter pin and the parameter name
-        auto pin = Pin(a_Cell, port, bit);
-
-        auto &list = m_Inverters[inv];
-        list.insert(pin);
-
-        log_assert(m_InvParams.count(pin) == 0);
-        m_InvParams[pin] = paramName;
-      }
-    }
-  }
-
-  void integrateInverters() {
-
-    for (auto it : m_Inverters) {
-      auto inv = it.first;
-      auto pins = it.second;
-
-      // List all sinks of the inverter
-      auto sinks = getSinksForDriver(Pin(inv, RTLIL::escape_id("Y")));
-
-      // If the inverter drives only invertable pins then integrate it
-      if (sinks == pins) {
-        log("Integrating inverter %s into:\n", log_id(inv->name));
-
-        // Integrate into each pin
-        for (auto pin : pins) {
-          log_assert(pin.cell != nullptr);
-          log(" %s.%s[%d]\n", log_id(pin.cell->name), log_id(pin.port),
-              pin.bit);
-
-          // Change the connection
-          auto sigspec = pin.cell->getPort(pin.port);
-          auto sigbits = sigspec.bits();
-
-          log_assert((size_t)pin.bit < sigbits.size());
-          sigbits[pin.bit] =
-              RTLIL::SigBit(inv->getPort(RTLIL::escape_id("A"))[0]);
-          pin.cell->setPort(pin.port, RTLIL::SigSpec(sigbits));
-
-          // Get the control parameter
-          log_assert(m_InvParams.count(pin) != 0);
-          auto paramName = m_InvParams[pin];
-
-          RTLIL::Const invMask;
-          auto param = pin.cell->parameters.find(paramName);
-          if (param == pin.cell->parameters.end()) {
-            invMask = RTLIL::Const(0, sigspec.size());
-          } else {
-            invMask = RTLIL::Const(param->second);
-          }
-
-          // Check width.
-          if (invMask.size() != sigspec.size()) {
-            log_error("The inversion parameter needs to be the same width as "
-                      "the port (%s port %s parameter %s)",
-                      log_id(pin.cell->name), log_id(pin.port),
-                      log_id(paramName));
-          }
-
-          // Toggle bit in the control parameter bitmask
-          if (invMask[pin.bit] == RTLIL::State::S0) {
-            invMask[pin.bit] = RTLIL::State::S1;
-          } else if (invMask[pin.bit] == RTLIL::State::S1) {
-            invMask[pin.bit] = RTLIL::State::S0;
-          } else {
-            log_error("The inversion parameter must contain only 0s and 1s (%s "
-                      "parameter %s)\n",
-                      log_id(pin.cell->name), log_id(paramName));
-          }
-
-          // Set the parameter back
-          pin.cell->setParam(paramName, invMask);
-        }
-
-        // Remove the inverter
-        inv->module->remove(inv);
-      }
-    }
-  }
-
-  pool<Pin> getSinksForDriver(const Pin &a_Driver) {
-    auto module = a_Driver.cell->module;
-    pool<Pin> sinks;
-
-    // The driver has to be an output pin
-    if (!a_Driver.cell->output(a_Driver.port)) {
-      return sinks;
+    void help() override
+    {
+        log("\n");
+        log("    integrateinv [selection]");
+        log("\n");
+        log("This pass integrates inverters into cells that have ports with the\n");
+        log("'invertible_pin' attribute set. The attribute should contain the name\n");
+        log("of a parameter controlling the inversion.\n");
+        log("\n");
+        log("This pass is essentially the opposite of the 'extractinv' pass.\n");
+        log("\n");
     }
 
-    // Get the driver sigbit
-    auto driverSigspec = a_Driver.cell->getPort(a_Driver.port);
-    auto driverSigbit = m_SigMap(driverSigspec.bits().at(a_Driver.bit));
+    void execute(std::vector<std::string> a_Args, RTLIL::Design *a_Design) override
+    {
+        log_header(a_Design, "Executing INTEGRATEINV pass (integrating pin inverters).\n");
 
-    // Look for connected sinks
-    for (auto cell : module->cells()) {
-      for (auto conn : cell->connections()) {
-        auto port = conn.first;
-        auto sigspec = conn.second;
+        extra_args(a_Args, 1, a_Design);
 
-        // Consider only sinks (inputs)
-        if (!cell->input(port)) {
-          continue;
+        // Process modules
+        for (auto module : a_Design->selected_modules()) {
+
+            // Setup the SigMap
+            m_SigMap.clear();
+            m_SigMap.set(module);
+
+            m_Inverters.clear();
+            m_InvParams.clear();
+
+            // Setup inverter map
+            buildInverterMap(module);
+
+            // Identify inverters that can be integrated and assign them with
+            // lists of cells and ports to integrate with
+            for (auto cell : module->selected_cells()) {
+                collectInverters(cell);
+            }
+
+            // Integrate inverters
+            integrateInverters();
         }
 
-        // Check all sigbits
-        auto sigbits = sigspec.bits();
-        for (size_t bit = 0; bit < sigbits.size(); ++bit) {
+        // Clear maps
+        m_SigMap.clear();
 
-          auto sigbit = sigbits[bit];
-          if (!sigbit.wire) {
-            continue;
-          }
-
-          // Got a sink pin of another cell
-          sigbit = m_SigMap(sigbit);
-          if (sigbit == driverSigbit) {
-            sinks.insert(Pin(cell, port, bit));
-          }
-        }
-      }
+        m_InvMap.clear();
+        m_Inverters.clear();
+        m_InvParams.clear();
     }
 
-    // Look for connected top-level output ports
-    for (auto conn : module->connections()) {
-      auto dst = conn.first;
-      auto src = conn.second;
+    void buildInverterMap(RTLIL::Module *a_Module)
+    {
+        m_InvMap.clear();
 
-      auto sigbits = dst.bits();
-      for (size_t bit = 0; bit < sigbits.size(); ++bit) {
+        for (auto cell : a_Module->cells()) {
 
-        auto sigbit = sigbits[bit];
-        if (!sigbit.wire) {
-          continue;
+            // Skip non-inverters
+            if (cell->type != RTLIL::escape_id("$_NOT_")) {
+                continue;
+            }
+
+            // Get output connection
+            auto sigspec = cell->getPort(RTLIL::escape_id("Y"));
+            auto sigbit = m_SigMap(sigspec.bits().at(0));
+
+            // Store
+            log_assert(m_InvMap.count(sigbit) == 0);
+            m_InvMap[sigbit] = cell;
         }
-
-        if (!sigbit.wire->port_output) {
-          continue;
-        }
-
-        sigbit = m_SigMap(sigbit);
-        if (sigbit == driverSigbit) {
-          sinks.insert(Pin(nullptr, sigbit.wire->name, bit));
-        }
-      }
     }
 
-    return sinks;
-  }
+    void collectInverters(RTLIL::Cell *a_Cell)
+    {
+        auto module = a_Cell->module;
+        auto design = module->design;
+
+        for (auto conn : a_Cell->connections()) {
+            auto port = conn.first;
+            auto sigspec = conn.second;
+
+            // Consider only inputs.
+            if (!a_Cell->input(port)) {
+                continue;
+            }
+
+            // Get the cell module
+            auto cellModule = design->module(a_Cell->type);
+            if (!cellModule) {
+                continue;
+            }
+
+            // Get wire.
+            auto wire = cellModule->wire(port);
+            if (!wire) {
+                continue;
+            }
+
+            // Check if the pin has an embedded inverter.
+            auto it = wire->attributes.find(ID::invertible_pin);
+            if (it == wire->attributes.end()) {
+                continue;
+            }
+
+            // Decode the parameter name.
+            RTLIL::IdString paramName = RTLIL::escape_id(it->second.decode_string());
+
+            // Look for connected inverters
+            auto sigbits = sigspec.bits();
+            for (size_t bit = 0; bit < sigbits.size(); ++bit) {
+
+                auto sigbit = sigbits[bit];
+                if (!sigbit.wire) {
+                    continue;
+                }
+
+                sigbit = m_SigMap(sigbit);
+
+                // Get the inverter if any
+                if (!m_InvMap.count(sigbit)) {
+                    continue;
+                }
+                auto inv = m_InvMap.at(sigbit);
+
+                // Save the inverter pin and the parameter name
+                auto pin = Pin(a_Cell, port, bit);
+
+                auto &list = m_Inverters[inv];
+                list.insert(pin);
+
+                log_assert(m_InvParams.count(pin) == 0);
+                m_InvParams[pin] = paramName;
+            }
+        }
+    }
+
+    void integrateInverters()
+    {
+
+        for (auto it : m_Inverters) {
+            auto inv = it.first;
+            auto pins = it.second;
+
+            // List all sinks of the inverter
+            auto sinks = getSinksForDriver(Pin(inv, RTLIL::escape_id("Y")));
+
+            // If the inverter drives only invertable pins then integrate it
+            if (sinks == pins) {
+                log("Integrating inverter %s into:\n", log_id(inv->name));
+
+                // Integrate into each pin
+                for (auto pin : pins) {
+                    log_assert(pin.cell != nullptr);
+                    log(" %s.%s[%d]\n", log_id(pin.cell->name), log_id(pin.port), pin.bit);
+
+                    // Change the connection
+                    auto sigspec = pin.cell->getPort(pin.port);
+                    auto sigbits = sigspec.bits();
+
+                    log_assert((size_t)pin.bit < sigbits.size());
+                    sigbits[pin.bit] = RTLIL::SigBit(inv->getPort(RTLIL::escape_id("A"))[0]);
+                    pin.cell->setPort(pin.port, RTLIL::SigSpec(sigbits));
+
+                    // Get the control parameter
+                    log_assert(m_InvParams.count(pin) != 0);
+                    auto paramName = m_InvParams[pin];
+
+                    RTLIL::Const invMask;
+                    auto param = pin.cell->parameters.find(paramName);
+                    if (param == pin.cell->parameters.end()) {
+                        invMask = RTLIL::Const(0, sigspec.size());
+                    } else {
+                        invMask = RTLIL::Const(param->second);
+                    }
+
+                    // Check width.
+                    if (invMask.size() != sigspec.size()) {
+                        log_error("The inversion parameter needs to be the same width as "
+                                  "the port (%s port %s parameter %s)",
+                                  log_id(pin.cell->name), log_id(pin.port), log_id(paramName));
+                    }
+
+                    // Toggle bit in the control parameter bitmask
+                    if (invMask[pin.bit] == RTLIL::State::S0) {
+                        invMask[pin.bit] = RTLIL::State::S1;
+                    } else if (invMask[pin.bit] == RTLIL::State::S1) {
+                        invMask[pin.bit] = RTLIL::State::S0;
+                    } else {
+                        log_error("The inversion parameter must contain only 0s and 1s (%s "
+                                  "parameter %s)\n",
+                                  log_id(pin.cell->name), log_id(paramName));
+                    }
+
+                    // Set the parameter back
+                    pin.cell->setParam(paramName, invMask);
+                }
+
+                // Remove the inverter
+                inv->module->remove(inv);
+            }
+        }
+    }
+
+    pool<Pin> getSinksForDriver(const Pin &a_Driver)
+    {
+        auto module = a_Driver.cell->module;
+        pool<Pin> sinks;
+
+        // The driver has to be an output pin
+        if (!a_Driver.cell->output(a_Driver.port)) {
+            return sinks;
+        }
+
+        // Get the driver sigbit
+        auto driverSigspec = a_Driver.cell->getPort(a_Driver.port);
+        auto driverSigbit = m_SigMap(driverSigspec.bits().at(a_Driver.bit));
+
+        // Look for connected sinks
+        for (auto cell : module->cells()) {
+            for (auto conn : cell->connections()) {
+                auto port = conn.first;
+                auto sigspec = conn.second;
+
+                // Consider only sinks (inputs)
+                if (!cell->input(port)) {
+                    continue;
+                }
+
+                // Check all sigbits
+                auto sigbits = sigspec.bits();
+                for (size_t bit = 0; bit < sigbits.size(); ++bit) {
+
+                    auto sigbit = sigbits[bit];
+                    if (!sigbit.wire) {
+                        continue;
+                    }
+
+                    // Got a sink pin of another cell
+                    sigbit = m_SigMap(sigbit);
+                    if (sigbit == driverSigbit) {
+                        sinks.insert(Pin(cell, port, bit));
+                    }
+                }
+            }
+        }
+
+        // Look for connected top-level output ports
+        for (auto conn : module->connections()) {
+            auto dst = conn.first;
+            auto src = conn.second;
+
+            auto sigbits = dst.bits();
+            for (size_t bit = 0; bit < sigbits.size(); ++bit) {
+
+                auto sigbit = sigbits[bit];
+                if (!sigbit.wire) {
+                    continue;
+                }
+
+                if (!sigbit.wire->port_output) {
+                    continue;
+                }
+
+                sigbit = m_SigMap(sigbit);
+                if (sigbit == driverSigbit) {
+                    sinks.insert(Pin(nullptr, sigbit.wire->name, bit));
+                }
+            }
+        }
+
+        return sinks;
+    }
 
 } IntegrateInv;
 
diff --git a/params-plugin/params.cc b/params-plugin/params.cc
index c4f169b..cddc737 100644
--- a/params-plugin/params.cc
+++ b/params-plugin/params.cc
@@ -16,66 +16,64 @@
  *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
+#include "kernel/log.h"
 #include "kernel/register.h"
 #include "kernel/rtlil.h"
-#include "kernel/log.h"
 
 USING_YOSYS_NAMESPACE
 
 PRIVATE_NAMESPACE_BEGIN
 
-
-void register_in_tcl_interpreter(const std::string& command) {
-	Tcl_Interp* interp = yosys_get_tcl_interp();
-	std::string tcl_script = stringf("proc %s args { return [yosys %s {*}$args] }", command.c_str(), command.c_str());
-	Tcl_Eval(interp, tcl_script.c_str());
+void register_in_tcl_interpreter(const std::string &command)
+{
+    Tcl_Interp *interp = yosys_get_tcl_interp();
+    std::string tcl_script = stringf("proc %s args { return [yosys %s {*}$args] }", command.c_str(), command.c_str());
+    Tcl_Eval(interp, tcl_script.c_str());
 }
 
 struct GetParam : public Pass {
-	GetParam() : Pass("getparam", "get parameter on object") {
-		register_in_tcl_interpreter(pass_name);
-	}
+    GetParam() : Pass("getparam", "get parameter on object") { register_in_tcl_interpreter(pass_name); }
 
-	void help() override
-	{
-		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
-		log("\n");
-		log("   getparam name selection\n");
-		log("\n");
-		log("Get the given parameter on the selected object. \n");
-		log("\n");
-	}
+    void help() override
+    {
+        //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+        log("\n");
+        log("   getparam name selection\n");
+        log("\n");
+        log("Get the given parameter on the selected object. \n");
+        log("\n");
+    }
 
-	void execute(std::vector<std::string> args, RTLIL::Design* design) override
-	{
-		if (args.size() == 1) {
-			log_error("Incorrect number of arguments");
-		}
-		extra_args(args, 2, design);
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override
+    {
+        if (args.size() == 1) {
+            log_error("Incorrect number of arguments");
+        }
+        extra_args(args, 2, design);
 
-		auto param = RTLIL::IdString(RTLIL::escape_id(args.at(1)));
-		Tcl_Interp *interp = yosys_get_tcl_interp();
-		Tcl_Obj* tcl_list = Tcl_NewListObj(0, NULL);
+        auto param = RTLIL::IdString(RTLIL::escape_id(args.at(1)));
+        Tcl_Interp *interp = yosys_get_tcl_interp();
+        Tcl_Obj *tcl_list = Tcl_NewListObj(0, NULL);
 
-		for (auto module : design->selected_modules()) {
-			for (auto cell : module->selected_cells()) {
-				auto params = cell->parameters;
-				auto it = params.find(param);
-				if (it != params.end()) {
-					std::string value;
-					auto param_obj = it->second;
-					if (param_obj.flags & RTLIL::CONST_FLAG_STRING) {
-						value = param_obj.decode_string();
-					} else {
-						value = std::to_string(param_obj.as_int());
-					}
-					Tcl_Obj* value_obj = Tcl_NewStringObj(value.c_str(), value.size());
-					Tcl_ListObjAppendElement(interp, tcl_list, value_obj);
-				}
-			}
-		}
-		Tcl_SetObjResult(interp, tcl_list);
-	}
+        for (auto module : design->selected_modules()) {
+            for (auto cell : module->selected_cells()) {
+                auto params = cell->parameters;
+                auto it = params.find(param);
+                if (it != params.end()) {
+                    std::string value;
+                    auto param_obj = it->second;
+                    if (param_obj.flags & RTLIL::CONST_FLAG_STRING) {
+                        value = param_obj.decode_string();
+                    } else {
+                        value = std::to_string(param_obj.as_int());
+                    }
+                    Tcl_Obj *value_obj = Tcl_NewStringObj(value.c_str(), value.size());
+                    Tcl_ListObjAppendElement(interp, tcl_list, value_obj);
+                }
+            }
+        }
+        Tcl_SetObjResult(interp, tcl_list);
+    }
 
 } GetParam;
 
diff --git a/ql-iob-plugin/pcf_parser.cc b/ql-iob-plugin/pcf_parser.cc
index c7a9309..f8e1aeb 100644
--- a/ql-iob-plugin/pcf_parser.cc
+++ b/ql-iob-plugin/pcf_parser.cc
@@ -23,7 +23,8 @@
 
 // ============================================================================
 
-bool PcfParser::parse (const std::string& a_FileName) {
+bool PcfParser::parse(const std::string &a_FileName)
+{
 
     // Open the file
     std::ifstream file(a_FileName.c_str());
@@ -32,14 +33,12 @@
     return parse(file);
 }
 
-const std::vector<PcfParser::Constraint> PcfParser::getConstraints () const {
-    return m_Constraints;
-}
-
+const std::vector<PcfParser::Constraint> PcfParser::getConstraints() const { return m_Constraints; }
 
 // ============================================================================
 
-bool PcfParser::parse (std::ifstream& a_Stream) {
+bool PcfParser::parse(std::ifstream &a_Stream)
+{
 
     if (!a_Stream.good()) {
         return false;
@@ -58,13 +57,7 @@
         // Match against regex
         std::cmatch cm;
         if (std::regex_match(line.c_str(), cm, re)) {
-            m_Constraints.push_back(
-                Constraint(
-                    cm[1].str(),
-                    cm[2].str(),
-                    cm[3].str()
-                )
-            );
+            m_Constraints.push_back(Constraint(cm[1].str(), cm[2].str(), cm[3].str()));
         }
     }
 
diff --git a/ql-iob-plugin/pinmap_parser.cc b/ql-iob-plugin/pinmap_parser.cc
index 77e3662..ceaf30a 100644
--- a/ql-iob-plugin/pinmap_parser.cc
+++ b/ql-iob-plugin/pinmap_parser.cc
@@ -23,7 +23,8 @@
 
 // ============================================================================
 
-bool PinmapParser::parse (const std::string& a_FileName) {
+bool PinmapParser::parse(const std::string &a_FileName)
+{
 
     // Open the file
     std::ifstream file(a_FileName.c_str());
@@ -32,13 +33,12 @@
     return parse(file);
 }
 
-const std::vector<PinmapParser::Entry> PinmapParser::getEntries() const {
-    return m_Entries;
-}
+const std::vector<PinmapParser::Entry> PinmapParser::getEntries() const { return m_Entries; }
 
 // ============================================================================
 
-std::vector<std::string> PinmapParser::getFields (const std::string& a_String) {
+std::vector<std::string> PinmapParser::getFields(const std::string &a_String)
+{
 
     std::vector<std::string> fields;
     std::stringstream ss(a_String);
@@ -53,7 +53,8 @@
     return fields;
 }
 
-bool PinmapParser::parseHeader (std::ifstream& a_Stream) {
+bool PinmapParser::parseHeader(std::ifstream &a_Stream)
+{
 
     // Get the header line
     std::string header;
@@ -68,7 +69,8 @@
     return true;
 }
 
-bool PinmapParser::parseData (std::ifstream& a_Stream) {
+bool PinmapParser::parseData(std::ifstream &a_Stream)
+{
 
     // Parse lines as they come
     while (a_Stream.good()) {
@@ -84,7 +86,7 @@
 
         // Assign data fields to columns
         Entry entry;
-        for (size_t i=0; i<data.size(); ++i) {
+        for (size_t i = 0; i < data.size(); ++i) {
 
             if (i >= m_Fields.size()) {
                 return false;
@@ -99,7 +101,8 @@
     return true;
 }
 
-bool PinmapParser::parse (std::ifstream& a_Stream) {
+bool PinmapParser::parse(std::ifstream &a_Stream)
+{
 
     if (!a_Stream.good()) {
         return false;
diff --git a/ql-iob-plugin/ql-iob.cc b/ql-iob-plugin/ql-iob.cc
index 6574535..d6aeefc 100644
--- a/ql-iob-plugin/ql-iob.cc
+++ b/ql-iob-plugin/ql-iob.cc
@@ -41,18 +41,16 @@
         std::string port;                        // Name of the port that goes to a pad
         std::vector<std::string> preferredTypes; // A list of preferred IO cell types
 
-        IoCellType (const std::string& _type, const std::string& _port, const std::vector<std::string> _preferredTypes = std::vector<std::string>()) :
-            type(_type),
-            port(_port),
-            preferredTypes(_preferredTypes)
-        {}
+        IoCellType(const std::string &_type, const std::string &_port, const std::vector<std::string> _preferredTypes = std::vector<std::string>())
+            : type(_type), port(_port), preferredTypes(_preferredTypes)
+        {
+        }
     };
 
-    QuicklogicIob () :
-        Pass("quicklogic_iob", "Map IO buffers to cells that correspond to their assigned locations") {
-        }    
+    QuicklogicIob() : Pass("quicklogic_iob", "Map IO buffers to cells that correspond to their assigned locations") {}
 
-    void help() YS_OVERRIDE {
+    void help() YS_OVERRIDE
+    {
         log("\n");
         log("    quicklogic_iob <PCF file> <pinmap file> [<io cell specs>]");
         log("\n");
@@ -82,8 +80,9 @@
         log("        types in order of preference.\n");
         log("\n");
     }
-    
-    void execute(std::vector<std::string> a_Args, RTLIL::Design* a_Design) YS_OVERRIDE {
+
+    void execute(std::vector<std::string> a_Args, RTLIL::Design *a_Design) YS_OVERRIDE
+    {
         if (a_Args.size() < 3) {
             log_cmd_error("    Usage: quicklogic_iob <PCF file> <pinmap file> [<io cell specs>]");
         }
@@ -91,7 +90,6 @@
         // A map of IO cell types and their port names that should go to a pad
         std::unordered_map<std::string, IoCellType> ioCellTypes;
 
-
         // Parse io cell specification
         if (a_Args.size() > 3) {
 
@@ -100,7 +98,7 @@
             std::regex re1("^([\\w$]+):([\\w$]+)$");
             std::regex re2("^([\\w$]+):([\\w$]+):([\\w,$]+)$");
 
-            for (size_t i=3; i<a_Args.size(); ++i) {
+            for (size_t i = 3; i < a_Args.size(); ++i) {
                 std::cmatch cm;
 
                 // No preffered IO cell types
@@ -119,7 +117,7 @@
 
                         preferredTypes.push_back(field);
                     }
-                    
+
                     ioCellTypes.emplace(cm[1].str(), IoCellType(cm[1], cm[2], preferredTypes));
                 }
 
@@ -132,14 +130,14 @@
 
         // Use the default IO cells for QuickLogic FPGAs
         else {
-            ioCellTypes.emplace("inpad",  IoCellType("inpad",  "P", {"BIDIR", "SDIOMUX"}));
+            ioCellTypes.emplace("inpad", IoCellType("inpad", "P", {"BIDIR", "SDIOMUX"}));
             ioCellTypes.emplace("outpad", IoCellType("outpad", "P", {"BIDIR", "SDIOMUX"}));
-            ioCellTypes.emplace("bipad",  IoCellType("bipad",  "P", {"BIDIR", "SDIOMUX"}));
-            ioCellTypes.emplace("ckpad",  IoCellType("ckpad",  "P", {"CLOCK", "BIDIR", "SDIOMUX"}));
+            ioCellTypes.emplace("bipad", IoCellType("bipad", "P", {"BIDIR", "SDIOMUX"}));
+            ioCellTypes.emplace("ckpad", IoCellType("ckpad", "P", {"CLOCK", "BIDIR", "SDIOMUX"}));
         }
 
         // Get the top module of the design
-        RTLIL::Module* topModule = a_Design->top_module();
+        RTLIL::Module *topModule = a_Design->top_module();
         if (topModule == nullptr) {
             log_cmd_error("No top module detected!\n");
         }
@@ -153,7 +151,7 @@
 
         // Build a map of net names to constraints
         std::unordered_map<std::string, const PcfParser::Constraint> constraintMap;
-        for (auto& constraint : pcfParser.getConstraints()) {
+        for (auto &constraint : pcfParser.getConstraints()) {
             if (constraintMap.count(constraint.netName) != 0) {
                 log_cmd_error("The net '%s' is constrained twice!", constraint.netName.c_str());
             }
@@ -169,9 +167,9 @@
 
         // Build a map of pad names to entries
         std::unordered_map<std::string, std::vector<PinmapParser::Entry>> pinmapMap;
-        for (auto& entry : pinmapParser.getEntries()) {
+        for (auto &entry : pinmapParser.getEntries()) {
             if (entry.count("name") != 0) {
-                auto& name = entry.at("name");
+                auto &name = entry.at("name");
 
                 if (pinmapMap.count(name) == 0) {
                     pinmapMap[name] = std::vector<PinmapParser::Entry>();
@@ -187,7 +185,7 @@
         log("  type       | net        | pad        | loc      | type     | instance\n");
         log(" ------------+------------+------------+----------+----------+-----------\n");
         for (auto cell : topModule->cells()) {
-            auto ysCellType = RTLIL::unescape_id(cell->type); 
+            auto ysCellType = RTLIL::unescape_id(cell->type);
 
             // Not an IO cell
             if (ioCellTypes.count(ysCellType) == 0) {
@@ -202,7 +200,7 @@
             std::string cellType;
 
             // Get connections to the specified port
-            const auto& ioCellType = ioCellTypes.at(ysCellType);
+            const auto &ioCellType = ioCellTypes.at(ysCellType);
             const std::string port = RTLIL::escape_id(ioCellType.port);
             if (cell->connections().count(port)) {
 
@@ -220,15 +218,15 @@
                             // Check if the wire is constrained. Get pad name.
                             std::string baseName = RTLIL::unescape_id(wire->name);
                             std::string netNames[] = {
-                                baseName,
-                                stringf("%s[%d]", baseName.c_str(), sigbit.offset),
-                                stringf("%s(%d)", baseName.c_str(), sigbit.offset),
+                              baseName,
+                              stringf("%s[%d]", baseName.c_str(), sigbit.offset),
+                              stringf("%s(%d)", baseName.c_str(), sigbit.offset),
                             };
 
                             padName = "";
                             netName = "";
 
-                            for (auto& name : netNames) {                       
+                            for (auto &name : netNames) {
                                 if (constraintMap.count(name)) {
                                     auto constraint = constraintMap.at(name);
                                     padName = constraint.padName;
@@ -241,17 +239,11 @@
                             if (pinmapMap.count(padName)) {
 
                                 // Choose a correct entry for the cell
-                                auto entry = choosePinmapEntry(
-                                    pinmapMap.at(padName),
-                                    ioCellType
-                                );
+                                auto entry = choosePinmapEntry(pinmapMap.at(padName), ioCellType);
 
                                 // Location string
                                 if (entry.count("x") && entry.count("y")) {
-                                    locName = stringf("X%sY%s", 
-                                        entry.at("x").c_str(),
-                                        entry.at("y").c_str()
-                                    );
+                                    locName = stringf("X%sY%s", entry.at("x").c_str(), entry.at("y").c_str());
                                 }
 
                                 // Cell type
@@ -264,24 +256,16 @@
                 }
             }
 
-            log("| %-10s | %-10s | %-8s | %-8s | %s\n",
-                netName.c_str(),
-                padName.c_str(),
-                locName.c_str(),
-                cellType.c_str(),
-                cell->name.c_str()
-            );
+            log("| %-10s | %-10s | %-8s | %-8s | %s\n", netName.c_str(), padName.c_str(), locName.c_str(), cellType.c_str(), cell->name.c_str());
 
             // Annotate the cell by setting its parameters
-            cell->setParam(RTLIL::escape_id("IO_PAD"),  padName);
-            cell->setParam(RTLIL::escape_id("IO_LOC"),  locName);
+            cell->setParam(RTLIL::escape_id("IO_PAD"), padName);
+            cell->setParam(RTLIL::escape_id("IO_LOC"), locName);
             cell->setParam(RTLIL::escape_id("IO_TYPE"), cellType);
         }
     }
 
-    PinmapParser::Entry choosePinmapEntry(
-        const std::vector<PinmapParser::Entry>& a_Entries,
-        const IoCellType& a_IoCellType)
+    PinmapParser::Entry choosePinmapEntry(const std::vector<PinmapParser::Entry> &a_Entries, const IoCellType &a_IoCellType)
     {
         // No preferred types, pick the first one
         if (a_IoCellType.preferredTypes.empty()) {
@@ -289,10 +273,10 @@
         }
 
         // Loop over preferred types
-        for (auto& type : a_IoCellType.preferredTypes) {
-            
+        for (auto &type : a_IoCellType.preferredTypes) {
+
             // Find an entry for that type. If found then return it.
-            for (auto& entry : a_Entries) {
+            for (auto &entry : a_Entries) {
                 if (type == entry.at("type")) {
                     return entry;
                 }
diff --git a/sdc-plugin/buffers.cc b/sdc-plugin/buffers.cc
index a48a26a..33aceee 100644
--- a/sdc-plugin/buffers.cc
+++ b/sdc-plugin/buffers.cc
@@ -20,14 +20,12 @@
 #include <cmath>
 
 const std::vector<std::string> Pll::inputs = {"CLKIN1", "CLKIN2"};
-const std::vector<std::string> Pll::outputs = {"CLKOUT0", "CLKOUT1", "CLKOUT2",
-                                               "CLKOUT3", "CLKOUT4", "CLKOUT5"};
+const std::vector<std::string> Pll::outputs = {"CLKOUT0", "CLKOUT1", "CLKOUT2", "CLKOUT3", "CLKOUT4", "CLKOUT5"};
 const float Pll::delay = 0;
 const std::string Pll::name = "PLLE2_ADV";
 
-Pll::Pll(RTLIL::Cell* cell, float input_clock_period,
-         float input_clock_rising_edge)
-    : ClockDivider({"PLLE2_ADV"}) {
+Pll::Pll(RTLIL::Cell *cell, float input_clock_period, float input_clock_rising_edge) : ClockDivider({"PLLE2_ADV"})
+{
     assert(RTLIL::unescape_id(cell->type) == "PLLE2_ADV");
     FetchParams(cell);
     CheckInputClockPeriod(cell, input_clock_period);
@@ -35,73 +33,67 @@
     CalculateOutputClockWaveforms(input_clock_rising_edge);
 }
 
-void Pll::CheckInputClockPeriod(RTLIL::Cell* cell, float input_clock_period) {
+void Pll::CheckInputClockPeriod(RTLIL::Cell *cell, float input_clock_period)
+{
     float abs_diff = fabs(ClkinPeriod() - input_clock_period);
-    bool approx_equal = abs_diff < std::max(ClkinPeriod(), input_clock_period) *
-                                       10 *
-                                       std::numeric_limits<float>::epsilon();
+    bool approx_equal = abs_diff < std::max(ClkinPeriod(), input_clock_period) * 10 * std::numeric_limits<float>::epsilon();
     if (!approx_equal) {
-	log_cmd_error(
-	    "CLKIN[1/2]_PERIOD doesn't match the virtual clock constraint "
-	    "propagated to the CLKIN[1/2] input of the clock divider cell: "
-	    "%s.\nInput clock period: %f, CLKIN[1/2]_PERIOD: %f\n",
-	    RTLIL::id2cstr(cell->name), input_clock_period, ClkinPeriod());
+        log_cmd_error("CLKIN[1/2]_PERIOD doesn't match the virtual clock constraint "
+                      "propagated to the CLKIN[1/2] input of the clock divider cell: "
+                      "%s.\nInput clock period: %f, CLKIN[1/2]_PERIOD: %f\n",
+                      RTLIL::id2cstr(cell->name), input_clock_period, ClkinPeriod());
     }
 }
 
-void Pll::FetchParams(RTLIL::Cell* cell) {
+void Pll::FetchParams(RTLIL::Cell *cell)
+{
     clkin1_period = FetchParam(cell, "CLKIN1_PERIOD", 0.0);
     clkin2_period = FetchParam(cell, "CLKIN2_PERIOD", 0.0);
     clk_mult = FetchParam(cell, "CLKFBOUT_MULT", 5.0);
     clk_fbout_phase = FetchParam(cell, "CLKFBOUT_PHASE", 0.0);
     divclk_divisor = FetchParam(cell, "DIVCLK_DIVIDE", 1.0);
     for (auto output : outputs) {
-	// CLKOUT[0-5]_DUTY_CYCLE
-	clkout_duty_cycle[output] =
-	    FetchParam(cell, output + "_DUTY_CYCLE", 0.5);
-	// CLKOUT[0-5]_DIVIDE
-	clkout_divisor[output] = FetchParam(cell, output + "_DIVIDE", 1.0);
-	// CLKOUT[0-5]_PHASE
-	clkout_phase[output] = FetchParam(cell, output + "_PHASE", 0.0);
+        // CLKOUT[0-5]_DUTY_CYCLE
+        clkout_duty_cycle[output] = FetchParam(cell, output + "_DUTY_CYCLE", 0.5);
+        // CLKOUT[0-5]_DIVIDE
+        clkout_divisor[output] = FetchParam(cell, output + "_DIVIDE", 1.0);
+        // CLKOUT[0-5]_PHASE
+        clkout_phase[output] = FetchParam(cell, output + "_PHASE", 0.0);
     }
 }
 
-void Pll::CalculateOutputClockPeriods() {
+void Pll::CalculateOutputClockPeriods()
+{
     for (auto output : outputs) {
-	// CLKOUT[0-5]_PERIOD = CLKIN1_PERIOD * CLKOUT[0-5]_DIVIDE *
-	// DIVCLK_DIVIDE / CLKFBOUT_MULT
-	clkout_period[output] = ClkinPeriod() * clkout_divisor.at(output) /
-	                        clk_mult * divclk_divisor;
+        // CLKOUT[0-5]_PERIOD = CLKIN1_PERIOD * CLKOUT[0-5]_DIVIDE *
+        // DIVCLK_DIVIDE / CLKFBOUT_MULT
+        clkout_period[output] = ClkinPeriod() * clkout_divisor.at(output) / clk_mult * divclk_divisor;
     }
 }
 
-void Pll::CalculateOutputClockWaveforms(float input_clock_rising_edge) {
+void Pll::CalculateOutputClockWaveforms(float input_clock_rising_edge)
+{
     for (auto output : outputs) {
-	float output_clock_period = clkout_period.at(output);
-	clkout_rising_edge[output] =
-	    fmod(input_clock_rising_edge -
-	             (clk_fbout_phase / 360.0) * ClkinPeriod() +
-	             output_clock_period * (clkout_phase[output] / 360.0),
-	         output_clock_period);
-	clkout_falling_edge[output] =
-	    fmod(clkout_rising_edge[output] +
-	             clkout_duty_cycle[output] * output_clock_period,
-	         output_clock_period);
+        float output_clock_period = clkout_period.at(output);
+        clkout_rising_edge[output] =
+          fmod(input_clock_rising_edge - (clk_fbout_phase / 360.0) * ClkinPeriod() + output_clock_period * (clkout_phase[output] / 360.0),
+               output_clock_period);
+        clkout_falling_edge[output] = fmod(clkout_rising_edge[output] + clkout_duty_cycle[output] * output_clock_period, output_clock_period);
     }
 }
 
-float Pll::FetchParam(RTLIL::Cell* cell, std::string&& param_name,
-                      float default_value) {
+float Pll::FetchParam(RTLIL::Cell *cell, std::string &&param_name, float default_value)
+{
     RTLIL::IdString param(RTLIL::escape_id(param_name));
     if (cell->hasParam(param)) {
-	auto param_obj = cell->parameters.at(param);
-	std::string value;
-	if (param_obj.flags & RTLIL::CONST_FLAG_STRING) {
-	    value = param_obj.decode_string();
-	} else {
-	    value = std::to_string(param_obj.as_int());
-	}
-	return std::stof(value);
+        auto param_obj = cell->parameters.at(param);
+        std::string value;
+        if (param_obj.flags & RTLIL::CONST_FLAG_STRING) {
+            value = param_obj.decode_string();
+        } else {
+            value = std::to_string(param_obj.as_int());
+        }
+        return std::stof(value);
     }
     return default_value;
 }
diff --git a/sdc-plugin/buffers.h b/sdc-plugin/buffers.h
index ba3faa4..bfa5a20 100644
--- a/sdc-plugin/buffers.h
+++ b/sdc-plugin/buffers.h
@@ -18,16 +18,15 @@
 #ifndef _BUFFERS_H_
 #define _BUFFERS_H_
 
+#include "kernel/rtlil.h"
 #include <string>
 #include <unordered_map>
 #include <vector>
-#include "kernel/rtlil.h"
 
 USING_YOSYS_NAMESPACE
 
 struct Buffer {
-    Buffer(float delay, const std::string& type, const std::string& output)
-        : delay(delay), type(type), output(output) {}
+    Buffer(float delay, const std::string &type, const std::string &output) : delay(delay), type(type), output(output) {}
     float delay;
     std::string type;
     std::string output;
@@ -47,12 +46,10 @@
 
 struct Pll : public ClockDivider {
     Pll() : ClockDivider({"PLLE2_ADV"}) {}
-    Pll(RTLIL::Cell* cell, float input_clock_period,
-        float input_clock_rising_edge);
+    Pll(RTLIL::Cell *cell, float input_clock_period, float input_clock_rising_edge);
 
     // Helper function to fetch a cell parameter or return a default value
-    static float FetchParam(RTLIL::Cell* cell, std::string&& param_name,
-                            float default_value);
+    static float FetchParam(RTLIL::Cell *cell, std::string &&param_name, float default_value);
 
     // Get the period of the input clock
     // TODO Add support for CLKINSEL
@@ -65,13 +62,13 @@
     std::unordered_map<std::string, float> clkout_rising_edge;
     std::unordered_map<std::string, float> clkout_falling_edge;
 
-   private:
+  private:
     // Approximate equality check of the input clock period and specified in
     // CLKIN[1/2]_PERIOD parameter
-    void CheckInputClockPeriod(RTLIL::Cell* cell, float input_clock_period);
+    void CheckInputClockPeriod(RTLIL::Cell *cell, float input_clock_period);
 
     // Fetch cell's parameters needed for further calculations
-    void FetchParams(RTLIL::Cell* cell);
+    void FetchParams(RTLIL::Cell *cell);
 
     // Calculate the period on the output clocks
     void CalculateOutputClockPeriods();
@@ -90,4 +87,4 @@
     float clk_fbout_phase;
 };
 
-#endif  // _BUFFERS_H_
+#endif // _BUFFERS_H_
diff --git a/sdc-plugin/clocks.cc b/sdc-plugin/clocks.cc
index 865dd37..6dbb962 100644
--- a/sdc-plugin/clocks.cc
+++ b/sdc-plugin/clocks.cc
@@ -16,141 +16,127 @@
  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 #include "clocks.h"
+#include "kernel/register.h"
+#include "propagation.h"
 #include <cassert>
 #include <cmath>
 #include <regex>
-#include "kernel/register.h"
-#include "propagation.h"
 
-void Clock::Add(const std::string& name, RTLIL::Wire* wire, float period,
-                float rising_edge, float falling_edge, ClockType type) {
+void Clock::Add(const std::string &name, RTLIL::Wire *wire, float period, float rising_edge, float falling_edge, ClockType type)
+{
     wire->set_string_attribute(RTLIL::escape_id("CLOCK_SIGNAL"), "yes");
     wire->set_bool_attribute(RTLIL::escape_id("IS_GENERATED"), type == GENERATED);
     wire->set_bool_attribute(RTLIL::escape_id("IS_EXPLICIT"), type == EXPLICIT);
     wire->set_bool_attribute(RTLIL::escape_id("IS_PROPAGATED"), type == PROPAGATED);
     wire->set_string_attribute(RTLIL::escape_id("CLASS"), "clock");
     wire->set_string_attribute(RTLIL::escape_id("NAME"), name);
-    wire->set_string_attribute(RTLIL::escape_id("SOURCE_WIRES"),
-                               Clock::WireName(wire));
-    wire->set_string_attribute(RTLIL::escape_id("PERIOD"),
-                               std::to_string(period));
-    std::string waveform(std::to_string(rising_edge) + " " +
-                         std::to_string(falling_edge));
+    wire->set_string_attribute(RTLIL::escape_id("SOURCE_WIRES"), Clock::WireName(wire));
+    wire->set_string_attribute(RTLIL::escape_id("PERIOD"), std::to_string(period));
+    std::string waveform(std::to_string(rising_edge) + " " + std::to_string(falling_edge));
     wire->set_string_attribute(RTLIL::escape_id("WAVEFORM"), waveform);
 }
 
-void Clock::Add(const std::string& name, std::vector<RTLIL::Wire*> wires,
-                float period, float rising_edge, float falling_edge, ClockType type) {
-    std::for_each(wires.begin(), wires.end(), [&](RTLIL::Wire* wire) {
-	Add(name, wire, period, rising_edge, falling_edge, type);
-    });
+void Clock::Add(const std::string &name, std::vector<RTLIL::Wire *> wires, float period, float rising_edge, float falling_edge, ClockType type)
+{
+    std::for_each(wires.begin(), wires.end(), [&](RTLIL::Wire *wire) { Add(name, wire, period, rising_edge, falling_edge, type); });
 }
 
-void Clock::Add(RTLIL::Wire* wire, float period, float rising_edge,
-                float falling_edge, ClockType type) {
+void Clock::Add(RTLIL::Wire *wire, float period, float rising_edge, float falling_edge, ClockType type)
+{
     Add(Clock::WireName(wire), wire, period, rising_edge, falling_edge, type);
 }
 
-float Clock::Period(RTLIL::Wire* clock_wire) {
+float Clock::Period(RTLIL::Wire *clock_wire)
+{
     if (!clock_wire->has_attribute(RTLIL::escape_id("PERIOD"))) {
-	log_cmd_error("PERIOD has not been specified on wire '%s'.\n",
-	              WireName(clock_wire).c_str());
+        log_cmd_error("PERIOD has not been specified on wire '%s'.\n", WireName(clock_wire).c_str());
     }
     float period(0);
     std::string period_str;
     try {
-	period_str =
-	    clock_wire->get_string_attribute(RTLIL::escape_id("PERIOD"));
-	period = std::stof(period_str);
-    } catch (const std::invalid_argument& e) {
-	log_cmd_error(
-	    "Incorrect value '%s' specifed on PERIOD attribute for wire "
-	    "'%s'.\nPERIOD needs to be a float value.\n",
-	    period_str.c_str(), WireName(clock_wire).c_str());
+        period_str = clock_wire->get_string_attribute(RTLIL::escape_id("PERIOD"));
+        period = std::stof(period_str);
+    } catch (const std::invalid_argument &e) {
+        log_cmd_error("Incorrect value '%s' specifed on PERIOD attribute for wire "
+                      "'%s'.\nPERIOD needs to be a float value.\n",
+                      period_str.c_str(), WireName(clock_wire).c_str());
     }
     return period;
 }
 
-std::pair<float, float> Clock::Waveform(RTLIL::Wire* clock_wire) {
+std::pair<float, float> Clock::Waveform(RTLIL::Wire *clock_wire)
+{
     if (!clock_wire->has_attribute(RTLIL::escape_id("WAVEFORM"))) {
-	float period(Period(clock_wire));
-	if (!period) {
-	    log_cmd_error(
-	        "Neither PERIOD nor WAVEFORM has been specified for wire %s\n",
-	        WireName(clock_wire).c_str());
-	    return std::make_pair(0, 0);
-	}
-	float falling_edge = period / 2;
-	log_warning(
-	    "Waveform has not been specified on wire '%s'.\nDefault value {0 %f} "
-	    "will be used\n",
-	    WireName(clock_wire).c_str(), falling_edge);
-	return std::make_pair(0, falling_edge);
+        float period(Period(clock_wire));
+        if (!period) {
+            log_cmd_error("Neither PERIOD nor WAVEFORM has been specified for wire %s\n", WireName(clock_wire).c_str());
+            return std::make_pair(0, 0);
+        }
+        float falling_edge = period / 2;
+        log_warning("Waveform has not been specified on wire '%s'.\nDefault value {0 %f} "
+                    "will be used\n",
+                    WireName(clock_wire).c_str(), falling_edge);
+        return std::make_pair(0, falling_edge);
     }
     float rising_edge(0);
     float falling_edge(0);
-    std::string waveform(
-        clock_wire->get_string_attribute(RTLIL::escape_id("WAVEFORM")));
-    if (std::sscanf(waveform.c_str(), "%f %f", &rising_edge, &falling_edge) !=
-        2) {
-	log_cmd_error(
-	    "Incorrect value '%s' specifed on WAVEFORM attribute for wire "
-	    "'%s'.\nWAVEFORM needs to be specified in form of '<rising_edge> "
-	    "<falling_edge>' where the edge values are floats.\n",
-	    waveform.c_str(), WireName(clock_wire).c_str());
+    std::string waveform(clock_wire->get_string_attribute(RTLIL::escape_id("WAVEFORM")));
+    if (std::sscanf(waveform.c_str(), "%f %f", &rising_edge, &falling_edge) != 2) {
+        log_cmd_error("Incorrect value '%s' specifed on WAVEFORM attribute for wire "
+                      "'%s'.\nWAVEFORM needs to be specified in form of '<rising_edge> "
+                      "<falling_edge>' where the edge values are floats.\n",
+                      waveform.c_str(), WireName(clock_wire).c_str());
     }
     return std::make_pair(rising_edge, falling_edge);
 }
 
-float Clock::RisingEdge(RTLIL::Wire* clock_wire) {
-    return Waveform(clock_wire).first;
-}
+float Clock::RisingEdge(RTLIL::Wire *clock_wire) { return Waveform(clock_wire).first; }
 
-float Clock::FallingEdge(RTLIL::Wire* clock_wire) {
-    return Waveform(clock_wire).second;
-}
+float Clock::FallingEdge(RTLIL::Wire *clock_wire) { return Waveform(clock_wire).second; }
 
-std::string Clock::Name(RTLIL::Wire* clock_wire) {
+std::string Clock::Name(RTLIL::Wire *clock_wire)
+{
     if (clock_wire->has_attribute(RTLIL::escape_id("NAME"))) {
-	return clock_wire->get_string_attribute(RTLIL::escape_id("NAME"));
+        return clock_wire->get_string_attribute(RTLIL::escape_id("NAME"));
     }
     return WireName(clock_wire);
 }
 
-std::string Clock::WireName(RTLIL::Wire* clock_wire) {
+std::string Clock::WireName(RTLIL::Wire *clock_wire)
+{
     if (!clock_wire) {
-	return std::string();
+        return std::string();
     }
     return AddEscaping(RTLIL::unescape_id(clock_wire->name));
 }
 
-std::string Clock::SourceWireName(RTLIL::Wire* clock_wire) {
+std::string Clock::SourceWireName(RTLIL::Wire *clock_wire)
+{
     if (clock_wire->has_attribute(RTLIL::escape_id("SOURCE_WIRES"))) {
-	return clock_wire->get_string_attribute(RTLIL::escape_id("SOURCE_WIRES"));
+        return clock_wire->get_string_attribute(RTLIL::escape_id("SOURCE_WIRES"));
     }
     return Name(clock_wire);
 }
 
-bool Clock::GetClockWireBoolAttribute(RTLIL::Wire* wire, const std::string& attribute_name) {
+bool Clock::GetClockWireBoolAttribute(RTLIL::Wire *wire, const std::string &attribute_name)
+{
     if (wire->has_attribute(RTLIL::escape_id(attribute_name))) {
-	return wire->get_bool_attribute(RTLIL::escape_id(attribute_name));
+        return wire->get_bool_attribute(RTLIL::escape_id(attribute_name));
     }
     return false;
 }
 
-const std::map<std::string, RTLIL::Wire*> Clocks::GetClocks(
-    RTLIL::Design* design) {
-    std::map<std::string, RTLIL::Wire*> clock_wires;
-    RTLIL::Module* top_module = design->top_module();
-    for (auto& wire_obj : top_module->wires_) {
-	auto& wire = wire_obj.second;
-	if (wire->has_attribute(RTLIL::escape_id("CLOCK_SIGNAL"))) {
-	    if (wire->get_string_attribute(RTLIL::escape_id("CLOCK_SIGNAL")) ==
-	        "yes") {
-		clock_wires.insert(std::make_pair(Clock::WireName(wire), wire));
-	    }
-	}
+const std::map<std::string, RTLIL::Wire *> Clocks::GetClocks(RTLIL::Design *design)
+{
+    std::map<std::string, RTLIL::Wire *> clock_wires;
+    RTLIL::Module *top_module = design->top_module();
+    for (auto &wire_obj : top_module->wires_) {
+        auto &wire = wire_obj.second;
+        if (wire->has_attribute(RTLIL::escape_id("CLOCK_SIGNAL"))) {
+            if (wire->get_string_attribute(RTLIL::escape_id("CLOCK_SIGNAL")) == "yes") {
+                clock_wires.insert(std::make_pair(Clock::WireName(wire), wire));
+            }
+        }
     }
     return clock_wires;
 }
-
diff --git a/sdc-plugin/clocks.h b/sdc-plugin/clocks.h
index f15858b..b11d1c0 100644
--- a/sdc-plugin/clocks.h
+++ b/sdc-plugin/clocks.h
@@ -18,10 +18,10 @@
 #ifndef _CLOCKS_H_
 #define _CLOCKS_H_
 
-#include <map>
-#include <vector>
 #include "buffers.h"
 #include "kernel/rtlil.h"
+#include <map>
+#include <vector>
 
 USING_YOSYS_NAMESPACE
 
@@ -30,49 +30,40 @@
 class ClockDividerPropagation;
 class Propagation;
 
-class Clock {
-   public:
+class Clock
+{
+  public:
     // We distinguish the following types of clock:
     // * EXPLICIT - added with create_clocks command
     // * GENERATED - propagated from explicit clocks changing the clock's parameters
     // * PROPAGATED - propagated from explicit clocks but with the same parameters as the driver
     enum ClockType { EXPLICIT, GENERATED, PROPAGATED };
-    static void Add(const std::string& name, RTLIL::Wire* wire, float period,
-                    float rising_edge, float falling_edge, ClockType type);
-    static void Add(const std::string& name, std::vector<RTLIL::Wire*> wires,
-                    float period, float rising_edge, float falling_edge, ClockType type);
-    static void Add(RTLIL::Wire* wire, float period, float rising_edge,
-                    float falling_edge, ClockType type);
-    static float Period(RTLIL::Wire* clock_wire);
-    static float RisingEdge(RTLIL::Wire* clock_wire);
-    static float FallingEdge(RTLIL::Wire* clock_wire);
-    static std::string Name(RTLIL::Wire* clock_wire);
-    static std::string WireName(RTLIL::Wire* wire);
-    static std::string AddEscaping(const std::string& name) {
-	return std::regex_replace(name, std::regex{"\\$"}, "\\$");
-    }
-    static std::string SourceWireName(RTLIL::Wire* clock_wire);
-    static bool IsPropagated(RTLIL::Wire* wire) {
-	return GetClockWireBoolAttribute(wire, "IS_PROPAGATED");
-    }
+    static void Add(const std::string &name, RTLIL::Wire *wire, float period, float rising_edge, float falling_edge, ClockType type);
+    static void Add(const std::string &name, std::vector<RTLIL::Wire *> wires, float period, float rising_edge, float falling_edge, ClockType type);
+    static void Add(RTLIL::Wire *wire, float period, float rising_edge, float falling_edge, ClockType type);
+    static float Period(RTLIL::Wire *clock_wire);
+    static float RisingEdge(RTLIL::Wire *clock_wire);
+    static float FallingEdge(RTLIL::Wire *clock_wire);
+    static std::string Name(RTLIL::Wire *clock_wire);
+    static std::string WireName(RTLIL::Wire *wire);
+    static std::string AddEscaping(const std::string &name) { return std::regex_replace(name, std::regex{"\\$"}, "\\$"); }
+    static std::string SourceWireName(RTLIL::Wire *clock_wire);
+    static bool IsPropagated(RTLIL::Wire *wire) { return GetClockWireBoolAttribute(wire, "IS_PROPAGATED"); }
 
-    static bool IsGenerated(RTLIL::Wire* wire) {
-	return GetClockWireBoolAttribute(wire, "IS_GENERATED");
-    }
+    static bool IsGenerated(RTLIL::Wire *wire) { return GetClockWireBoolAttribute(wire, "IS_GENERATED"); }
 
-    static bool IsExplicit(RTLIL::Wire* wire) {
-	return GetClockWireBoolAttribute(wire, "IS_EXPLICIT");
-    }
+    static bool IsExplicit(RTLIL::Wire *wire) { return GetClockWireBoolAttribute(wire, "IS_EXPLICIT"); }
 
-   private:
-    static std::pair<float, float> Waveform(RTLIL::Wire* clock_wire);
+  private:
+    static std::pair<float, float> Waveform(RTLIL::Wire *clock_wire);
 
-    static bool GetClockWireBoolAttribute(RTLIL::Wire* wire, const std::string& attribute_name);
+    static bool GetClockWireBoolAttribute(RTLIL::Wire *wire, const std::string &attribute_name);
 };
 
-class Clocks {
-   public:
-    static const std::map<std::string, RTLIL::Wire*> GetClocks(RTLIL::Design* design);
+class Clocks
+{
+  public:
+    static const std::map<std::string, RTLIL::Wire *> GetClocks(RTLIL::Design *design);
 };
 
-#endif  // _CLOCKS_H_
+#endif // _CLOCKS_H_
diff --git a/sdc-plugin/propagation.cc b/sdc-plugin/propagation.cc
index 460efbf..cfee89a 100644
--- a/sdc-plugin/propagation.cc
+++ b/sdc-plugin/propagation.cc
@@ -20,180 +20,156 @@
 
 USING_YOSYS_NAMESPACE
 
-void Propagation::PropagateThroughBuffers(Buffer buffer) {
-    for (auto& clock : Clocks::GetClocks(design_)) {
-	auto& clock_wire = clock.second;
+void Propagation::PropagateThroughBuffers(Buffer buffer)
+{
+    for (auto &clock : Clocks::GetClocks(design_)) {
+        auto &clock_wire = clock.second;
 #ifdef SDC_DEBUG
-	log("Clock wire %s\n", Clock::WireName(clock_wire).c_str());
+        log("Clock wire %s\n", Clock::WireName(clock_wire).c_str());
 #endif
-	auto buf_wires =
-	    FindSinkWiresForCellType(clock_wire, buffer.type, buffer.output);
-	int path_delay(0);
-	for (auto wire : buf_wires) {
+        auto buf_wires = FindSinkWiresForCellType(clock_wire, buffer.type, buffer.output);
+        int path_delay(0);
+        for (auto wire : buf_wires) {
 #ifdef SDC_DEBUG
-	    log("%s wire: %s\n", buffer.type.c_str(),
-	        RTLIL::id2cstr(wire->name));
+            log("%s wire: %s\n", buffer.type.c_str(), RTLIL::id2cstr(wire->name));
 #endif
-	    path_delay += buffer.delay;
-	    Clock::Add(wire, Clock::Period(clock_wire),
-	               Clock::RisingEdge(clock_wire) + path_delay,
-	               Clock::FallingEdge(clock_wire) + path_delay, Clock::PROPAGATED);
-	}
+            path_delay += buffer.delay;
+            Clock::Add(wire, Clock::Period(clock_wire), Clock::RisingEdge(clock_wire) + path_delay, Clock::FallingEdge(clock_wire) + path_delay,
+                       Clock::PROPAGATED);
+        }
     }
 }
 
-std::vector<RTLIL::Wire*> Propagation::FindSinkWiresForCellType(
-    RTLIL::Wire* driver_wire, const std::string& cell_type,
-    const std::string& cell_port) {
-    std::vector<RTLIL::Wire*> wires;
+std::vector<RTLIL::Wire *> Propagation::FindSinkWiresForCellType(RTLIL::Wire *driver_wire, const std::string &cell_type, const std::string &cell_port)
+{
+    std::vector<RTLIL::Wire *> wires;
     if (!driver_wire) {
-	return wires;
+        return wires;
     }
     auto cell = FindSinkCellOfType(driver_wire, cell_type);
-    RTLIL::Wire* wire = FindSinkWireOnPort(cell, cell_port);
+    RTLIL::Wire *wire = FindSinkWireOnPort(cell, cell_port);
     if (wire) {
-	wires.push_back(wire);
-	auto further_wires =
-	    FindSinkWiresForCellType(wire, cell_type, cell_port);
-	std::copy(further_wires.begin(), further_wires.end(),
-	          std::back_inserter(wires));
+        wires.push_back(wire);
+        auto further_wires = FindSinkWiresForCellType(wire, cell_type, cell_port);
+        std::copy(further_wires.begin(), further_wires.end(), std::back_inserter(wires));
     }
     return wires;
 }
 
-RTLIL::Cell* Propagation::FindSinkCellOfType(RTLIL::Wire* wire,
-                                             const std::string& type) {
-    RTLIL::Cell* sink_cell = NULL;
+RTLIL::Cell *Propagation::FindSinkCellOfType(RTLIL::Wire *wire, const std::string &type)
+{
+    RTLIL::Cell *sink_cell = NULL;
     if (!wire) {
-	return sink_cell;
+        return sink_cell;
     }
-    RTLIL::Module* top_module = design_->top_module();
+    RTLIL::Module *top_module = design_->top_module();
     assert(top_module);
-    std::string base_selection =
-        top_module->name.str() + "/w:" + wire->name.str();
-    pass_->extra_args(std::vector<std::string>{base_selection, "%co:+" + type,
-                                               base_selection, "%d"},
-                      0, design_);
+    std::string base_selection = top_module->name.str() + "/w:" + wire->name.str();
+    pass_->extra_args(std::vector<std::string>{base_selection, "%co:+" + type, base_selection, "%d"}, 0, design_);
     auto selected_cells = top_module->selected_cells();
     // FIXME Handle more than one sink
     assert(selected_cells.size() <= 1);
     if (selected_cells.size() > 0) {
-	sink_cell = selected_cells.at(0);
+        sink_cell = selected_cells.at(0);
 #ifdef SDC_DEBUG
-	log("Found sink cell: %s\n",
-	    RTLIL::unescape_id(sink_cell->name).c_str());
+        log("Found sink cell: %s\n", RTLIL::unescape_id(sink_cell->name).c_str());
 #endif
     }
     return sink_cell;
 }
 
-RTLIL::Cell* Propagation::FindSinkCellOnPort(RTLIL::Wire* wire,
-                                             const std::string& port) {
-    RTLIL::Cell* sink_cell = NULL;
+RTLIL::Cell *Propagation::FindSinkCellOnPort(RTLIL::Wire *wire, const std::string &port)
+{
+    RTLIL::Cell *sink_cell = NULL;
     if (!wire) {
-	return sink_cell;
+        return sink_cell;
     }
-    RTLIL::Module* top_module = design_->top_module();
+    RTLIL::Module *top_module = design_->top_module();
     assert(top_module);
-    std::string base_selection =
-        top_module->name.str() + "/w:" + wire->name.str();
-    pass_->extra_args(
-        std::vector<std::string>{base_selection, "%co:+[" + port + "]",
-                                 base_selection, "%d"},
-        0, design_);
+    std::string base_selection = top_module->name.str() + "/w:" + wire->name.str();
+    pass_->extra_args(std::vector<std::string>{base_selection, "%co:+[" + port + "]", base_selection, "%d"}, 0, design_);
     auto selected_cells = top_module->selected_cells();
     // FIXME Handle more than one sink
     assert(selected_cells.size() <= 1);
     if (selected_cells.size() > 0) {
-	sink_cell = selected_cells.at(0);
+        sink_cell = selected_cells.at(0);
 #ifdef SDC_DEBUG
-	log("Found sink cell: %s\n",
-	    RTLIL::unescape_id(sink_cell->name).c_str());
+        log("Found sink cell: %s\n", RTLIL::unescape_id(sink_cell->name).c_str());
 #endif
     }
     return sink_cell;
 }
 
-bool Propagation::WireHasSinkCell(RTLIL::Wire* wire) {
+bool Propagation::WireHasSinkCell(RTLIL::Wire *wire)
+{
     if (!wire) {
-	return false;
+        return false;
     }
-    RTLIL::Module* top_module = design_->top_module();
+    RTLIL::Module *top_module = design_->top_module();
     assert(top_module);
-    std::string base_selection =
-        top_module->name.str() + "/w:" + wire->name.str();
-    pass_->extra_args(
-        std::vector<std::string>{base_selection, "%co:*",
-                                 base_selection, "%d"},
-        0, design_);
+    std::string base_selection = top_module->name.str() + "/w:" + wire->name.str();
+    pass_->extra_args(std::vector<std::string>{base_selection, "%co:*", base_selection, "%d"}, 0, design_);
     auto selected_cells = top_module->selected_cells();
     return selected_cells.size() > 0;
 }
 
-RTLIL::Wire* Propagation::FindSinkWireOnPort(RTLIL::Cell* cell,
-                                             const std::string& port_name) {
-    RTLIL::Wire* sink_wire = NULL;
+RTLIL::Wire *Propagation::FindSinkWireOnPort(RTLIL::Cell *cell, const std::string &port_name)
+{
+    RTLIL::Wire *sink_wire = NULL;
     if (!cell) {
-	return sink_wire;
+        return sink_wire;
     }
-    RTLIL::Module* top_module = design_->top_module();
+    RTLIL::Module *top_module = design_->top_module();
     assert(top_module);
-    std::string base_selection =
-        top_module->name.str() + "/c:" + cell->name.str();
-    pass_->extra_args(
-        std::vector<std::string>{base_selection, "%co:+[" + port_name + "]",
-                                 base_selection, "%d"},
-        0, design_);
+    std::string base_selection = top_module->name.str() + "/c:" + cell->name.str();
+    pass_->extra_args(std::vector<std::string>{base_selection, "%co:+[" + port_name + "]", base_selection, "%d"}, 0, design_);
     auto selected_wires = top_module->selected_wires();
     // FIXME Handle more than one sink
     assert(selected_wires.size() <= 1);
     if (selected_wires.size() > 0) {
-	sink_wire = selected_wires.at(0);
+        sink_wire = selected_wires.at(0);
 #ifdef SDC_DEBUG
-	log("Found sink wire: %s\n",
-	    RTLIL::unescape_id(sink_wire->name).c_str());
+        log("Found sink wire: %s\n", RTLIL::unescape_id(sink_wire->name).c_str());
 #endif
     }
     return sink_wire;
 }
 
-void NaturalPropagation::Run() {
+void NaturalPropagation::Run()
+{
 #ifdef SDC_DEBUG
     log("Start natural clock propagation\n");
 #endif
-    for (auto& clock : Clocks::GetClocks(design_)) {
-	auto& clock_wire = clock.second;
+    for (auto &clock : Clocks::GetClocks(design_)) {
+        auto &clock_wire = clock.second;
 #ifdef SDC_DEBUG
-	log("Processing clock %s\n", RTLIL::id2cstr(clock_wire->name));
+        log("Processing clock %s\n", RTLIL::id2cstr(clock_wire->name));
 #endif
-	auto aliases = FindAliasWires(clock_wire);
-	Clock::Add(Clock::WireName(clock_wire), aliases,
-	           Clock::Period(clock_wire), Clock::RisingEdge(clock_wire),
-	           Clock::FallingEdge(clock_wire), Clock::PROPAGATED);
+        auto aliases = FindAliasWires(clock_wire);
+        Clock::Add(Clock::WireName(clock_wire), aliases, Clock::Period(clock_wire), Clock::RisingEdge(clock_wire), Clock::FallingEdge(clock_wire),
+                   Clock::PROPAGATED);
     }
 #ifdef SDC_DEBUG
     log("Finish natural clock propagation\n\n");
 #endif
 }
 
-std::vector<RTLIL::Wire*> NaturalPropagation::FindAliasWires(
-    RTLIL::Wire* wire) {
-    RTLIL::Module* top_module = design_->top_module();
+std::vector<RTLIL::Wire *> NaturalPropagation::FindAliasWires(RTLIL::Wire *wire)
+{
+    RTLIL::Module *top_module = design_->top_module();
     assert(top_module);
-    std::vector<RTLIL::Wire*> alias_wires;
-    pass_->extra_args(
-        std::vector<std::string>{
-            top_module->name.str() + "/w:" + wire->name.str(), "%a"},
-        0, design_);
+    std::vector<RTLIL::Wire *> alias_wires;
+    pass_->extra_args(std::vector<std::string>{top_module->name.str() + "/w:" + wire->name.str(), "%a"}, 0, design_);
     for (auto module : design_->selected_modules()) {
-	for (auto wire : module->selected_wires()) {
-	    alias_wires.push_back(wire);
-	}
+        for (auto wire : module->selected_wires()) {
+            alias_wires.push_back(wire);
+        }
     }
     return alias_wires;
 }
 
-void BufferPropagation::Run() {
+void BufferPropagation::Run()
+{
 #ifdef SDC_DEBUG
     log("Start buffer clock propagation\n");
     log("IBUF pass\n");
@@ -208,7 +184,8 @@
 #endif
 }
 
-void ClockDividerPropagation::Run() {
+void ClockDividerPropagation::Run()
+{
 #ifdef SDC_DEBUG
     log("Start clock divider clock propagation\n");
 #endif
@@ -219,45 +196,42 @@
 #endif
 }
 
-void ClockDividerPropagation::PropagateThroughClockDividers(
-    ClockDivider divider) {
-    for (auto& clock : Clocks::GetClocks(design_)) {
-	auto& clock_wire = clock.second;
+void ClockDividerPropagation::PropagateThroughClockDividers(ClockDivider divider)
+{
+    for (auto &clock : Clocks::GetClocks(design_)) {
+        auto &clock_wire = clock.second;
 #ifdef SDC_DEBUG
-	log("Processing clock %s\n", Clock::WireName(clock_wire).c_str());
+        log("Processing clock %s\n", Clock::WireName(clock_wire).c_str());
 #endif
-	PropagateClocksForCellType(clock_wire, divider.type);
+        PropagateClocksForCellType(clock_wire, divider.type);
     }
 }
 
-void ClockDividerPropagation::PropagateClocksForCellType(
-    RTLIL::Wire* driver_wire, const std::string& cell_type) {
+void ClockDividerPropagation::PropagateClocksForCellType(RTLIL::Wire *driver_wire, const std::string &cell_type)
+{
     if (cell_type == "PLLE2_ADV") {
-	RTLIL::Cell* cell = NULL;
-	for (auto input : Pll::inputs) {
-	    cell = FindSinkCellOnPort(driver_wire, input);
-	    if (cell and RTLIL::unescape_id(cell->type) == cell_type) {
-		break;
-	    }
-	}
-	if (!cell) {
-	    return;
-	}
-	Pll pll(cell, Clock::Period(driver_wire),
-	        Clock::RisingEdge(driver_wire));
-	for (auto output : Pll::outputs) {
-	    RTLIL::Wire* wire = FindSinkWireOnPort(cell, output);
-	    // Don't add clocks on dangling wires
-	    // TODO Remove the workaround with the WireHasSinkCell check once the following issue is fixed:
-	    // https://github.com/SymbiFlow/yosys-symbiflow-plugins/issues/59
-	    if (wire && WireHasSinkCell(wire)) {
-		float clkout_period(pll.clkout_period.at(output));
-		float clkout_rising_edge(pll.clkout_rising_edge.at(output));
-		float clkout_falling_edge(pll.clkout_falling_edge.at(output));
-		Clock::Add(wire, clkout_period, clkout_rising_edge,
-		           clkout_falling_edge, Clock::GENERATED);
-	    }
-	}
+        RTLIL::Cell *cell = NULL;
+        for (auto input : Pll::inputs) {
+            cell = FindSinkCellOnPort(driver_wire, input);
+            if (cell and RTLIL::unescape_id(cell->type) == cell_type) {
+                break;
+            }
+        }
+        if (!cell) {
+            return;
+        }
+        Pll pll(cell, Clock::Period(driver_wire), Clock::RisingEdge(driver_wire));
+        for (auto output : Pll::outputs) {
+            RTLIL::Wire *wire = FindSinkWireOnPort(cell, output);
+            // Don't add clocks on dangling wires
+            // TODO Remove the workaround with the WireHasSinkCell check once the following issue is fixed:
+            // https://github.com/SymbiFlow/yosys-symbiflow-plugins/issues/59
+            if (wire && WireHasSinkCell(wire)) {
+                float clkout_period(pll.clkout_period.at(output));
+                float clkout_rising_edge(pll.clkout_rising_edge.at(output));
+                float clkout_falling_edge(pll.clkout_falling_edge.at(output));
+                Clock::Add(wire, clkout_period, clkout_rising_edge, clkout_falling_edge, Clock::GENERATED);
+            }
+        }
     }
 }
-
diff --git a/sdc-plugin/propagation.h b/sdc-plugin/propagation.h
index 3efd984..6b0f755 100644
--- a/sdc-plugin/propagation.h
+++ b/sdc-plugin/propagation.h
@@ -22,56 +22,52 @@
 
 USING_YOSYS_NAMESPACE
 
-class Propagation {
-   public:
-    Propagation(RTLIL::Design* design, Pass* pass)
-        : design_(design), pass_(pass) {}
+class Propagation
+{
+  public:
+    Propagation(RTLIL::Design *design, Pass *pass) : design_(design), pass_(pass) {}
     virtual ~Propagation() {}
 
     virtual void Run() = 0;
 
-   protected:
-    RTLIL::Design* design_;
-    Pass* pass_;
+  protected:
+    RTLIL::Design *design_;
+    Pass *pass_;
 
     // This propagation doesn't change the clock so the sink wire is only marked
     // as propagated clock signal, but has the properties of the driving clock
     void PropagateThroughBuffers(Buffer buffer);
-    std::vector<RTLIL::Wire*> FindSinkWiresForCellType(
-        RTLIL::Wire* driver_wire, const std::string& cell_type,
-        const std::string& cell_port);
-    RTLIL::Cell* FindSinkCellOfType(RTLIL::Wire* wire, const std::string& type);
-    RTLIL::Cell* FindSinkCellOnPort(RTLIL::Wire* wire, const std::string& port);
-    RTLIL::Wire* FindSinkWireOnPort(RTLIL::Cell* cell,
-                                    const std::string& port_name);
-    bool WireHasSinkCell(RTLIL::Wire* wire);
+    std::vector<RTLIL::Wire *> FindSinkWiresForCellType(RTLIL::Wire *driver_wire, const std::string &cell_type, const std::string &cell_port);
+    RTLIL::Cell *FindSinkCellOfType(RTLIL::Wire *wire, const std::string &type);
+    RTLIL::Cell *FindSinkCellOnPort(RTLIL::Wire *wire, const std::string &port);
+    RTLIL::Wire *FindSinkWireOnPort(RTLIL::Cell *cell, const std::string &port_name);
+    bool WireHasSinkCell(RTLIL::Wire *wire);
 };
 
-class NaturalPropagation : public Propagation {
-   public:
-    NaturalPropagation(RTLIL::Design* design, Pass* pass)
-        : Propagation(design, pass) {}
+class NaturalPropagation : public Propagation
+{
+  public:
+    NaturalPropagation(RTLIL::Design *design, Pass *pass) : Propagation(design, pass) {}
 
     void Run() override;
-    std::vector<RTLIL::Wire*> FindAliasWires(RTLIL::Wire* wire);
+    std::vector<RTLIL::Wire *> FindAliasWires(RTLIL::Wire *wire);
 };
 
-class BufferPropagation : public Propagation {
-   public:
-    BufferPropagation(RTLIL::Design* design, Pass* pass)
-        : Propagation(design, pass) {}
+class BufferPropagation : public Propagation
+{
+  public:
+    BufferPropagation(RTLIL::Design *design, Pass *pass) : Propagation(design, pass) {}
 
     void Run() override;
 };
 
-class ClockDividerPropagation : public Propagation {
-   public:
-    ClockDividerPropagation(RTLIL::Design* design, Pass* pass)
-        : Propagation(design, pass) {}
+class ClockDividerPropagation : public Propagation
+{
+  public:
+    ClockDividerPropagation(RTLIL::Design *design, Pass *pass) : Propagation(design, pass) {}
 
     void Run() override;
-    void PropagateClocksForCellType(RTLIL::Wire* driver_wire,
-                                    const std::string& cell_type);
+    void PropagateClocksForCellType(RTLIL::Wire *driver_wire, const std::string &cell_type);
     void PropagateThroughClockDividers(ClockDivider divider);
 };
-#endif  // PROPAGATION_H_
+#endif // PROPAGATION_H_
diff --git a/sdc-plugin/sdc.cc b/sdc-plugin/sdc.cc
index 6ddaf01..dd058d9 100644
--- a/sdc-plugin/sdc.cc
+++ b/sdc-plugin/sdc.cc
@@ -35,300 +35,290 @@
 struct ReadSdcCmd : public Frontend {
     ReadSdcCmd() : Frontend("sdc", "Read SDC file") {}
 
-    void help() override {
-	log("\n");
-	log("    read_sdc <filename>\n");
-	log("\n");
-	log("Read SDC file.\n");
-	log("\n");
+    void help() override
+    {
+        log("\n");
+        log("    read_sdc <filename>\n");
+        log("\n");
+        log("Read SDC file.\n");
+        log("\n");
     }
 
-    void execute(std::istream*& f, std::string filename,
-                 std::vector<std::string> args, RTLIL::Design*) override {
-	if (args.size() < 2) {
-	    log_cmd_error("Missing script file.\n");
-	}
-	log("\nReading clock constraints file(SDC)\n\n");
-	size_t argidx = 1;
-	extra_args(f, filename, args, argidx);
-	std::string content{std::istreambuf_iterator<char>(*f),
-	                    std::istreambuf_iterator<char>()};
-	log("%s\n", content.c_str());
-	Tcl_Interp* interp = yosys_get_tcl_interp();
-	if (Tcl_EvalFile(interp, args[argidx].c_str()) != TCL_OK) {
-	    log_cmd_error("TCL interpreter returned an error: %s\n",
-	                  Tcl_GetStringResult(interp));
-	}
+    void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *) override
+    {
+        if (args.size() < 2) {
+            log_cmd_error("Missing script file.\n");
+        }
+        log("\nReading clock constraints file(SDC)\n\n");
+        size_t argidx = 1;
+        extra_args(f, filename, args, argidx);
+        std::string content{std::istreambuf_iterator<char>(*f), std::istreambuf_iterator<char>()};
+        log("%s\n", content.c_str());
+        Tcl_Interp *interp = yosys_get_tcl_interp();
+        if (Tcl_EvalFile(interp, args[argidx].c_str()) != TCL_OK) {
+            log_cmd_error("TCL interpreter returned an error: %s\n", Tcl_GetStringResult(interp));
+        }
     }
 };
 
 struct WriteSdcCmd : public Backend {
-    WriteSdcCmd(SdcWriter& sdc_writer)
-        : Backend("sdc", "Write SDC file"), sdc_writer_(sdc_writer) {}
+    WriteSdcCmd(SdcWriter &sdc_writer) : Backend("sdc", "Write SDC file"), sdc_writer_(sdc_writer) {}
 
-    void help() override {
-	log("\n");
-	log("    write_sdc <filename>\n");
-	log("\n");
-	log("Write SDC file.\n");
-	log("\n");
+    void help() override
+    {
+        log("\n");
+        log("    write_sdc <filename>\n");
+        log("\n");
+        log("Write SDC file.\n");
+        log("\n");
     }
 
-    void execute(std::ostream*& f, std::string filename,
-                 std::vector<std::string> args,
-                 RTLIL::Design* design) override {
-	if (args.size() < 2) {
-	    log_cmd_error("Missing output file.\n");
-	}
-	log("\nWriting out clock constraints file(SDC)\n");
-	extra_args(f, filename, args, 1);
-	sdc_writer_.WriteSdc(design, *f);
+    void execute(std::ostream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) override
+    {
+        if (args.size() < 2) {
+            log_cmd_error("Missing output file.\n");
+        }
+        log("\nWriting out clock constraints file(SDC)\n");
+        extra_args(f, filename, args, 1);
+        sdc_writer_.WriteSdc(design, *f);
     }
 
-    SdcWriter& sdc_writer_;
+    SdcWriter &sdc_writer_;
 };
 
 struct CreateClockCmd : public Pass {
     CreateClockCmd() : Pass("create_clock", "Create clock object") {}
 
-    void help() override {
-	log("\n");
-	log("    create_clock [ -name clock_name ] -period period_value "
-	    "[-waveform <edge_list>] <target>\n");
-	log("Define a clock.\n");
-	log("If name is not specified then the name of the first target is "
-	    "selected as the clock's name.\n");
-	log("Period is expressed in nanoseconds.\n");
-	log("The waveform option specifies the duty cycle (the rising a "
-	    "falling edges) of the clock.\n");
-	log("It is specified as a list of two elements/time values: the first "
-	    "rising edge and the next falling edge.\n");
-	log("\n");
+    void help() override
+    {
+        log("\n");
+        log("    create_clock [ -name clock_name ] -period period_value "
+            "[-waveform <edge_list>] <target>\n");
+        log("Define a clock.\n");
+        log("If name is not specified then the name of the first target is "
+            "selected as the clock's name.\n");
+        log("Period is expressed in nanoseconds.\n");
+        log("The waveform option specifies the duty cycle (the rising a "
+            "falling edges) of the clock.\n");
+        log("It is specified as a list of two elements/time values: the first "
+            "rising edge and the next falling edge.\n");
+        log("\n");
     }
 
-    void execute(std::vector<std::string> args,
-                 RTLIL::Design* design) override {
-	size_t argidx;
-	std::string name;
-	bool is_waveform_specified(false);
-	float rising_edge(0);
-	float falling_edge(0);
-	float period(0);
-	if (args.size() < 4) {
-	    log_cmd_error("Incorrect number of arguments\n");
-	}
-	for (argidx = 1; argidx < args.size(); argidx++) {
-	    std::string arg = args[argidx];
-	    if (arg == "-name" && argidx + 1 < args.size()) {
-		name = args[++argidx];
-		continue;
-	    }
-	    if (arg == "-period" && argidx + 1 < args.size()) {
-		period = std::stof(args[++argidx]);
-		continue;
-	    }
-	    if (arg == "-waveform" && argidx + 1 < args.size()) {
-		std::string edges(args[++argidx]);
-		std::copy_if(edges.begin(), edges.end(), edges.begin(),
-		             [](char c) { return c != '{' or c != '}'; });
-		std::stringstream ss(edges);
-		ss >> rising_edge >> falling_edge;
-		is_waveform_specified = true;
-		continue;
-	    }
-	    break;
-	}
-	if (period <= 0) {
-	    log_cmd_error("Incorrect period value\n");
-	}
-	// Add "w:" prefix to selection arguments to enforce wire object
-	// selection
-	AddWirePrefix(args, argidx);
-	extra_args(args, argidx, design);
-	// If clock name is not specified then take the name of the first target
-	std::vector<RTLIL::Wire*> selected_wires;
-	for (auto module : design->modules()) {
-	    if (!design->selected(module)) {
-		continue;
-	    }
-	    for (auto wire : module->wires()) {
-		if (design->selected(module, wire)) {
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override
+    {
+        size_t argidx;
+        std::string name;
+        bool is_waveform_specified(false);
+        float rising_edge(0);
+        float falling_edge(0);
+        float period(0);
+        if (args.size() < 4) {
+            log_cmd_error("Incorrect number of arguments\n");
+        }
+        for (argidx = 1; argidx < args.size(); argidx++) {
+            std::string arg = args[argidx];
+            if (arg == "-name" && argidx + 1 < args.size()) {
+                name = args[++argidx];
+                continue;
+            }
+            if (arg == "-period" && argidx + 1 < args.size()) {
+                period = std::stof(args[++argidx]);
+                continue;
+            }
+            if (arg == "-waveform" && argidx + 1 < args.size()) {
+                std::string edges(args[++argidx]);
+                std::copy_if(edges.begin(), edges.end(), edges.begin(), [](char c) { return c != '{' or c != '}'; });
+                std::stringstream ss(edges);
+                ss >> rising_edge >> falling_edge;
+                is_waveform_specified = true;
+                continue;
+            }
+            break;
+        }
+        if (period <= 0) {
+            log_cmd_error("Incorrect period value\n");
+        }
+        // Add "w:" prefix to selection arguments to enforce wire object
+        // selection
+        AddWirePrefix(args, argidx);
+        extra_args(args, argidx, design);
+        // If clock name is not specified then take the name of the first target
+        std::vector<RTLIL::Wire *> selected_wires;
+        for (auto module : design->modules()) {
+            if (!design->selected(module)) {
+                continue;
+            }
+            for (auto wire : module->wires()) {
+                if (design->selected(module, wire)) {
 #ifdef SDC_DEBUG
-		    log("Selected wire %s\n",
-		        RTLIL::unescape_id(wire->name).c_str());
+                    log("Selected wire %s\n", RTLIL::unescape_id(wire->name).c_str());
 #endif
-		    selected_wires.push_back(wire);
-		}
-	    }
-	}
-	if (selected_wires.size() == 0) {
-	    log_cmd_error("Target selection is empty\n");
-	}
-	if (name.empty()) {
-	    name = RTLIL::unescape_id(selected_wires.at(0)->name);
-	}
-	if (!is_waveform_specified) {
-	    rising_edge = 0;
-	    falling_edge = period / 2;
-	}
-	Clock::Add(name, selected_wires, period, rising_edge, falling_edge, Clock::EXPLICIT);
+                    selected_wires.push_back(wire);
+                }
+            }
+        }
+        if (selected_wires.size() == 0) {
+            log_cmd_error("Target selection is empty\n");
+        }
+        if (name.empty()) {
+            name = RTLIL::unescape_id(selected_wires.at(0)->name);
+        }
+        if (!is_waveform_specified) {
+            rising_edge = 0;
+            falling_edge = period / 2;
+        }
+        Clock::Add(name, selected_wires, period, rising_edge, falling_edge, Clock::EXPLICIT);
     }
 
-    void AddWirePrefix(std::vector<std::string>& args, size_t argidx) {
-	auto selection_begin = args.begin() + argidx;
-	std::transform(selection_begin, args.end(), selection_begin,
-	               [](std::string& w) { return "w:" + w; });
+    void AddWirePrefix(std::vector<std::string> &args, size_t argidx)
+    {
+        auto selection_begin = args.begin() + argidx;
+        std::transform(selection_begin, args.end(), selection_begin, [](std::string &w) { return "w:" + w; });
     }
 };
 
 struct GetClocksCmd : public Pass {
     GetClocksCmd() : Pass("get_clocks", "Create clock object") {}
 
-    void help() override {
-	log("\n");
-	log("    get_clocks [-include_generated_clocks] [-of <nets>] "
-	    "[<patterns>]\n");
-	log("\n");
-	log("Returns all clocks in the design.\n");
-	log("\n");
-	log("    -include_generated_clocks\n");
-	log("        Include auto-generated clocks.\n");
-	log("\n");
-	log("    -of\n");
-	log("        Get clocks of these nets.\n");
-	log("\n");
-	log("    <pattern>\n");
-	log("        Pattern of clock names. Default are all clocks in the "
-	    "design.\n");
-	log("\n");
+    void help() override
+    {
+        log("\n");
+        log("    get_clocks [-include_generated_clocks] [-of <nets>] "
+            "[<patterns>]\n");
+        log("\n");
+        log("Returns all clocks in the design.\n");
+        log("\n");
+        log("    -include_generated_clocks\n");
+        log("        Include auto-generated clocks.\n");
+        log("\n");
+        log("    -of\n");
+        log("        Get clocks of these nets.\n");
+        log("\n");
+        log("    <pattern>\n");
+        log("        Pattern of clock names. Default are all clocks in the "
+            "design.\n");
+        log("\n");
     }
 
-    std::vector<std::string> extract_list(const std::string& args) {
-	std::vector<std::string> port_list;
-	std::stringstream ss(args);
-	std::istream_iterator<std::string> begin(ss);
-	std::istream_iterator<std::string> end;
-	std::copy(begin, end, std::back_inserter(port_list));
-	return port_list;
+    std::vector<std::string> extract_list(const std::string &args)
+    {
+        std::vector<std::string> port_list;
+        std::stringstream ss(args);
+        std::istream_iterator<std::string> begin(ss);
+        std::istream_iterator<std::string> end;
+        std::copy(begin, end, std::back_inserter(port_list));
+        return port_list;
     }
 
-    void execute(std::vector<std::string> args,
-                 RTLIL::Design* design) override {
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override
+    {
 
-	// Parse command arguments
-	bool include_generated_clocks(false);
-	std::vector<std::string> clocks_nets;
-	size_t argidx(0);
+        // Parse command arguments
+        bool include_generated_clocks(false);
+        std::vector<std::string> clocks_nets;
+        size_t argidx(0);
 
-	// Parse command switches
-	for (argidx = 1; argidx < args.size(); argidx++) {
-	    std::string arg = args[argidx];
-	    if (arg == "-include_generated_clocks") {
-		include_generated_clocks = true;
-		continue;
-	    }
-	    if (arg == "-of" and argidx + 1 < args.size()) {
-		clocks_nets = extract_list(args[++argidx]);
+        // Parse command switches
+        for (argidx = 1; argidx < args.size(); argidx++) {
+            std::string arg = args[argidx];
+            if (arg == "-include_generated_clocks") {
+                include_generated_clocks = true;
+                continue;
+            }
+            if (arg == "-of" and argidx + 1 < args.size()) {
+                clocks_nets = extract_list(args[++argidx]);
 #ifdef SDC_DEBUG
-		for (auto clock_net : clocks_nets) {
-		    log("Clock filter %s\n", clock_net.c_str());
-		}
+                for (auto clock_net : clocks_nets) {
+                    log("Clock filter %s\n", clock_net.c_str());
+                }
 #endif
-		continue;
-	    }
-	    if (arg.size() > 0 and arg[0] == '-') {
-		log_cmd_error("Unknown option %s.\n", arg.c_str());
-	    }
+                continue;
+            }
+            if (arg.size() > 0 and arg[0] == '-') {
+                log_cmd_error("Unknown option %s.\n", arg.c_str());
+            }
 
-	    break;
-	}
+            break;
+        }
 
-	// Parse object patterns
-	std::vector<std::string> clocks_list(args.begin() + argidx, args.end());
+        // Parse object patterns
+        std::vector<std::string> clocks_list(args.begin() + argidx, args.end());
 
-	// Fetch clocks in the design
-	std::map<std::string, RTLIL::Wire*> clocks(Clocks::GetClocks(design));
-	if (clocks.size() == 0) {
-	    log_warning("No clocks found in design\n");
-	}
+        // Fetch clocks in the design
+        std::map<std::string, RTLIL::Wire *> clocks(Clocks::GetClocks(design));
+        if (clocks.size() == 0) {
+            log_warning("No clocks found in design\n");
+        }
 
-	// Extract clocks into tcl list
-	Tcl_Interp* interp = yosys_get_tcl_interp();
-	Tcl_Obj* tcl_list = Tcl_NewListObj(0, NULL);
-	for (auto& clock : clocks) {
-	    // Skip propagated clocks (i.e. clock wires with the same parameters
-	    // as the master clocks they originate from
-	    if (Clock::IsPropagated(clock.second)) {
-		continue;
-	    }
-	    // Skip generated clocks if -include_generated_clocks is not specified
-	    if (Clock::IsGenerated(clock.second) and !include_generated_clocks) {
-		continue;
-	    }
-	    // Check if clock name is in the list of design clocks
-	    if (clocks_list.size() > 0 and
-	        std::find(clocks_list.begin(), clocks_list.end(),
-	                  clock.first) == clocks_list.end()) {
-		continue;
-	    }
-	    // Check if clock wire is in the -of list
-	    if (clocks_nets.size() > 0 and
-	        std::find(clocks_nets.begin(), clocks_nets.end(),
-	                  Clock::WireName(clock.second)) == clocks_nets.end()) {
-		continue;
-	    }
-	    auto& wire = clock.second;
-	    const char* name = RTLIL::id2cstr(wire->name);
-	    Tcl_Obj* name_obj = Tcl_NewStringObj(name, -1);
-	    Tcl_ListObjAppendElement(interp, tcl_list, name_obj);
-	}
-	Tcl_SetObjResult(interp, tcl_list);
+        // Extract clocks into tcl list
+        Tcl_Interp *interp = yosys_get_tcl_interp();
+        Tcl_Obj *tcl_list = Tcl_NewListObj(0, NULL);
+        for (auto &clock : clocks) {
+            // Skip propagated clocks (i.e. clock wires with the same parameters
+            // as the master clocks they originate from
+            if (Clock::IsPropagated(clock.second)) {
+                continue;
+            }
+            // Skip generated clocks if -include_generated_clocks is not specified
+            if (Clock::IsGenerated(clock.second) and !include_generated_clocks) {
+                continue;
+            }
+            // Check if clock name is in the list of design clocks
+            if (clocks_list.size() > 0 and std::find(clocks_list.begin(), clocks_list.end(), clock.first) == clocks_list.end()) {
+                continue;
+            }
+            // Check if clock wire is in the -of list
+            if (clocks_nets.size() > 0 and std::find(clocks_nets.begin(), clocks_nets.end(), Clock::WireName(clock.second)) == clocks_nets.end()) {
+                continue;
+            }
+            auto &wire = clock.second;
+            const char *name = RTLIL::id2cstr(wire->name);
+            Tcl_Obj *name_obj = Tcl_NewStringObj(name, -1);
+            Tcl_ListObjAppendElement(interp, tcl_list, name_obj);
+        }
+        Tcl_SetObjResult(interp, tcl_list);
     }
 };
 
 struct PropagateClocksCmd : public Pass {
-    PropagateClocksCmd()
-        : Pass("propagate_clocks", "Propagate clock information") {}
+    PropagateClocksCmd() : Pass("propagate_clocks", "Propagate clock information") {}
 
-    void help() override {
-	log("\n");
-	log("    propagate_clocks\n");
-	log("\n");
-	log("Propagate clock information throughout the design.\n");
-	log("\n");
+    void help() override
+    {
+        log("\n");
+        log("    propagate_clocks\n");
+        log("\n");
+        log("Propagate clock information throughout the design.\n");
+        log("\n");
     }
 
-    void execute(std::vector<std::string> args,
-                 RTLIL::Design* design) override {
-	if (args.size() > 1) {
-	    log_warning(
-	        "Command accepts no arguments.\nAll will be ignored.\n");
-	}
-	if (!design->top_module()) {
-	    log_cmd_error("No top module selected\n");
-	}
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override
+    {
+        if (args.size() > 1) {
+            log_warning("Command accepts no arguments.\nAll will be ignored.\n");
+        }
+        if (!design->top_module()) {
+            log_cmd_error("No top module selected\n");
+        }
 
-	std::array<std::unique_ptr<Propagation>, 2> passes{
-	    std::unique_ptr<Propagation>(new BufferPropagation(design, this)),
-	    std::unique_ptr<Propagation>(
-	        new ClockDividerPropagation(design, this))};
+        std::array<std::unique_ptr<Propagation>, 2> passes{std::unique_ptr<Propagation>(new BufferPropagation(design, this)),
+                                                           std::unique_ptr<Propagation>(new ClockDividerPropagation(design, this))};
 
-	log("Perform clock propagation\n");
+        log("Perform clock propagation\n");
 
-	for (auto& pass : passes) {
-	    pass->Run();
-	}
+        for (auto &pass : passes) {
+            pass->Run();
+        }
     }
 };
 
-class SdcPlugin {
-   public:
-    SdcPlugin()
-        : write_sdc_cmd_(sdc_writer_),
-          set_false_path_cmd_(sdc_writer_),
-          set_max_delay_cmd_(sdc_writer_),
-          set_clock_groups_cmd_(sdc_writer_) {
-	log("Loaded SDC plugin\n");
+class SdcPlugin
+{
+  public:
+    SdcPlugin() : write_sdc_cmd_(sdc_writer_), set_false_path_cmd_(sdc_writer_), set_max_delay_cmd_(sdc_writer_), set_clock_groups_cmd_(sdc_writer_)
+    {
+        log("Loaded SDC plugin\n");
     }
 
     ReadSdcCmd read_sdc_cmd_;
@@ -340,7 +330,7 @@
     SetMaxDelay set_max_delay_cmd_;
     SetClockGroups set_clock_groups_cmd_;
 
-   private:
+  private:
     SdcWriter sdc_writer_;
 } SdcPlugin;
 
diff --git a/sdc-plugin/sdc_writer.cc b/sdc-plugin/sdc_writer.cc
index b73e242..ed283a6 100644
--- a/sdc-plugin/sdc_writer.cc
+++ b/sdc-plugin/sdc_writer.cc
@@ -20,94 +20,92 @@
 USING_YOSYS_NAMESPACE
 
 const std::map<ClockGroups::ClockGroupRelation, std::string> ClockGroups::relation_name_map = {
-    {NONE, ""},
-    {ASYNCHRONOUS, "asynchronous"},
-    {PHYSICALLY_EXCLUSIVE, "physically_exclusive"},
-    {LOGICALLY_EXCLUSIVE, "logically_exclusive"}};
+  {NONE, ""}, {ASYNCHRONOUS, "asynchronous"}, {PHYSICALLY_EXCLUSIVE, "physically_exclusive"}, {LOGICALLY_EXCLUSIVE, "logically_exclusive"}};
 
-void SdcWriter::AddFalsePath(FalsePath false_path) {
-    false_paths_.push_back(false_path);
-}
+void SdcWriter::AddFalsePath(FalsePath false_path) { false_paths_.push_back(false_path); }
 
-void SdcWriter::SetMaxDelay(TimingPath timing_path) {
-    timing_paths_.push_back(timing_path);
-}
+void SdcWriter::SetMaxDelay(TimingPath timing_path) { timing_paths_.push_back(timing_path); }
 
-void SdcWriter::AddClockGroup(ClockGroups::ClockGroup clock_group, ClockGroups::ClockGroupRelation relation) {
+void SdcWriter::AddClockGroup(ClockGroups::ClockGroup clock_group, ClockGroups::ClockGroupRelation relation)
+{
     clock_groups_.Add(clock_group, relation);
 }
 
-void SdcWriter::WriteSdc(RTLIL::Design* design, std::ostream& file) {
+void SdcWriter::WriteSdc(RTLIL::Design *design, std::ostream &file)
+{
     WriteClocks(design, file);
     WriteFalsePaths(file);
     WriteMaxDelay(file);
     WriteClockGroups(file);
 }
 
-void SdcWriter::WriteClocks(RTLIL::Design* design, std::ostream& file) {
-    for (auto& clock : Clocks::GetClocks(design)) {
-	auto& clock_wire = clock.second;
-	// FIXME: Input port nets are not found in VPR
-	if (clock_wire->port_input) {
-	    continue;
-	}
-	// Write out only GENERATED and EXPLICIT clocks
-	if (Clock::IsPropagated(clock_wire)) {
-	    continue;
-	}
-	file << "create_clock -period " << Clock::Period(clock_wire);
-	file << " -waveform {" << Clock::RisingEdge(clock_wire) << " "
-	     << Clock::FallingEdge(clock_wire) << "}";
-	file << " " << Clock::SourceWireName(clock_wire);
-	file << std::endl;
+void SdcWriter::WriteClocks(RTLIL::Design *design, std::ostream &file)
+{
+    for (auto &clock : Clocks::GetClocks(design)) {
+        auto &clock_wire = clock.second;
+        // FIXME: Input port nets are not found in VPR
+        if (clock_wire->port_input) {
+            continue;
+        }
+        // Write out only GENERATED and EXPLICIT clocks
+        if (Clock::IsPropagated(clock_wire)) {
+            continue;
+        }
+        file << "create_clock -period " << Clock::Period(clock_wire);
+        file << " -waveform {" << Clock::RisingEdge(clock_wire) << " " << Clock::FallingEdge(clock_wire) << "}";
+        file << " " << Clock::SourceWireName(clock_wire);
+        file << std::endl;
     }
 }
 
-void SdcWriter::WriteFalsePaths(std::ostream& file) {
+void SdcWriter::WriteFalsePaths(std::ostream &file)
+{
     for (auto path : false_paths_) {
-	file << "set_false_path";
-	if (!path.from_pin.empty()) {
-	    file << " -from " << path.from_pin;
-	}
-	if (!path.through_pin.empty()) {
-	    file << " -through " << path.through_pin;
-	}
-	if (!path.to_pin.empty()) {
-	    file << " -to " << path.to_pin;
-	}
-	file << std::endl;
+        file << "set_false_path";
+        if (!path.from_pin.empty()) {
+            file << " -from " << path.from_pin;
+        }
+        if (!path.through_pin.empty()) {
+            file << " -through " << path.through_pin;
+        }
+        if (!path.to_pin.empty()) {
+            file << " -to " << path.to_pin;
+        }
+        file << std::endl;
     }
 }
 
-void SdcWriter::WriteMaxDelay(std::ostream& file) {
+void SdcWriter::WriteMaxDelay(std::ostream &file)
+{
     for (auto path : timing_paths_) {
-	file << "set_max_delay " << path.max_delay;
-	if (!path.from_pin.empty()) {
-	    file << " -from " << path.from_pin;
-	}
-	if (!path.to_pin.empty()) {
-	    file << " -to " << path.to_pin;
-	}
-	file << std::endl;
+        file << "set_max_delay " << path.max_delay;
+        if (!path.from_pin.empty()) {
+            file << " -from " << path.from_pin;
+        }
+        if (!path.to_pin.empty()) {
+            file << " -to " << path.to_pin;
+        }
+        file << std::endl;
     }
 }
 
-void SdcWriter::WriteClockGroups(std::ostream& file) {
+void SdcWriter::WriteClockGroups(std::ostream &file)
+{
     for (size_t relation = 0; relation <= ClockGroups::CLOCK_GROUP_RELATION_SIZE; relation++) {
-	auto clock_groups = clock_groups_.GetGroups(static_cast<ClockGroups::ClockGroupRelation>(relation));
-	if (clock_groups.size() == 0) {
-	    continue;
-	}
-	file << "create_clock_groups ";
-	for (auto group : clock_groups) {
-	    file << "-group ";
-	    for (auto signal : group) {
-		file << signal << " ";
-	    }
-	}
-	if (relation != ClockGroups::ClockGroupRelation::NONE) {
-	    file << "-" + ClockGroups::relation_name_map.at(static_cast<ClockGroups::ClockGroupRelation>(relation));
-	}
-	file << std::endl;
+        auto clock_groups = clock_groups_.GetGroups(static_cast<ClockGroups::ClockGroupRelation>(relation));
+        if (clock_groups.size() == 0) {
+            continue;
+        }
+        file << "create_clock_groups ";
+        for (auto group : clock_groups) {
+            file << "-group ";
+            for (auto signal : group) {
+                file << signal << " ";
+            }
+        }
+        if (relation != ClockGroups::ClockGroupRelation::NONE) {
+            file << "-" + ClockGroups::relation_name_map.at(static_cast<ClockGroups::ClockGroupRelation>(relation));
+        }
+        file << std::endl;
     }
 }
diff --git a/sdc-plugin/sdc_writer.h b/sdc-plugin/sdc_writer.h
index 5cdf8a2..ec503a7 100644
--- a/sdc-plugin/sdc_writer.h
+++ b/sdc-plugin/sdc_writer.h
@@ -39,39 +39,37 @@
     using ClockGroup = std::vector<std::string>;
     static const std::map<ClockGroupRelation, std::string> relation_name_map;
 
-    void Add(ClockGroup& group, ClockGroupRelation relation) {
-	groups_[relation].push_back(group);
+    void Add(ClockGroup &group, ClockGroupRelation relation) { groups_[relation].push_back(group); }
+    std::vector<ClockGroup> GetGroups(ClockGroupRelation relation)
+    {
+        if (groups_.count(relation)) {
+            return groups_.at(relation);
+        }
+        return std::vector<ClockGroup>();
     }
-    std::vector<ClockGroup> GetGroups(ClockGroupRelation relation) {
-	if (groups_.count(relation)) {
-	    return groups_.at(relation);
-	}
-	return std::vector<ClockGroup>();
-    }
-    size_t size() {
-	return groups_.size();
-    }
+    size_t size() { return groups_.size(); }
 
-   private:
-    std::map<ClockGroupRelation,std::vector<ClockGroup>> groups_;
+  private:
+    std::map<ClockGroupRelation, std::vector<ClockGroup>> groups_;
 };
 
-class SdcWriter {
-   public:
+class SdcWriter
+{
+  public:
     void AddFalsePath(FalsePath false_path);
     void SetMaxDelay(TimingPath timing_path);
     void AddClockGroup(ClockGroups::ClockGroup clock_group, ClockGroups::ClockGroupRelation relation);
-    void WriteSdc(RTLIL::Design* design, std::ostream& file);
+    void WriteSdc(RTLIL::Design *design, std::ostream &file);
 
-   private:
-    void WriteClocks(RTLIL::Design* design, std::ostream& file);
-    void WriteFalsePaths(std::ostream& file);
-    void WriteMaxDelay(std::ostream& file);
-    void WriteClockGroups(std::ostream& file);
+  private:
+    void WriteClocks(RTLIL::Design *design, std::ostream &file);
+    void WriteFalsePaths(std::ostream &file);
+    void WriteMaxDelay(std::ostream &file);
+    void WriteClockGroups(std::ostream &file);
 
     std::vector<FalsePath> false_paths_;
     std::vector<TimingPath> timing_paths_;
     ClockGroups clock_groups_;
 };
 
-#endif  // _SDC_WRITER_H_
+#endif // _SDC_WRITER_H_
diff --git a/sdc-plugin/set_clock_groups.cc b/sdc-plugin/set_clock_groups.cc
index 301ca96..e02047b 100644
--- a/sdc-plugin/set_clock_groups.cc
+++ b/sdc-plugin/set_clock_groups.cc
@@ -16,12 +16,13 @@
  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 #include "set_clock_groups.h"
-#include <regex>
 #include "kernel/log.h"
+#include <regex>
 
 USING_YOSYS_NAMESPACE
 
-void SetClockGroups::help() {
+void SetClockGroups::help()
+{
     //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
     log("\n");
     log("   set_clock_groups [-quiet] [-group <args>] [-asynchronous] \n");
@@ -42,11 +43,11 @@
     log("\n");
 }
 
-void SetClockGroups::execute(std::vector<std::string> args,
-                             RTLIL::Design* design) {
-    RTLIL::Module* top_module = design->top_module();
+void SetClockGroups::execute(std::vector<std::string> args, RTLIL::Design *design)
+{
+    RTLIL::Module *top_module = design->top_module();
     if (top_module == nullptr) {
-	log_cmd_error("No top module detected\n");
+        log_cmd_error("No top module detected\n");
     }
 
     size_t argidx;
@@ -56,61 +57,57 @@
 
     // Parse command arguments
     for (argidx = 1; argidx < args.size(); argidx++) {
-	std::string arg = args[argidx];
-	if (arg == "-quiet") {
-	    is_quiet = true;
-	    continue;
-	}
+        std::string arg = args[argidx];
+        if (arg == "-quiet") {
+            is_quiet = true;
+            continue;
+        }
 
-	// Parse clock groups relation: asynchronous, logically_exclusive, physically_exclusive
-	auto is_relation_arg =
-	    [arg](std::pair<ClockGroups::ClockGroupRelation, std::string>
-	            relation) {
-	        if (arg.substr(1) == relation.second) {
-		    return true;
-	        }
-	        return false;
-	    };
-	auto relation_map_it =
-	    std::find_if(ClockGroups::relation_name_map.begin(),
-	                 ClockGroups::relation_name_map.end(), is_relation_arg);
-	if (relation_map_it != ClockGroups::relation_name_map.end()) {
-	    clock_groups_relation = relation_map_it->first;
-	    continue;
-	}
+        // Parse clock groups relation: asynchronous, logically_exclusive, physically_exclusive
+        auto is_relation_arg = [arg](std::pair<ClockGroups::ClockGroupRelation, std::string> relation) {
+            if (arg.substr(1) == relation.second) {
+                return true;
+            }
+            return false;
+        };
+        auto relation_map_it = std::find_if(ClockGroups::relation_name_map.begin(), ClockGroups::relation_name_map.end(), is_relation_arg);
+        if (relation_map_it != ClockGroups::relation_name_map.end()) {
+            clock_groups_relation = relation_map_it->first;
+            continue;
+        }
 
-	if (arg == "-group" and argidx + 1 < args.size()) {
-	    ClockGroups::ClockGroup clock_group;
-	    while (argidx + 1 < args.size() and args[argidx+1][0] != '-') {
-		clock_group.push_back(args[++argidx]);
-	    }
-	    clock_groups.push_back(clock_group);
-	    continue;
-	}
+        if (arg == "-group" and argidx + 1 < args.size()) {
+            ClockGroups::ClockGroup clock_group;
+            while (argidx + 1 < args.size() and args[argidx + 1][0] != '-') {
+                clock_group.push_back(args[++argidx]);
+            }
+            clock_groups.push_back(clock_group);
+            continue;
+        }
 
-	if (arg.size() > 0 and arg[0] == '-') {
-	    log_cmd_error("Unknown option %s.\n", arg.c_str());
-	}
+        if (arg.size() > 0 and arg[0] == '-') {
+            log_cmd_error("Unknown option %s.\n", arg.c_str());
+        }
 
-	break;
+        break;
     }
 
     if (clock_groups.size()) {
-	if (!is_quiet) {
-	    std::string msg = ClockGroups::relation_name_map.at(clock_groups_relation);
-	    msg += (!msg.empty()) ? " " : "";
-	    log("Adding %sclock group with following clocks:\n", msg.c_str());
-	}
-	size_t count(0);
-	for (auto& group : clock_groups) {
-	    sdc_writer_.AddClockGroup(group, clock_groups_relation);
-	    if (!is_quiet) {
-		log("%zu: ", count++);
-		for (auto clk : group) {
-		    log("%s ", clk.c_str());
-		}
-		log("\n");
-	    }
-	}
+        if (!is_quiet) {
+            std::string msg = ClockGroups::relation_name_map.at(clock_groups_relation);
+            msg += (!msg.empty()) ? " " : "";
+            log("Adding %sclock group with following clocks:\n", msg.c_str());
+        }
+        size_t count(0);
+        for (auto &group : clock_groups) {
+            sdc_writer_.AddClockGroup(group, clock_groups_relation);
+            if (!is_quiet) {
+                log("%zu: ", count++);
+                for (auto clk : group) {
+                    log("%s ", clk.c_str());
+                }
+                log("\n");
+            }
+        }
     }
 }
diff --git a/sdc-plugin/set_clock_groups.h b/sdc-plugin/set_clock_groups.h
index 3114578..29062fa 100644
--- a/sdc-plugin/set_clock_groups.h
+++ b/sdc-plugin/set_clock_groups.h
@@ -25,15 +25,13 @@
 USING_YOSYS_NAMESPACE
 
 struct SetClockGroups : public Pass {
-    SetClockGroups(SdcWriter& sdc_writer)
-        : Pass("set_clock_groups", "Set exclusive or asynchronous clock groups"),
-          sdc_writer_(sdc_writer) {}
+    SetClockGroups(SdcWriter &sdc_writer) : Pass("set_clock_groups", "Set exclusive or asynchronous clock groups"), sdc_writer_(sdc_writer) {}
 
     void help() override;
 
-    void execute(std::vector<std::string> args, RTLIL::Design* design) override;
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override;
 
-    SdcWriter& sdc_writer_;
+    SdcWriter &sdc_writer_;
 };
 
-#endif  //_SET_CLOCK_GROUPS_H_
+#endif //_SET_CLOCK_GROUPS_H_
diff --git a/sdc-plugin/set_false_path.cc b/sdc-plugin/set_false_path.cc
index 18262d0..e5083b4 100644
--- a/sdc-plugin/set_false_path.cc
+++ b/sdc-plugin/set_false_path.cc
@@ -16,13 +16,14 @@
  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 #include "set_false_path.h"
-#include <regex>
 #include "kernel/log.h"
 #include "sdc_writer.h"
+#include <regex>
 
 USING_YOSYS_NAMESPACE
 
-void SetFalsePath::help() {
+void SetFalsePath::help()
+{
     //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
     log("\n");
     log("   set_false_path [-quiet] [-from <net_name>] [-to <net_name>] \n");
@@ -46,11 +47,11 @@
     log("\n");
 }
 
-void SetFalsePath::execute(std::vector<std::string> args,
-                           RTLIL::Design* design) {
-    RTLIL::Module* top_module = design->top_module();
+void SetFalsePath::execute(std::vector<std::string> args, RTLIL::Design *design)
+{
+    RTLIL::Module *top_module = design->top_module();
     if (top_module == nullptr) {
-	log_cmd_error("No top module detected\n");
+        log_cmd_error("No top module detected\n");
     }
 
     size_t argidx;
@@ -61,39 +62,38 @@
 
     // Parse command arguments
     for (argidx = 1; argidx < args.size(); argidx++) {
-	std::string arg = args[argidx];
-	if (arg == "-quiet") {
-	    is_quiet = true;
-	    continue;
-	}
+        std::string arg = args[argidx];
+        if (arg == "-quiet") {
+            is_quiet = true;
+            continue;
+        }
 
-	if (arg == "-from" and argidx + 1 < args.size()) {
-	    from_pin = args[++argidx];
-	    continue;
-	}
+        if (arg == "-from" and argidx + 1 < args.size()) {
+            from_pin = args[++argidx];
+            continue;
+        }
 
-	if (arg == "-to" and argidx + 1 < args.size()) {
-	    to_pin = args[++argidx];
-	    continue;
-	}
+        if (arg == "-to" and argidx + 1 < args.size()) {
+            to_pin = args[++argidx];
+            continue;
+        }
 
-	if (arg == "-through" and argidx + 1 < args.size()) {
-	    through_pin = args[++argidx];
-	    continue;
-	}
+        if (arg == "-through" and argidx + 1 < args.size()) {
+            through_pin = args[++argidx];
+            continue;
+        }
 
-	if (arg.size() > 0 and arg[0] == '-') {
-	    log_cmd_error("Unknown option %s.\n", arg.c_str());
-	}
+        if (arg.size() > 0 and arg[0] == '-') {
+            log_cmd_error("Unknown option %s.\n", arg.c_str());
+        }
 
-	break;
+        break;
     }
     if (!is_quiet) {
-	std::string msg = (from_pin.empty()) ? "" : "-from " + from_pin;
-	msg += (through_pin.empty()) ? "" : " -through " + through_pin;
-	msg += (to_pin.empty()) ? "" : " -to " + to_pin;
-	log("Adding false path %s\n", msg.c_str());
+        std::string msg = (from_pin.empty()) ? "" : "-from " + from_pin;
+        msg += (through_pin.empty()) ? "" : " -through " + through_pin;
+        msg += (to_pin.empty()) ? "" : " -to " + to_pin;
+        log("Adding false path %s\n", msg.c_str());
     }
-    sdc_writer_.AddFalsePath(FalsePath{
-        .from_pin = from_pin, .to_pin = to_pin, .through_pin = through_pin});
+    sdc_writer_.AddFalsePath(FalsePath{.from_pin = from_pin, .to_pin = to_pin, .through_pin = through_pin});
 }
diff --git a/sdc-plugin/set_false_path.h b/sdc-plugin/set_false_path.h
index 47bf08a..de36aa4 100644
--- a/sdc-plugin/set_false_path.h
+++ b/sdc-plugin/set_false_path.h
@@ -25,15 +25,13 @@
 USING_YOSYS_NAMESPACE
 
 struct SetFalsePath : public Pass {
-    SetFalsePath(SdcWriter& sdc_writer)
-        : Pass("set_false_path", "Set false path on net"),
-          sdc_writer_(sdc_writer) {}
+    SetFalsePath(SdcWriter &sdc_writer) : Pass("set_false_path", "Set false path on net"), sdc_writer_(sdc_writer) {}
 
     void help() override;
 
-    void execute(std::vector<std::string> args, RTLIL::Design* design) override;
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override;
 
-    SdcWriter& sdc_writer_;
+    SdcWriter &sdc_writer_;
 };
 
-#endif  //_SET_FALSE_PATH_H_
+#endif //_SET_FALSE_PATH_H_
diff --git a/sdc-plugin/set_max_delay.cc b/sdc-plugin/set_max_delay.cc
index 055e342..c517dec 100644
--- a/sdc-plugin/set_max_delay.cc
+++ b/sdc-plugin/set_max_delay.cc
@@ -21,7 +21,8 @@
 
 USING_YOSYS_NAMESPACE
 
-void SetMaxDelay::help() {
+void SetMaxDelay::help()
+{
     //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
     log("\n");
     log("   set_max_delay [-quiet] [-from <arg>] [-to <arg>] \n");
@@ -42,11 +43,11 @@
     log("\n");
 }
 
-void SetMaxDelay::execute(std::vector<std::string> args,
-                          RTLIL::Design* design) {
-    RTLIL::Module* top_module = design->top_module();
+void SetMaxDelay::execute(std::vector<std::string> args, RTLIL::Design *design)
+{
+    RTLIL::Module *top_module = design->top_module();
     if (top_module == nullptr) {
-	log_cmd_error("No top module detected\n");
+        log_cmd_error("No top module detected\n");
     }
 
     size_t argidx;
@@ -57,36 +58,35 @@
 
     // Parse command arguments
     for (argidx = 1; argidx < args.size(); argidx++) {
-	std::string arg = args[argidx];
-	if (arg == "-quiet") {
-	    is_quiet = true;
-	    continue;
-	}
+        std::string arg = args[argidx];
+        if (arg == "-quiet") {
+            is_quiet = true;
+            continue;
+        }
 
-	if (arg == "-from" and argidx + 1 < args.size()) {
-	    from_pin = args[++argidx];
-	    log("From: %s\n", from_pin.c_str());
-	    continue;
-	}
+        if (arg == "-from" and argidx + 1 < args.size()) {
+            from_pin = args[++argidx];
+            log("From: %s\n", from_pin.c_str());
+            continue;
+        }
 
-	if (arg == "-to" and argidx + 1 < args.size()) {
-	    to_pin = args[++argidx];
-	    log("To: %s\n", to_pin.c_str());
-	    continue;
-	}
+        if (arg == "-to" and argidx + 1 < args.size()) {
+            to_pin = args[++argidx];
+            log("To: %s\n", to_pin.c_str());
+            continue;
+        }
 
-	if (arg.size() > 0 and arg[0] == '-') {
-	    log_cmd_error("Unknown option %s.\n", arg.c_str());
-	}
+        if (arg.size() > 0 and arg[0] == '-') {
+            log_cmd_error("Unknown option %s.\n", arg.c_str());
+        }
 
-	max_delay = std::stof(args[argidx]);
+        max_delay = std::stof(args[argidx]);
     }
 
     if (!is_quiet) {
-	std::string msg = (from_pin.empty()) ? "" : "-from " + from_pin;
-	msg += (to_pin.empty()) ? "" : " -to " + to_pin;
-	log("Adding max path delay of %f on path %s\n", max_delay, msg.c_str());
+        std::string msg = (from_pin.empty()) ? "" : "-from " + from_pin;
+        msg += (to_pin.empty()) ? "" : " -to " + to_pin;
+        log("Adding max path delay of %f on path %s\n", max_delay, msg.c_str());
     }
-    sdc_writer_.SetMaxDelay(TimingPath{
-        .from_pin = from_pin, .to_pin = to_pin, .max_delay = max_delay});
+    sdc_writer_.SetMaxDelay(TimingPath{.from_pin = from_pin, .to_pin = to_pin, .max_delay = max_delay});
 }
diff --git a/sdc-plugin/set_max_delay.h b/sdc-plugin/set_max_delay.h
index 7272839..2602643 100644
--- a/sdc-plugin/set_max_delay.h
+++ b/sdc-plugin/set_max_delay.h
@@ -25,15 +25,13 @@
 USING_YOSYS_NAMESPACE
 
 struct SetMaxDelay : public Pass {
-    SetMaxDelay(SdcWriter& sdc_writer)
-        : Pass("set_max_delay", "Specify maximum delay for timing paths"),
-          sdc_writer_(sdc_writer) {}
+    SetMaxDelay(SdcWriter &sdc_writer) : Pass("set_max_delay", "Specify maximum delay for timing paths"), sdc_writer_(sdc_writer) {}
 
     void help() override;
 
-    void execute(std::vector<std::string> args, RTLIL::Design* design) override;
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override;
 
-    SdcWriter& sdc_writer_;
+    SdcWriter &sdc_writer_;
 };
 
-#endif  //_SET_MAX_DELAY_H_
+#endif //_SET_MAX_DELAY_H_
diff --git a/sdc-plugin/tests/escaping/escaping.test.cc b/sdc-plugin/tests/escaping/escaping.test.cc
index e17eef6..a26a849 100644
--- a/sdc-plugin/tests/escaping/escaping.test.cc
+++ b/sdc-plugin/tests/escaping/escaping.test.cc
@@ -2,10 +2,10 @@
 
 #include <gtest/gtest.h>
 
-TEST(ClockTest, EscapeDollarSign) {
-        // convert wire_name to wire_name, i.e. unchanged
-        EXPECT_EQ(Clock::AddEscaping("wire_name"), "wire_name");
-        // convert $wire_name to \$wire_name
-        EXPECT_EQ(Clock::AddEscaping("$wire_name"), "\\$wire_name");
+TEST(ClockTest, EscapeDollarSign)
+{
+    // convert wire_name to wire_name, i.e. unchanged
+    EXPECT_EQ(Clock::AddEscaping("wire_name"), "wire_name");
+    // convert $wire_name to \$wire_name
+    EXPECT_EQ(Clock::AddEscaping("$wire_name"), "\\$wire_name");
 }
-
diff --git a/selection-plugin/selection.cc b/selection-plugin/selection.cc
index 6f224ff..30a0222 100644
--- a/selection-plugin/selection.cc
+++ b/selection-plugin/selection.cc
@@ -16,75 +16,75 @@
  *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
+#include "kernel/log.h"
 #include "kernel/register.h"
 #include "kernel/rtlil.h"
-#include "kernel/log.h"
 
 USING_YOSYS_NAMESPACE
 
 PRIVATE_NAMESPACE_BEGIN
 
-
 struct SelectionToTclList : public Pass {
-	SelectionToTclList() : Pass("selection_to_tcl_list", "Extract selection to TCL list") {}
+    SelectionToTclList() : Pass("selection_to_tcl_list", "Extract selection to TCL list") {}
 
-	void help() override
-	{
-		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
-		log("\n");
-		log("   selection_to_tcl_list selection\n");
-		log("\n");
-		log("Extract the current selection to a Tcl List with selection object names. \n");
-		log("\n");
-	}
+    void help() override
+    {
+        //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+        log("\n");
+        log("   selection_to_tcl_list selection\n");
+        log("\n");
+        log("Extract the current selection to a Tcl List with selection object names. \n");
+        log("\n");
+    }
 
-	void AddObjectNameToTclList(RTLIL::IdString& module, RTLIL::IdString& object, Tcl_Obj* tcl_list) {
-		std::string name = RTLIL::unescape_id(module) + "/" + RTLIL::unescape_id(object);
-		Tcl_Obj* value_obj = Tcl_NewStringObj(name.c_str(), name.size());
-		Tcl_ListObjAppendElement(yosys_get_tcl_interp(), tcl_list, value_obj);
-	}
+    void AddObjectNameToTclList(RTLIL::IdString &module, RTLIL::IdString &object, Tcl_Obj *tcl_list)
+    {
+        std::string name = RTLIL::unescape_id(module) + "/" + RTLIL::unescape_id(object);
+        Tcl_Obj *value_obj = Tcl_NewStringObj(name.c_str(), name.size());
+        Tcl_ListObjAppendElement(yosys_get_tcl_interp(), tcl_list, value_obj);
+    }
 
-	void execute(std::vector<std::string> args, RTLIL::Design* design) override
-	{
-		if (args.size() == 1) {
-			log_error("Incorrect number of arguments");
-		}
-		extra_args(args, 1, design);
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override
+    {
+        if (args.size() == 1) {
+            log_error("Incorrect number of arguments");
+        }
+        extra_args(args, 1, design);
 
-		Tcl_Interp *interp = yosys_get_tcl_interp();
-		Tcl_Obj* tcl_list = Tcl_NewListObj(0, NULL);
+        Tcl_Interp *interp = yosys_get_tcl_interp();
+        Tcl_Obj *tcl_list = Tcl_NewListObj(0, NULL);
 
-		auto& selection = design->selection();
-		if (selection.empty()) {
-		        log_warning("Selection is empty\n");
-		}
+        auto &selection = design->selection();
+        if (selection.empty()) {
+            log_warning("Selection is empty\n");
+        }
 
-                for (auto mod : design->modules()) {
-                        if (selection.selected_module(mod->name)) {
-                                for (auto wire : mod->wires()) {
-                                        if (selection.selected_member(mod->name, wire->name)) {
-						AddObjectNameToTclList(mod->name, wire->name, tcl_list);
-					}
-				}
-                                for (auto &it : mod->memories) {
-                                        if (selection.selected_member(mod->name, it.first)) {
-						AddObjectNameToTclList(mod->name, it.first, tcl_list);
-					}
-				}
-                                for (auto cell : mod->cells()) {
-                                        if (selection.selected_member(mod->name, cell->name)) {
-						AddObjectNameToTclList(mod->name, cell->name, tcl_list);
-					}
-				}
-                                for (auto &it : mod->processes) {
-                                        if (selection.selected_member(mod->name, it.first)) {
-						AddObjectNameToTclList(mod->name, it.first, tcl_list);
-					}
-				}
-                        }
+        for (auto mod : design->modules()) {
+            if (selection.selected_module(mod->name)) {
+                for (auto wire : mod->wires()) {
+                    if (selection.selected_member(mod->name, wire->name)) {
+                        AddObjectNameToTclList(mod->name, wire->name, tcl_list);
+                    }
                 }
-		Tcl_SetObjResult(interp, tcl_list);
-	}
+                for (auto &it : mod->memories) {
+                    if (selection.selected_member(mod->name, it.first)) {
+                        AddObjectNameToTclList(mod->name, it.first, tcl_list);
+                    }
+                }
+                for (auto cell : mod->cells()) {
+                    if (selection.selected_member(mod->name, cell->name)) {
+                        AddObjectNameToTclList(mod->name, cell->name, tcl_list);
+                    }
+                }
+                for (auto &it : mod->processes) {
+                    if (selection.selected_member(mod->name, it.first)) {
+                        AddObjectNameToTclList(mod->name, it.first, tcl_list);
+                    }
+                }
+            }
+        }
+        Tcl_SetObjResult(interp, tcl_list);
+    }
 
 } SelectionToTclList;
 
diff --git a/xdc-plugin/xdc.cc b/xdc-plugin/xdc.cc
index a27bdf7..3d792dd 100644
--- a/xdc-plugin/xdc.cc
+++ b/xdc-plugin/xdc.cc
@@ -26,400 +26,392 @@
  *   Tcl interpreter and processed by the new XDC commands imported to the
  *   Tcl interpreter.
  */
-#include <cassert>
+#include "../bank_tiles.h"
+#include "kernel/log.h"
 #include "kernel/register.h"
 #include "kernel/rtlil.h"
-#include "kernel/log.h"
 #include "libs/json11/json11.hpp"
-#include "../bank_tiles.h"
+#include <cassert>
 
 USING_YOSYS_NAMESPACE
 
 PRIVATE_NAMESPACE_BEGIN
 
-static bool isInputPort(RTLIL::Wire* wire) {
-	return wire->port_input;
-}
-static bool isOutputPort(RTLIL::Wire* wire) {
-	return wire->port_output;
-}
+static bool isInputPort(RTLIL::Wire *wire) { return wire->port_input; }
+static bool isOutputPort(RTLIL::Wire *wire) { return wire->port_output; }
 
 enum class SetPropertyOptions { INTERNAL_VREF, IOSTANDARD, SLEW, DRIVE, IN_TERM, IO_LOC_PAIRS };
 
-const std::unordered_map<std::string, SetPropertyOptions> set_property_options_map  = {
-	{"INTERNAL_VREF", SetPropertyOptions::INTERNAL_VREF},
-	{"IOSTANDARD", SetPropertyOptions::IOSTANDARD},
-	{"SLEW", SetPropertyOptions::SLEW},
-	{"DRIVE", SetPropertyOptions::DRIVE},
-	{"IN_TERM", SetPropertyOptions::IN_TERM},
-	{"LOC", SetPropertyOptions::IO_LOC_PAIRS},
-	{"PACKAGE_PIN", SetPropertyOptions::IO_LOC_PAIRS}
-};
+const std::unordered_map<std::string, SetPropertyOptions> set_property_options_map = {{"INTERNAL_VREF", SetPropertyOptions::INTERNAL_VREF},
+                                                                                      {"IOSTANDARD", SetPropertyOptions::IOSTANDARD},
+                                                                                      {"SLEW", SetPropertyOptions::SLEW},
+                                                                                      {"DRIVE", SetPropertyOptions::DRIVE},
+                                                                                      {"IN_TERM", SetPropertyOptions::IN_TERM},
+                                                                                      {"LOC", SetPropertyOptions::IO_LOC_PAIRS},
+                                                                                      {"PACKAGE_PIN", SetPropertyOptions::IO_LOC_PAIRS}};
 
-const std::unordered_map<std::string, std::vector<std::string>> supported_primitive_parameters  = {
-	{"OBUF", {"IO_LOC_PAIRS", "IOSTANDARD", "DRIVE", "SLEW", "IN_TERM"}},
-	{"OBUFDS", {"IO_LOC_PAIRS", "IOSTANDARD", "SLEW", "IN_TERM"}},
-	{"OBUFTDS", {"IO_LOC_PAIRS", "IOSTANDARD", "SLEW", "IN_TERM"}},
-	{"IBUF", {"IO_LOC_PAIRS", "IOSTANDARD"}},
-	{"IOBUF", {"IO_LOC_PAIRS", "IOSTANDARD", "DRIVE", "SLEW", "IN_TERM"}},
-	{"IOBUFDS", {"IO_LOC_PAIRS", "IOSTANDARD", "SLEW", "IN_TERM"}}
-};
+const std::unordered_map<std::string, std::vector<std::string>> supported_primitive_parameters = {
+  {"OBUF", {"IO_LOC_PAIRS", "IOSTANDARD", "DRIVE", "SLEW", "IN_TERM"}},  {"OBUFDS", {"IO_LOC_PAIRS", "IOSTANDARD", "SLEW", "IN_TERM"}},
+  {"OBUFTDS", {"IO_LOC_PAIRS", "IOSTANDARD", "SLEW", "IN_TERM"}},        {"IBUF", {"IO_LOC_PAIRS", "IOSTANDARD"}},
+  {"IOBUF", {"IO_LOC_PAIRS", "IOSTANDARD", "DRIVE", "SLEW", "IN_TERM"}}, {"IOBUFDS", {"IO_LOC_PAIRS", "IOSTANDARD", "SLEW", "IN_TERM"}}};
 
-void register_in_tcl_interpreter(const std::string& command) {
-	Tcl_Interp* interp = yosys_get_tcl_interp();
-	std::string tcl_script = stringf("proc %s args { return [yosys %s {*}$args] }", command.c_str(), command.c_str());
-	Tcl_Eval(interp, tcl_script.c_str());
+void register_in_tcl_interpreter(const std::string &command)
+{
+    Tcl_Interp *interp = yosys_get_tcl_interp();
+    std::string tcl_script = stringf("proc %s args { return [yosys %s {*}$args] }", command.c_str(), command.c_str());
+    Tcl_Eval(interp, tcl_script.c_str());
 }
 
 struct GetIOBanks : public Pass {
-	GetIOBanks(std::function<const BankTilesMap&()> get_bank_tiles)
-		: Pass("get_iobanks", "Set IO Bank number")
-		, get_bank_tiles(get_bank_tiles) {
-		register_in_tcl_interpreter(pass_name);
-	}
+    GetIOBanks(std::function<const BankTilesMap &()> get_bank_tiles) : Pass("get_iobanks", "Set IO Bank number"), get_bank_tiles(get_bank_tiles)
+    {
+        register_in_tcl_interpreter(pass_name);
+    }
 
-	void help() override	{
-		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
-		log("\n");
-		log("   get_iobanks <bank_number>\n");
-		log("\n");
-		log("Get IO Bank number\n");
-		log("\n");
-	}
+    void help() override
+    {
+        //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+        log("\n");
+        log("   get_iobanks <bank_number>\n");
+        log("\n");
+        log("Get IO Bank number\n");
+        log("\n");
+    }
 
-	void execute(std::vector<std::string> args, RTLIL::Design* ) override {
-		if (args.size() < 2) {
-			log_cmd_error("%s: Missing bank number.\n", pass_name.c_str());
-		}
-		auto bank_tiles = get_bank_tiles();
-		if (bank_tiles.count(std::atoi(args[1].c_str())) == 0) {
-			log_cmd_error("%s:Bank number %s is not present in the target device.\n", args[1].c_str(), pass_name.c_str());
-		}
+    void execute(std::vector<std::string> args, RTLIL::Design *) override
+    {
+        if (args.size() < 2) {
+            log_cmd_error("%s: Missing bank number.\n", pass_name.c_str());
+        }
+        auto bank_tiles = get_bank_tiles();
+        if (bank_tiles.count(std::atoi(args[1].c_str())) == 0) {
+            log_cmd_error("%s:Bank number %s is not present in the target device.\n", args[1].c_str(), pass_name.c_str());
+        }
 
-                Tcl_Interp *interp = yosys_get_tcl_interp();
-		Tcl_SetResult(interp, const_cast<char*>(args[1].c_str()), NULL);
-		log("%s\n", args[1].c_str());
-	}
+        Tcl_Interp *interp = yosys_get_tcl_interp();
+        Tcl_SetResult(interp, const_cast<char *>(args[1].c_str()), NULL);
+        log("%s\n", args[1].c_str());
+    }
 
-	std::function<const BankTilesMap&()> get_bank_tiles;
+    std::function<const BankTilesMap &()> get_bank_tiles;
 };
 
 struct SetProperty : public Pass {
-	SetProperty(std::function<const BankTilesMap&()> get_bank_tiles)
-		: Pass("set_property", "Set a given property")
-		, get_bank_tiles(get_bank_tiles) {
-		register_in_tcl_interpreter(pass_name);
-	}
+    SetProperty(std::function<const BankTilesMap &()> get_bank_tiles) : Pass("set_property", "Set a given property"), get_bank_tiles(get_bank_tiles)
+    {
+        register_in_tcl_interpreter(pass_name);
+    }
 
-	void help() override	{
-		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
-		log("\n");
-		log("    set_property PROPERTY VALUE OBJECT\n");
-		log("\n");
-		log("Set the given property to the specified value on an object\n");
-		log("\n");
-	}
+    void help() override
+    {
+        //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+        log("\n");
+        log("    set_property PROPERTY VALUE OBJECT\n");
+        log("\n");
+        log("Set the given property to the specified value on an object\n");
+        log("\n");
+    }
 
-	void execute(std::vector<std::string> args, RTLIL::Design* design) override {
-		if (design->top_module() == nullptr) {
-			log_cmd_error("No top module detected\n");
-		}
+    void execute(std::vector<std::string> args, RTLIL::Design *design) override
+    {
+        if (design->top_module() == nullptr) {
+            log_cmd_error("No top module detected\n");
+        }
 
-		std::string option(args[1]);
-		if (set_property_options_map.count(option) == 0) {
-			log_warning("set_property: %s option is currently not supported\n", option.c_str());
-			return;
-		}
+        std::string option(args[1]);
+        if (set_property_options_map.count(option) == 0) {
+            log_warning("set_property: %s option is currently not supported\n", option.c_str());
+            return;
+        }
 
-		switch (set_property_options_map.at(option)) {
-			case SetPropertyOptions::INTERNAL_VREF:
-				process_vref(std::vector<std::string>(args.begin() + 2, args.end()), design);
-				break;
-			case SetPropertyOptions::IOSTANDARD:
-			case SetPropertyOptions::SLEW:
-			case SetPropertyOptions::DRIVE:
-			case SetPropertyOptions::IN_TERM:
-				process_port_parameter(std::vector<std::string>(args.begin() + 1, args.end()), design);
-				break;
-			case SetPropertyOptions::IO_LOC_PAIRS: {
-				// args "set_property LOC PAD PORT" become "IO_LOC_PAIRS PORT:PAD PORT"
-				std::vector<std::string> new_args(args.begin() + 1, args.end());
-				new_args.at(0) = "IO_LOC_PAIRS";
-				new_args.at(1) = new_args.at(2) + ":" + new_args.at(1);
-				process_port_parameter(new_args, design);
-				break;
-			}
-			default:
-				assert(false);
-		}
-	}
+        switch (set_property_options_map.at(option)) {
+        case SetPropertyOptions::INTERNAL_VREF:
+            process_vref(std::vector<std::string>(args.begin() + 2, args.end()), design);
+            break;
+        case SetPropertyOptions::IOSTANDARD:
+        case SetPropertyOptions::SLEW:
+        case SetPropertyOptions::DRIVE:
+        case SetPropertyOptions::IN_TERM:
+            process_port_parameter(std::vector<std::string>(args.begin() + 1, args.end()), design);
+            break;
+        case SetPropertyOptions::IO_LOC_PAIRS: {
+            // args "set_property LOC PAD PORT" become "IO_LOC_PAIRS PORT:PAD PORT"
+            std::vector<std::string> new_args(args.begin() + 1, args.end());
+            new_args.at(0) = "IO_LOC_PAIRS";
+            new_args.at(1) = new_args.at(2) + ":" + new_args.at(1);
+            process_port_parameter(new_args, design);
+            break;
+        }
+        default:
+            assert(false);
+        }
+    }
 
-	void process_vref(std::vector<std::string> args, RTLIL::Design* design) {
-		if (args.size() < 2) {
-			log_error("set_property INTERNAL_VREF: Incorrect number of arguments.\n");
-		}
-		int iobank = std::atoi(args[1].c_str());
-		auto bank_tiles = get_bank_tiles();
-		if (bank_tiles.count(iobank) == 0) {
-			log_cmd_error("set_property INTERNAL_VREF: Invalid IO bank.\n");
-		}
+    void process_vref(std::vector<std::string> args, RTLIL::Design *design)
+    {
+        if (args.size() < 2) {
+            log_error("set_property INTERNAL_VREF: Incorrect number of arguments.\n");
+        }
+        int iobank = std::atoi(args[1].c_str());
+        auto bank_tiles = get_bank_tiles();
+        if (bank_tiles.count(iobank) == 0) {
+            log_cmd_error("set_property INTERNAL_VREF: Invalid IO bank.\n");
+        }
 
-		int internal_vref = 1000 * std::atof(args[0].c_str());
-		if (internal_vref != 600 &&
-				internal_vref != 675 &&
-				internal_vref != 750 &&
-				internal_vref != 900) {
-			log("set_property INTERNAL_VREF: Incorrect INTERNAL_VREF value\n");
-			return;
-		}
+        int internal_vref = 1000 * std::atof(args[0].c_str());
+        if (internal_vref != 600 && internal_vref != 675 && internal_vref != 750 && internal_vref != 900) {
+            log("set_property INTERNAL_VREF: Incorrect INTERNAL_VREF value\n");
+            return;
+        }
 
-		// Create a new BANK module if it hasn't been created so far
-		RTLIL::Module* top_module = design->top_module();
-		if (!design->has(ID(BANK))) {
-			std::string fasm_extra_modules_dir(proc_share_dirname() + "/plugins/fasm_extra_modules");
-			Pass::call(design, "read_verilog " + fasm_extra_modules_dir + "/BANK.v");
-		}
+        // Create a new BANK module if it hasn't been created so far
+        RTLIL::Module *top_module = design->top_module();
+        if (!design->has(ID(BANK))) {
+            std::string fasm_extra_modules_dir(proc_share_dirname() + "/plugins/fasm_extra_modules");
+            Pass::call(design, "read_verilog " + fasm_extra_modules_dir + "/BANK.v");
+        }
 
-		// Set parameters on a new bank instance or update an existing one
-		char bank_cell_name[16];
-		snprintf(bank_cell_name, 16, "\\bank_cell_%d", iobank);
-		RTLIL::Cell* bank_cell = top_module->cell(RTLIL::IdString(bank_cell_name));
-		if (!bank_cell) {
-			bank_cell = top_module->addCell(RTLIL::IdString(bank_cell_name), ID(BANK));
-		}
-		bank_cell->setParam(ID(FASM_EXTRA), RTLIL::Const("INTERNAL_VREF"));
-		bank_cell->setParam(ID(NUMBER), RTLIL::Const(iobank));
-		bank_cell->setParam(ID(INTERNAL_VREF), RTLIL::Const(internal_vref));
-	}
+        // Set parameters on a new bank instance or update an existing one
+        char bank_cell_name[16];
+        snprintf(bank_cell_name, 16, "\\bank_cell_%d", iobank);
+        RTLIL::Cell *bank_cell = top_module->cell(RTLIL::IdString(bank_cell_name));
+        if (!bank_cell) {
+            bank_cell = top_module->addCell(RTLIL::IdString(bank_cell_name), ID(BANK));
+        }
+        bank_cell->setParam(ID(FASM_EXTRA), RTLIL::Const("INTERNAL_VREF"));
+        bank_cell->setParam(ID(NUMBER), RTLIL::Const(iobank));
+        bank_cell->setParam(ID(INTERNAL_VREF), RTLIL::Const(internal_vref));
+    }
 
-	void process_port_parameter(std::vector<std::string> args, RTLIL::Design* design) {
-		if (args.size() < 1) {
-			log_error("set_property: Incorrect number of arguments.\n");
-		}
+    void process_port_parameter(std::vector<std::string> args, RTLIL::Design *design)
+    {
+        if (args.size() < 1) {
+            log_error("set_property: Incorrect number of arguments.\n");
+        }
 
-		std::string parameter(args.at(0));
-		if (args.size() < 3 || args.at(2).size() == 0) {
-			log_error("set_property %s: Incorrect number of arguments.\n", parameter.c_str());
-		}
+        std::string parameter(args.at(0));
+        if (args.size() < 3 || args.at(2).size() == 0) {
+            log_error("set_property %s: Incorrect number of arguments.\n", parameter.c_str());
+        }
 
-		std::string port_name(args.at(2));
-		std::string value(args.at(1));
+        std::string port_name(args.at(2));
+        std::string value(args.at(1));
 
-		auto port_signal = extract_signal(port_name);
-		std::string port(port_signal.first);
-		int port_bit = port_signal.second;
+        auto port_signal = extract_signal(port_name);
+        std::string port(port_signal.first);
+        int port_bit = port_signal.second;
 
-		RTLIL::Wire* wire = design->top_module()->wire(RTLIL::escape_id(port));
-		if (wire == nullptr) {
-			log_error("Couldn't find port %s\n", port_name.c_str());
-		}
+        RTLIL::Wire *wire = design->top_module()->wire(RTLIL::escape_id(port));
+        if (wire == nullptr) {
+            log_error("Couldn't find port %s\n", port_name.c_str());
+        }
 
-		if (!isInputPort(wire) && !isOutputPort(wire)) {
-			log_error("Port %s is not a top port\n", port_name.c_str());
-		}
+        if (!isInputPort(wire) && !isOutputPort(wire)) {
+            log_error("Port %s is not a top port\n", port_name.c_str());
+        }
 
-		if (port_bit < wire->start_offset || port_bit >= wire->start_offset + wire->width) {
-			log_error("Incorrect top port index %d in port %s\n", port_bit, port_name.c_str());
-		}
+        if (port_bit < wire->start_offset || port_bit >= wire->start_offset + wire->width) {
+            log_error("Incorrect top port index %d in port %s\n", port_bit, port_name.c_str());
+        }
 
-		// Traverse the port wire
-		traverse_wire(port_name, design->top_module());
+        // Traverse the port wire
+        traverse_wire(port_name, design->top_module());
 
-		RTLIL::IdString parameter_id(RTLIL::escape_id(parameter));
-		for (auto cell_obj : design->top_module()->cells_) {
-			RTLIL::IdString cell_id = cell_obj.first;
-			RTLIL::Cell* cell = cell_obj.second;
+        RTLIL::IdString parameter_id(RTLIL::escape_id(parameter));
+        for (auto cell_obj : design->top_module()->cells_) {
+            RTLIL::IdString cell_id = cell_obj.first;
+            RTLIL::Cell *cell = cell_obj.second;
 
-			// Check if the cell is of the type we are looking for
-			auto cell_type_str = RTLIL::unescape_id(cell->type.str());
-			auto primitive_parameters_iter = supported_primitive_parameters.find(cell_type_str);
-			if (primitive_parameters_iter == supported_primitive_parameters.end()) {
-				continue;
-			}
+            // Check if the cell is of the type we are looking for
+            auto cell_type_str = RTLIL::unescape_id(cell->type.str());
+            auto primitive_parameters_iter = supported_primitive_parameters.find(cell_type_str);
+            if (primitive_parameters_iter == supported_primitive_parameters.end()) {
+                continue;
+            }
 
-			// Set the parameter on the cell connected to the selected port
-			for (auto connection : cell->connections_) {
-				RTLIL::SigSpec cell_signal = connection.second;
-				if (is_signal_port(cell_signal, port_name)) {
-					// Check if the attribute is allowed for this module
-					auto primitive_parameters = primitive_parameters_iter->second;
-					if (std::find(primitive_parameters.begin(), primitive_parameters.end(), parameter) == primitive_parameters.end()) {
-						log_error("Cell %s of type %s doesn't support the %s attribute\n",
-								cell->name.c_str(), cell->type.c_str(),
-								parameter_id.c_str());
-					}
-					if (parameter_id == ID(IO_LOC_PAIRS) and cell->hasParam(parameter_id)) {
-						std::string cur_value(cell->getParam(parameter_id).decode_string());
-						value = cur_value + "," + value;
-					}
-					cell->setParam(parameter_id, RTLIL::Const(value));
-					log("Setting parameter %s to value %s on cell %s \n", parameter_id.c_str(), value.c_str(), cell_obj.first.c_str());
-				}
-			}
-		}
-		log("\n");
-	}
+            // Set the parameter on the cell connected to the selected port
+            for (auto connection : cell->connections_) {
+                RTLIL::SigSpec cell_signal = connection.second;
+                if (is_signal_port(cell_signal, port_name)) {
+                    // Check if the attribute is allowed for this module
+                    auto primitive_parameters = primitive_parameters_iter->second;
+                    if (std::find(primitive_parameters.begin(), primitive_parameters.end(), parameter) == primitive_parameters.end()) {
+                        log_error("Cell %s of type %s doesn't support the %s attribute\n", cell->name.c_str(), cell->type.c_str(),
+                                  parameter_id.c_str());
+                    }
+                    if (parameter_id == ID(IO_LOC_PAIRS) and cell->hasParam(parameter_id)) {
+                        std::string cur_value(cell->getParam(parameter_id).decode_string());
+                        value = cur_value + "," + value;
+                    }
+                    cell->setParam(parameter_id, RTLIL::Const(value));
+                    log("Setting parameter %s to value %s on cell %s \n", parameter_id.c_str(), value.c_str(), cell_obj.first.c_str());
+                }
+            }
+        }
+        log("\n");
+    }
 
-	// Search module's connections for the specified destination port
-	// and traverse from the specified destination wire to the source wire
-	void traverse_wire(std::string& port_name, RTLIL::Module* module) {
-		auto port_signal = extract_signal(port_name);
-		std::string signal_name(port_signal.first);
-		auto signal_name_idstr = RTLIL::IdString(RTLIL::escape_id(signal_name));
-		int port_bit = port_signal.second;
-		for (auto connection : module->connections_) {
-			auto dst_sig = connection.first;
-			auto src_sig = connection.second;
-			if (dst_sig.is_chunk()) {
-				auto chunk = dst_sig.as_chunk();
-				if (chunk.wire) {
-					if (chunk.wire->name != signal_name_idstr) {
-						continue;
-					}
-					if (port_bit < chunk.offset || port_bit >= (chunk.offset + chunk.width)) {
-						continue;
-					}
-					auto src_wires = src_sig.to_sigbit_vector();
-					auto src_wire_sigbit = src_wires.at(port_bit - chunk.offset);
-					if (src_wire_sigbit.wire) {
-						port_name = src_wires.at(port_bit - chunk.offset).wire->name.str();
-						if (src_wire_sigbit.offset > 0) {
-							port_name += "[" + std::to_string(src_wire_sigbit.offset) + "]";
-						}
-						return;
-					}
-				}
-			}
-		}
-	}
+    // Search module's connections for the specified destination port
+    // and traverse from the specified destination wire to the source wire
+    void traverse_wire(std::string &port_name, RTLIL::Module *module)
+    {
+        auto port_signal = extract_signal(port_name);
+        std::string signal_name(port_signal.first);
+        auto signal_name_idstr = RTLIL::IdString(RTLIL::escape_id(signal_name));
+        int port_bit = port_signal.second;
+        for (auto connection : module->connections_) {
+            auto dst_sig = connection.first;
+            auto src_sig = connection.second;
+            if (dst_sig.is_chunk()) {
+                auto chunk = dst_sig.as_chunk();
+                if (chunk.wire) {
+                    if (chunk.wire->name != signal_name_idstr) {
+                        continue;
+                    }
+                    if (port_bit < chunk.offset || port_bit >= (chunk.offset + chunk.width)) {
+                        continue;
+                    }
+                    auto src_wires = src_sig.to_sigbit_vector();
+                    auto src_wire_sigbit = src_wires.at(port_bit - chunk.offset);
+                    if (src_wire_sigbit.wire) {
+                        port_name = src_wires.at(port_bit - chunk.offset).wire->name.str();
+                        if (src_wire_sigbit.offset > 0) {
+                            port_name += "[" + std::to_string(src_wire_sigbit.offset) + "]";
+                        }
+                        return;
+                    }
+                }
+            }
+        }
+    }
 
-	// Extract signal name and port bit information from port name
-	std::pair<std::string, int> extract_signal(const std::string& port_name) {
-		int port_bit(0);
-		std::string port_str(port_name.size(), '\0');
-		sscanf(port_name.c_str(), "%[^[][%d]", &port_str[0], &port_bit);
-		port_str.resize(strlen(port_str.c_str()));
-		return std::make_pair(port_str, port_bit);
-	}
+    // Extract signal name and port bit information from port name
+    std::pair<std::string, int> extract_signal(const std::string &port_name)
+    {
+        int port_bit(0);
+        std::string port_str(port_name.size(), '\0');
+        sscanf(port_name.c_str(), "%[^[][%d]", &port_str[0], &port_bit);
+        port_str.resize(strlen(port_str.c_str()));
+        return std::make_pair(port_str, port_bit);
+    }
 
-	// Check if the specified port name is part of the provided connection signal
-	bool is_signal_port(RTLIL::SigSpec signal, const std::string& port_name) {
-		auto port_signal = extract_signal(port_name);
-		std::string port(port_signal.first);
-		int port_bit = port_signal.second;
-		if (signal.is_chunk()) {
-			auto chunk = signal.as_chunk();
-			if (chunk.wire) {
-				return (chunk.wire->name == RTLIL::IdString(RTLIL::escape_id(port))) &&
-							(port_bit == chunk.offset);
-			}
-		}
-		return false;
-	}
+    // Check if the specified port name is part of the provided connection signal
+    bool is_signal_port(RTLIL::SigSpec signal, const std::string &port_name)
+    {
+        auto port_signal = extract_signal(port_name);
+        std::string port(port_signal.first);
+        int port_bit = port_signal.second;
+        if (signal.is_chunk()) {
+            auto chunk = signal.as_chunk();
+            if (chunk.wire) {
+                return (chunk.wire->name == RTLIL::IdString(RTLIL::escape_id(port))) && (port_bit == chunk.offset);
+            }
+        }
+        return false;
+    }
 
-	std::function<const BankTilesMap&()> get_bank_tiles;
+    std::function<const BankTilesMap &()> get_bank_tiles;
 };
 
 struct ReadXdc : public Frontend {
-	ReadXdc()
-	       	: Frontend("xdc", "Read XDC file")
-		, GetIOBanks(std::bind(&ReadXdc::get_bank_tiles, this))
-		, SetProperty(std::bind(&ReadXdc::get_bank_tiles, this)) {}
+    ReadXdc()
+        : Frontend("xdc", "Read XDC file"), GetIOBanks(std::bind(&ReadXdc::get_bank_tiles, this)),
+          SetProperty(std::bind(&ReadXdc::get_bank_tiles, this))
+    {
+    }
 
-	void help() override {
-		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
-		log("\n");
-		log("    read_xdc -part_json <part_json_filename> <filename>\n");
-		log("\n");
-		log("Read XDC file.\n");
-		log("\n");
-	}
+    void help() override
+    {
+        //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+        log("\n");
+        log("    read_xdc -part_json <part_json_filename> <filename>\n");
+        log("\n");
+        log("Read XDC file.\n");
+        log("\n");
+    }
 
-	void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design*) override {
-                if (args.size() < 2) {
-                        log_cmd_error("Missing script file.\n");
-		}
-		size_t argidx = 1;
-		bank_tiles.clear();
-		if (args[argidx] == "-part_json" && argidx + 1 < args.size()) {
-			bank_tiles = ::get_bank_tiles(args[++argidx]);
-			argidx++;
-		}
-		extra_args(f, filename, args, argidx);
-		std::string content{std::istreambuf_iterator<char>(*f), std::istreambuf_iterator<char>()};
-		log("%s\n", content.c_str());
+    void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *) override
+    {
+        if (args.size() < 2) {
+            log_cmd_error("Missing script file.\n");
+        }
+        size_t argidx = 1;
+        bank_tiles.clear();
+        if (args[argidx] == "-part_json" && argidx + 1 < args.size()) {
+            bank_tiles = ::get_bank_tiles(args[++argidx]);
+            argidx++;
+        }
+        extra_args(f, filename, args, argidx);
+        std::string content{std::istreambuf_iterator<char>(*f), std::istreambuf_iterator<char>()};
+        log("%s\n", content.c_str());
 
-		// According to page 6 of UG903 XDC is tcl, hence quoting of bracketed numbers,
-		// such as bus indexes, is required. For example "signal[5]" would be typically
-		// expanded to the concatenation of the string "signal" and result of the function call "5"
-		// with no arguments. Therefore in TCL the signal indices have to be wrapped in curly braces
-		// e.g "{signal[5]}" in order for the interpreter to not perform any variable substitution
-		// or function calls on the wrapped content.
-		//
-		// Nevertheless, it's quite common for EDA tools to allow for specifying signal indices
-		// (e.g. "signal[5]") without using non-expanding quotes.
-		// Possible TCL implementations of such a feature include registering a TCL command
-		// for each integer which returns itself but surrounded with brackets or using the 'unknown'
-		// command which is invoked by the Tcl interpreter whenever a script tries to invoke a command
-		// that does not exist. In the XDC plugin the latter approach is used, however it's limited to
-		// the 'read_xdc' command, hence the 'unknown' command works solely on the content of the XDC file.
-		//
-		// In this implementation the signal "signal[5]" is expanded in TCL to the concatenation of a string
-		// and function call, however this time the handling of the non-existent command '5' is passed by
-		// the interpreter to the 'unknown' command which returns a string that consists of the indice
-		// integer surrounded by square brackets, i.e. "[5]", effectively expanding the signal to "signal[5]"
-		// string.
-		//
-		Tcl_Interp* interp = yosys_get_tcl_interp();
-		Tcl_Eval(interp, "rename unknown _original_unknown");
-		Tcl_Eval(interp, "proc unknown args { return \\[[lindex $args 0]\\] }");
-                if (Tcl_EvalFile(interp, args[argidx].c_str()) != TCL_OK) {
-                        log_cmd_error("TCL interpreter returned an error: %s\n", Tcl_GetStringResult(interp));
-		}
-		Tcl_Eval(interp, "rename unknown \"\"");
-		Tcl_Eval(interp, "rename _original_unknown unknown");
-	}
-	const BankTilesMap& get_bank_tiles() {
-		return bank_tiles;
-	}
+        // According to page 6 of UG903 XDC is tcl, hence quoting of bracketed numbers,
+        // such as bus indexes, is required. For example "signal[5]" would be typically
+        // expanded to the concatenation of the string "signal" and result of the function call "5"
+        // with no arguments. Therefore in TCL the signal indices have to be wrapped in curly braces
+        // e.g "{signal[5]}" in order for the interpreter to not perform any variable substitution
+        // or function calls on the wrapped content.
+        //
+        // Nevertheless, it's quite common for EDA tools to allow for specifying signal indices
+        // (e.g. "signal[5]") without using non-expanding quotes.
+        // Possible TCL implementations of such a feature include registering a TCL command
+        // for each integer which returns itself but surrounded with brackets or using the 'unknown'
+        // command which is invoked by the Tcl interpreter whenever a script tries to invoke a command
+        // that does not exist. In the XDC plugin the latter approach is used, however it's limited to
+        // the 'read_xdc' command, hence the 'unknown' command works solely on the content of the XDC file.
+        //
+        // In this implementation the signal "signal[5]" is expanded in TCL to the concatenation of a string
+        // and function call, however this time the handling of the non-existent command '5' is passed by
+        // the interpreter to the 'unknown' command which returns a string that consists of the indice
+        // integer surrounded by square brackets, i.e. "[5]", effectively expanding the signal to "signal[5]"
+        // string.
+        //
+        Tcl_Interp *interp = yosys_get_tcl_interp();
+        Tcl_Eval(interp, "rename unknown _original_unknown");
+        Tcl_Eval(interp, "proc unknown args { return \\[[lindex $args 0]\\] }");
+        if (Tcl_EvalFile(interp, args[argidx].c_str()) != TCL_OK) {
+            log_cmd_error("TCL interpreter returned an error: %s\n", Tcl_GetStringResult(interp));
+        }
+        Tcl_Eval(interp, "rename unknown \"\"");
+        Tcl_Eval(interp, "rename _original_unknown unknown");
+    }
+    const BankTilesMap &get_bank_tiles() { return bank_tiles; }
 
-	BankTilesMap bank_tiles;
-	struct GetIOBanks GetIOBanks;
-	struct SetProperty SetProperty;
+    BankTilesMap bank_tiles;
+    struct GetIOBanks GetIOBanks;
+    struct SetProperty SetProperty;
 } ReadXdc;
 
 struct GetBankTiles : public Pass {
-	GetBankTiles()
-	       	: Pass("get_bank_tiles", "Inspect IO Bank tiles") {
-		register_in_tcl_interpreter(pass_name);
-	}
+    GetBankTiles() : Pass("get_bank_tiles", "Inspect IO Bank tiles") { register_in_tcl_interpreter(pass_name); }
 
-	void help() override
-	{
-		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
-		log("\n");
-		log("   get_bank_tiles <part_json_file>\n");
-		log("\n");
-		log("Inspect IO Bank tiles for the specified part based on the provided JSON file.\n");
-		log("\n");
-	}
+    void help() override
+    {
+        //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+        log("\n");
+        log("   get_bank_tiles <part_json_file>\n");
+        log("\n");
+        log("Inspect IO Bank tiles for the specified part based on the provided JSON file.\n");
+        log("\n");
+    }
 
-	void execute(std::vector<std::string> args, RTLIL::Design* ) override {
-                if (args.size() < 2) {
-                        log_cmd_error("Missing JSON file.\n");
-		}
-		// Check if the part has the specified bank
-		auto bank_tiles = get_bank_tiles(args[1]);
-		if (bank_tiles.size()) {
-			log("Available bank tiles:\n");
-			for (auto bank : bank_tiles) {
-				log("Bank: %d, Tile: %s\n", bank.first, bank.second.c_str());
-			}
-			log("\n");
-		} else {
-			log("No bank tiles available.\n");
-		}
-	}
+    void execute(std::vector<std::string> args, RTLIL::Design *) override
+    {
+        if (args.size() < 2) {
+            log_cmd_error("Missing JSON file.\n");
+        }
+        // Check if the part has the specified bank
+        auto bank_tiles = get_bank_tiles(args[1]);
+        if (bank_tiles.size()) {
+            log("Available bank tiles:\n");
+            for (auto bank : bank_tiles) {
+                log("Bank: %d, Tile: %s\n", bank.first, bank.second.c_str());
+            }
+            log("\n");
+        } else {
+            log("No bank tiles available.\n");
+        }
+    }
 } GetBankTiles;
 
 PRIVATE_NAMESPACE_END