From dcce15207e4c447747599c697f6ded1055d1752c Mon Sep 17 00:00:00 2001 From: Alain Dargelas Date: Wed, 12 Mar 2025 16:21:18 -0700 Subject: [PATCH 1/2] Memory size check --- frontends/verific/verific.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index 12fec7a79..ea558f89d 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -1662,21 +1662,22 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::ma module->memories[memory->name] = memory; import_attributes(memory->attributes, net, nl); - int number_of_bits = net->Size(); - int bits_in_word = number_of_bits; + uint64_t number_of_bits = net->Size(); + uint64_t bits_in_word = number_of_bits; FOREACH_PORTREF_OF_NET(net, si, pr) { if (pr->GetInst()->Type() == OPER_READ_PORT) { - bits_in_word = min(bits_in_word, pr->GetInst()->OutputSize()); + bits_in_word = min(bits_in_word, pr->GetInst()->OutputSize()); continue; } if (pr->GetInst()->Type() == OPER_WRITE_PORT || pr->GetInst()->Type() == OPER_CLOCKED_WRITE_PORT) { - bits_in_word = min(bits_in_word, pr->GetInst()->Input2Size()); + bits_in_word = min(bits_in_word, pr->GetInst()->Input2Size()); continue; } log_error("Verific RamNet %s is connected to unsupported instance type %s (%s).\n", net->Name(), pr->GetInst()->View()->Owner()->Name(), pr->GetInst()->Name()); } - + if (bits_in_word * number_of_bits > pow(2, 23)) + log_error("Memory %s size is larger than 2**23 bits\n", net->Name()); memory->width = bits_in_word; memory->size = number_of_bits / bits_in_word; From 88211310facd635a964e3f6977d6749699a144bd Mon Sep 17 00:00:00 2001 From: Alain Dargelas Date: Wed, 12 Mar 2025 16:32:42 -0700 Subject: [PATCH 2/2] code review --- frontends/verific/verific.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index ea558f89d..75b460f61 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -1676,7 +1676,7 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::ma log_error("Verific RamNet %s is connected to unsupported instance type %s (%s).\n", net->Name(), pr->GetInst()->View()->Owner()->Name(), pr->GetInst()->Name()); } - if (bits_in_word * number_of_bits > pow(2, 23)) + if ((bits_in_word * number_of_bits) > (1 << 23)) log_error("Memory %s size is larger than 2**23 bits\n", net->Name()); memory->width = bits_in_word; memory->size = number_of_bits / bits_in_word;