3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-18 22:59:03 +00:00

Merge pull request #63 from alaindargelas/memory_size_check

Memory size check
This commit is contained in:
Akash Levy 2025-03-12 16:41:41 -07:00 committed by GitHub
commit 6fc727139b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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<int>(bits_in_word, pr->GetInst()->OutputSize());
bits_in_word = min<uint64_t>(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<int>(bits_in_word, pr->GetInst()->Input2Size());
bits_in_word = min<uint64_t>(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) > (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;