Fix signals in a concatenation on the LHS aren't created implicitly, bug206

This commit is contained in:
Wilson Snyder 2010-01-19 19:35:05 -05:00
parent d2bce042a5
commit bb20331f9e
3 changed files with 6 additions and 3 deletions

View File

@ -604,9 +604,7 @@ private:
// Deal with implicit definitions
// We used to nodep->allowImplicit() here, but it turns out
// normal "assigns" can also make implicit wires. Yuk.
if (AstVarRef* forrefp = nodep->lhsp()->castVarRef()) {
createImplicitVar(forrefp, false);
}
pinImplicitExprRecurse(nodep->lhsp());
nodep->iterateChildren(*this);
}
virtual void visit(AstAssignAlias* nodep, AstNUser*) {

View File

@ -11,5 +11,8 @@ module t (a,z);
or OR0 (nt0, a, b);
logic [1:0] dummy_ip;
assign {dummy1, dummy2} = dummy_ip;
assign z = nt0;
endmodule

View File

@ -16,6 +16,8 @@ compile (
'%Warning-IMPLICIT: t/t_lint_implicit.v:\d+: Signal definition not found, creating implicitly: b
%Warning-IMPLICIT: Use .* to disable this message.
%Warning-IMPLICIT: t/t_lint_implicit.v:\d+: Signal definition not found, creating implicitly: nt0
%Warning-IMPLICIT: t/t_lint_implicit.v:\d+: Signal definition not found, creating implicitly: dummy1
%Warning-IMPLICIT: t/t_lint_implicit.v:\d+: Signal definition not found, creating implicitly: dummy2
%Error: Exiting due to.*',
) if $Self->{v3};