Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dotted function reference causes Internal Error #1620

Closed
veripoolbot opened this issue Dec 4, 2019 · 2 comments
Closed

Dotted function reference causes Internal Error #1620

veripoolbot opened this issue Dec 4, 2019 · 2 comments
Assignees

Comments

@veripoolbot
Copy link
Contributor

@veripoolbot veripoolbot commented Dec 4, 2019


Author Name: Rich Porter
Original Redmine Issue: 1620 from https://www.veripool.org

Original Assignee: Wilson Snyder (@wsnyder)


A dotted function reference through an array of instances with a non constant argument causes @internal Error: ParseRefs should no longer exist@

t.ma0.u_b[0].f(1);   // works
t.ma0.u_b[0].f(clk); // does not work

Apply the following patch

$ git diff
diff --git a/test_regress/t/t_func_dotted.v b/test_regress/t/t_func_dotted.v
index df17433a..4c985ea7 100644
--- a/test_regress/t/t_func_dotted.v
+++ b/test_regress/t/t_func_dotted.v
@@ -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];

Yields the following result

$ test_regress/t/t_func_dotted_inl0.pl 
======================================================================
dist/t_func_dotted_inl0: ==================================================
-Skip: dist/t_func_dotted_inl0: scenario 'dist' not enabled for test
dist/t_func_dotted_inl0: %Skip: Skip: scenario 'dist' not enabled for test
==SUMMARY: Passed 0  Failed 0  Unsup 0  Time 0:00
======================================================================
vlt/t_func_dotted_inl0: ==================================================
         perl /work/verilator/test_regress/../bin/verilator --prefix Vt_func_dotted_inl0 ../obj_vlt/t_func_dotted_inl0/Vt_func_dotted_inl0__main.cpp --exe --make gmake --x-assign unique -cc -Mdir obj_vlt/t_func_dotted_inl0 -OD --debug-check --comp-limit-members 10 --clk clk  -f input.vc +define+TEST_OBJ_DIR=obj_vlt/t_func_dotted_inl0 +define+NOUSE_INLINE t/t_func_dotted.v    > obj_vlt/t_func_dotted_inl0/vlt_compile.log
%Error: Internal Error: t/t_func_dotted.v:16: ../V3LinkDot.cpp:1945: ParseRefs should no longer exist
                                             : ... In instance t
    initial t.ma0.u_b[0].f(clk);
                           ^~~
                         ... See the manual and https://verilator.org for more assistance.
%Warning: vlt/t_func_dotted_inl0: Exec of perl failed: %Error: Internal Error: t/t_func_dotted.v:16: ../V3LinkDot.cpp:1945: ParseRefs should no longer exist

vlt/t_func_dotted_inl0: %Error: Exec of perl failed: %Error: Internal Error: t/t_func_dotted.v:16: ../V3LinkDot.cpp:1945: ParseRefs should no longer exist
vlt/t_func_dotted_inl0: FAILED: Exec of perl failed: %Error: Internal Error: t/t_func_dotted.v:16: ../V3LinkDot.cpp:1945: ParseRefs should no longer exist
==SUMMARY: Passed 0  Failed 1  Unsup 0  Time 0:00

This was tested on the following version.

$ git log
commit 95ffcad12e2a3c84290a580bbafcbef394a1cdc2 (HEAD -> master, origin/master, origin/HEAD)
Author: Wilson Snyder <wsnyder@wsnyder.org>
Date:   Tue Dec 3 07:18:59 2019 -0500

     Fix t_queue crash on Trusty due to lifetime issue.

@veripoolbot
Copy link
Contributor Author

@veripoolbot veripoolbot commented Dec 5, 2019


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2019-12-05T00:27:06Z


Thanks for modifying a test to show the issue, makes it much easier.

Seemed the assertion was all that was broken.

Fixed in git towards eventual 4.024 release.

@veripoolbot
Copy link
Contributor Author

@veripoolbot veripoolbot commented Dec 8, 2019


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2019-12-08T13:11:20Z


In 4.024.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.