passes/hierarchy: Reduce code duplication in expand_module

This also makes it easier to add new file extensions support.

Signed-off-by: Sergi Granell <xerpi.g.12@gmail.com>
This commit is contained in:
Sergi Granell 2018-03-27 09:35:20 +02:00
parent 77bd645c35
commit f93f8aaa11
1 changed files with 13 additions and 15 deletions

View File

@ -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";
static const std::map<std::string, std::string> extensions_map =
{
{".v", "verilog"},
{".sv", "verilog -sv"},
{".il", "ilang"}
};
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, "verilog");
Frontend::frontend_call(design, NULL, filename, ext.second);
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;
}
filename = dir + "/" + RTLIL::unescape_id(cell->type) + ".il";
if (check_file_exists(filename)) {
Frontend::frontend_call(design, NULL, filename, "ilang");
goto loaded_module;
}
}