Fix select of with index variable (#2880).

This commit is contained in:
Wilson Snyder 2021-04-08 19:35:03 -04:00
parent 52fc134272
commit e2c11cceb8
3 changed files with 6 additions and 0 deletions

View File

@ -29,6 +29,7 @@ Verilator 4.201 devel
* Fix --public-flat-rw / DPI issue (#2858). [Todd Strader]
* Fix interface localparam access (#2859). [Todd Strader]
* Fix Cygwin example compile issues (#2856). [Mark Shaw]
* Fix select of with index variable (#2880). [Alexander Grobman]
Verilator 4.200 2021-03-12

View File

@ -227,6 +227,9 @@ private:
= VN_CAST(basefromp, UnlinkedRef)) { // Maybe unlinked - so need to clone
nodep->attrp(new AstAttrOf(nodep->fileline(), AstAttrType::VAR_BASE,
uvxrp->cloneTree(false)));
} else if (auto* fromp = VN_CAST(basefromp, LambdaArgRef)) {
nodep->attrp(new AstAttrOf(nodep->fileline(), AstAttrType::VAR_BASE,
fromp->cloneTree(false)));
} else if (AstMemberSel* fromp = VN_CAST(basefromp, MemberSel)) {
nodep->attrp(new AstAttrOf(nodep->fileline(), AstAttrType::MEMBER_BASE,
fromp->cloneTree(false)));

View File

@ -62,6 +62,8 @@ module t (/*AUTOARG*/);
// TODO add a lint check that with clause is provided
qv = q.find with (item == 2);
v = $sformatf("%p", qv); `checks(v, "'{'h2, 'h2} ");
qv = q.find with (item[0] == 1);
v = $sformatf("%p", qv); `checks(v, "'{'h1, 'h3} ");
qv = q.find_first with (item == 2);
v = $sformatf("%p", qv); `checks(v, "'{'h2} ");
qv = q.find_last with (item == 2);