aboutsummaryrefslogtreecommitdiffstats
path: root/passes/hierarchy
diff options
context:
space:
mode:
authorSergi Granell <xerpi.g.12@gmail.com>2018-03-27 09:35:20 +0200
committerSergi Granell <xerpi.g.12@gmail.com>2018-03-27 09:35:20 +0200
commitf93f8aaa114b06e046a107c9e1f77046a4b5b1fc (patch)
tree8a18ca5f81134be0c4aa8cba4a1453804781b6d5 /passes/hierarchy
parent77bd645c35225d4fa1a1c632457acfb47b7388eb (diff)
downloadyosys-f93f8aaa114b06e046a107c9e1f77046a4b5b1fc.tar.gz
yosys-f93f8aaa114b06e046a107c9e1f77046a4b5b1fc.tar.bz2
yosys-f93f8aaa114b06e046a107c9e1f77046a4b5b1fc.zip
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>
Diffstat (limited to 'passes/hierarchy')
-rw-r--r--passes/hierarchy/hierarchy.cc28
1 files 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<std::string, std::string> 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;
+ }
}
}