mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-13 07:56:40 +00:00
Add support for packed multidimensional arrays
* Generalization of dimensions metadata (also simplifies $size et al.) * Parsing and elaboration of multidimensional packed ranges
This commit is contained in:
parent
ac0fb2e301
commit
39fea32c6e
7 changed files with 247 additions and 267 deletions
|
@ -1045,7 +1045,7 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
|
|||
if (children.size() > 1)
|
||||
range = children[1];
|
||||
} else if (id_ast->type == AST_STRUCT_ITEM || id_ast->type == AST_STRUCT || id_ast->type == AST_UNION) {
|
||||
AstNode *tmp_range = make_struct_member_range(this, id_ast);
|
||||
AstNode *tmp_range = make_index_range(id_ast);
|
||||
this_width = tmp_range->range_left - tmp_range->range_right + 1;
|
||||
delete tmp_range;
|
||||
} else
|
||||
|
@ -1584,7 +1584,7 @@ RTLIL::SigSpec AstNode::genRTLIL(int width_hint, bool sign_hint)
|
|||
chunk.width = wire->width;
|
||||
chunk.offset = 0;
|
||||
|
||||
if ((member_node = get_struct_member(this))) {
|
||||
if ((member_node = get_struct_member())) {
|
||||
// Clamp wire chunk to range of member within struct/union.
|
||||
chunk.width = member_node->range_left - member_node->range_right + 1;
|
||||
chunk.offset = member_node->range_right;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue