From 2ba05f5c31941967e84a2ab1a3dec89f60235057 Mon Sep 17 00:00:00 2001 From: whitequark Date: Sun, 1 Nov 2020 15:25:55 +0000 Subject: [PATCH] cxxrtl: don't assert on non-constant $meminit inputs. Fixes #2129. --- backends/cxxrtl/cxxrtl_backend.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backends/cxxrtl/cxxrtl_backend.cc b/backends/cxxrtl/cxxrtl_backend.cc index da46711c1..ac4c78267 100644 --- a/backends/cxxrtl/cxxrtl_backend.cc +++ b/backends/cxxrtl/cxxrtl_backend.cc @@ -22,6 +22,7 @@ #include "kernel/sigtools.h" #include "kernel/utils.h" #include "kernel/celltypes.h" +#include "kernel/mem.h" #include "kernel/log.h" USING_YOSYS_NAMESPACE @@ -2347,8 +2348,9 @@ struct CxxrtlWorker { if (sync->type == RTLIL::STi) has_sync_init = true; - for (auto cell : module->cells()) - if (cell->type == ID($mem)) + // The Mem constructor also checks for well-formedness of $meminit cells, if any. + for (auto &mem : Mem::get_all_memories(module)) + if (mem.packed) has_packed_mem = true; } } -- 2.30.2