From b87327d1b9a0ec0c8b62694cb3697dcda1665ee2 Mon Sep 17 00:00:00 2001 From: "N. Engelhardt" Date: Fri, 12 Apr 2024 13:38:33 +0200 Subject: [PATCH 1/2] fix hierarchy -generate mode handling of cells --- passes/hierarchy/hierarchy.cc | 2 +- tests/various/hierarchy_generate.ys | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 tests/various/hierarchy_generate.ys diff --git a/passes/hierarchy/hierarchy.cc b/passes/hierarchy/hierarchy.cc index 6fcda5d76..3ef04616f 100644 --- a/passes/hierarchy/hierarchy.cc +++ b/passes/hierarchy/hierarchy.cc @@ -47,7 +47,7 @@ void generate(RTLIL::Design *design, const std::vector &celltypes, { if (design->module(cell->type) != nullptr) continue; - if (cell->type.begins_with("$__")) + if (cell->type.begins_with("$") && !cell->type.begins_with("$__")) continue; for (auto &pattern : celltypes) if (patmatch(pattern.c_str(), RTLIL::unescape_id(cell->type).c_str())) diff --git a/tests/various/hierarchy_generate.ys b/tests/various/hierarchy_generate.ys new file mode 100644 index 000000000..a4dc87a86 --- /dev/null +++ b/tests/various/hierarchy_generate.ys @@ -0,0 +1,19 @@ +read_verilog -icells < Date: Fri, 12 Apr 2024 13:51:06 +0200 Subject: [PATCH 2/2] add command that should not have any effect to hierarchy -generate test (this documents the current behavior, not sure if it is desired functionality) --- tests/various/hierarchy_generate.ys | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/various/hierarchy_generate.ys b/tests/various/hierarchy_generate.ys index a4dc87a86..9c01afb64 100644 --- a/tests/various/hierarchy_generate.ys +++ b/tests/various/hierarchy_generate.ys @@ -15,5 +15,6 @@ endmodule EOF hierarchy -generate unknown_sub i:a i:b o:y hierarchy -generate $__dunder_sub i:a i:b o:y +hierarchy -generate $xor i:A i:B o:Y # this one is ignored hierarchy -top top -check check -assert