3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-07-28 23:17:57 +00:00

Fixed memory->start_offset handling

This commit is contained in:
Clifford Wolf 2015-01-01 12:56:01 +01:00
parent 17c1c55473
commit eefe78be09
3 changed files with 12 additions and 6 deletions

View file

@ -839,14 +839,15 @@ RTLIL::SigSpec AstNode::genRTLIL(int width_hint, bool sign_hint)
memory->attributes["\\src"] = stringf("%s:%d", filename.c_str(), linenum);
memory->name = str;
memory->width = children[0]->range_left - children[0]->range_right + 1;
memory->start_offset = children[0]->range_right;
memory->size = children[1]->range_left - children[1]->range_right;
if (children[1]->range_right < children[1]->range_left) {
memory->start_offset = children[1]->range_right;
memory->size = children[1]->range_left - children[1]->range_right + 1;
} else {
memory->start_offset = children[1]->range_left;
memory->size = children[1]->range_right - children[1]->range_left + 1;
}
current_module->memories[memory->name] = memory;
if (memory->size < 0)
memory->size *= -1;
memory->size += std::min(children[1]->range_left, children[1]->range_right) + 1;
for (auto &attr : attributes) {
if (attr.second->type != AST_CONSTANT)
log_error("Attribute `%s' with non-constant value at %s:%d!\n",