Fix assertion on dotted parameter arrayed function, bug1620.

This commit is contained in:
Wilson Snyder 2019-12-04 19:25:45 -05:00
parent 8611ff230d
commit 5c6d74cd80
3 changed files with 18 additions and 1 deletions

View File

@ -38,6 +38,8 @@ The contributors that suggested a given feature are shown in []. Thanks!
**** Fix false unused message on __Vemumtab, msg3180. [Tobias Rosenkranz]
**** Fix assertion on dotted parameter arrayed function, bug1620. [Rich Porter]
* Verilator 4.022 2019-11-10

View File

@ -1942,7 +1942,9 @@ private:
// m_curSymp is symbol table of outer expression
// m_ds.m_dotSymp is symbol table relative to "."'s above now
UASSERT_OBJ(m_ds.m_dotSymp, nodep, "NULL lookup symbol table");
UASSERT_OBJ(m_statep->forPrimary(), nodep, "ParseRefs should no longer exist");
// Generally resolved during Primay, but might be at param time under AstUnlinkedRef
UASSERT_OBJ(m_statep->forPrimary() || m_statep->forPrearray(),
nodep, "ParseRefs should no longer exist");
DotStates lastStates = m_ds;
bool start = (m_ds.m_dotPos == DP_NONE); // Save, as m_dotp will be changed
if (start) {

View File

@ -12,6 +12,9 @@ module t (/*AUTOARG*/
ma ma0 ();
initial t.ma0.u_b[0].f(1);
initial t.ma0.u_b[0].f(clk);
global_mod #(32'hf00d) global_cell ();
global_mod #(32'hf22d) global_cell2 ();
@ -138,3 +141,13 @@ module mc ();
mc.checkName (mc.getName(1'b0));
end
endmodule
module b;
function void f(bit v);
$display("%m");
endfunction : f;
endmodule : b
bind ma b u_b[0:1];