From f93f8aaa114b06e046a107c9e1f77046a4b5b1fc Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Tue, 27 Mar 2018 09:35:20 +0200 Subject: [PATCH] passes/hierarchy: Reduce code duplication in expand_module This also makes it easier to add new file extensions support. Signed-off-by: Sergi Granell --- passes/hierarchy/hierarchy.cc | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/passes/hierarchy/hierarchy.cc b/passes/hierarchy/hierarchy.cc index 71b0cf622..21a232572 100644 --- a/passes/hierarchy/hierarchy.cc +++ b/passes/hierarchy/hierarchy.cc @@ -173,22 +173,20 @@ bool expand_module(RTLIL::Design *design, RTLIL::Module *module, bool flag_check for (auto &dir : libdirs) { - filename = dir + "/" + RTLIL::unescape_id(cell->type) + ".v"; - if (check_file_exists(filename)) { - Frontend::frontend_call(design, NULL, filename, "verilog"); - goto loaded_module; - } - - filename = dir + "/" + RTLIL::unescape_id(cell->type) + ".sv"; - if (check_file_exists(filename)) { - Frontend::frontend_call(design, NULL, filename, "verilog -sv"); - goto loaded_module; - } + static const std::map extensions_map = + { + {".v", "verilog"}, + {".sv", "verilog -sv"}, + {".il", "ilang"} + }; - filename = dir + "/" + RTLIL::unescape_id(cell->type) + ".il"; - if (check_file_exists(filename)) { - Frontend::frontend_call(design, NULL, filename, "ilang"); - goto loaded_module; + for (auto &ext : extensions_map) + { + filename = dir + "/" + RTLIL::unescape_id(cell->type) + ext.first; + if (check_file_exists(filename)) { + Frontend::frontend_call(design, NULL, filename, ext.second); + goto loaded_module; + } } } -- 2.30.2