[logo] 
 
Home
News
Activity
About/Contact
Major Tools
  Dinotrace
  Verilator
  Verilog-mode
  Verilog-Perl
Other Tools
  BugVise
  CovVise
  Force-Gate-Sim
  Gspice
  IPC::Locker
  Rsvn
  Schedule::Load
  SVN::S4
  Synopsys-modes
  SystemPerl
  Verilog-Pli
  Voneline
  Vregs
General Info
  Papers

Issue #393

%Error: Internal Error: ...: ../V3AstNodes.h:453: Unexpected Call

Added by Alex Solomatnikov 8 months ago. Updated 8 months ago.

Status:Assigned Start date:09/20/2011
Priority:Normal Due date:
Assignee:Wilson Snyder % Done:

0%

Category:TranslationError
Target version:-

Description

verilator_bin_dbg -sv -CFLAGS "-DMC_UNIT_LEVEL_TEST -DVERILATOR -std=c++0x -g -I.. -I.../common/test/env -I/tools/local/include -DWAVES -DTRACE" --trace-max-width 512 --trace-max-array 128 -Wno-fatal --trace +define+TRACE --assert +define+HC_ASSERTION --sp --top-module env_site_mc_top --prefix env_site_mc_top --Mdir obj_dir -f env_site_mc_top_flags.f -f env_site_mc_top_files.f env_site_mc_top.v --debug | & tee verilator.log

Last phase before failure:

dot -Tps -o ~/a.ps obj_dir/env_site_mc_top_34_gate_simp.dot
%Error: ../../rtl/site_mc_top.v:231: Internal: Unexpected Call
-node: 0x6a910c0
%Error: Internal Error: ../../rtl/site_mc_top.v:231: ../V3AstNodes.h:453: Unexpected Call
-node: 0x6a910c0
- V3StatsReport.cpp:208:statsReport: 
%Error: Internal Error: Aborting since under --debug
Abort

Attaching full log file and the last few files generated in obj_dir.

Verilator version 3.820+ (after bug 374 was fixed).

Verilog line where verilator fails:

   input logic                       oct_rzqin          [`MC_NUM_CHANNELS-1:0],

...

   genvar                            ch;
   generate
      for( ch=0; ch<`MC_NUM_CHANNELS; ch++ ) begin : GEN_CHANNELS

...

         site_mc_channel_ddr3 #(.channel_id(ch)) mc_channel(// DRAM interface
                                         .mem_a      (mem_a      [ch]),
                                         .mem_ba     (mem_ba     [ch]),
                                         .mem_cas_n  (mem_cas_n  [ch]),
                                         .mem_ck     (mem_ck     [ch]),
                                         .mem_ck_n   (mem_ck_n   [ch]),
                                         .mem_cke    (mem_cke    [ch]),
                                         .mem_cs_n   (mem_cs_n   [ch]),
                                         .mem_dm     (mem_dm     [ch]),
                                         .mem_odt    (mem_odt    [ch]),
                                         .mem_ras_n  (mem_ras_n  [ch]),
                                         .mem_reset_n(mem_reset_n[ch]),
                                         .mem_we_n   (mem_we_n   [ch]),
                                         .mem_dq     (mem_dq     [ch*72 +: 72]),
                                         .mem_dqs    (mem_dqs    [ch*9  +: 9 ]),
                                         .mem_dqs_n  (mem_dqs_n  [ch*9  +: 9 ]),

*                                         .oct_rzqin  (oct_rzqin  [ch]),
*

verilator.log (24.9 kB) Alex Solomatnikov, 09/20/2011 10:44 pm

History

Updated by Wilson Snyder 8 months ago

  • Category set to TranslationError
  • Status changed from New to Assigned
  • Assignee set to Wilson Snyder

In propagating constants between gates, there's some array (oct_rzqin?) that is constant in some way it has never encountered before.

Assuming nothing obvious comes to your mind, please attach the highest number .tree file, thanks.

Updated by Alex Solomatnikov 8 months ago

Yes, oct_rzqin is an array pin, that is unconnected few levels below in the hierarchy. The design uses multiple Altera's DDR3 controllers, and each DDR3 controller requires separate oct_rzqin pin at the top. However, verilator could not compile DDR3 RTL, which was substituted by the behavioral model and oct_rzqin pins were left unconnected.

I did save a couple of .tree files before and after failing step, however, both are ~10 MB and the web-site does not let to attached them.

Updated by Alex Solomatnikov 8 months ago

Please, let me know how to send you those .tree files.

Updated by Alex Solomatnikov 8 months ago

  • File env_site_mc_top_33_tracedecl.tree.gz added
  • File env_site_mc_top_99_final.tree.gz added

Attached gziped files.

Updated by Wilson Snyder 8 months ago

This assignment

1:2:2:2:2: ASSIGNW 0x5b92ad0 &lt;e540369&gt; {231} w1
1:2:2:2:2:1: ARRAYSEL 0x6a910c0 &lt;e493720&gt; {231} w1 [start:0] [length:1]
1:2:2:2:2:1:1: CONST 0x70daaa0 &lt;e552932#&gt; {289} w1  1'h0
1:2:2:2:2:1:2: CONST 0x6a91270 &lt;e194515&gt; {191} w1  1'h0

is causing the error; the ARRAYSEL should be a SEL.

I suspect the error is with inlining related to the generate; can you send the *_link.tree and *_begin.tree.gz files? Thanks.

Updated by Wilson Snyder 8 months ago

BTW a work around would probably be to simply tie the pin to zero

.oct_rzqin  (1'b0),

Updated by Alex Solomatnikov 8 months ago

Yes, we used this workaround.

It turns out there was a bug in Verilog and that was the reason verilator was failing.

Chandan reduced the test case to the following code:

module suba(input logic clk, input logic foo);
    always @(posedge clk)
        $display("%b", foo);
endmodule

module dut
    #(parameter W = 1)
    (input logic clk, input logic foo[W-1:0]);

    genvar i;
    generate
        for (i = 0; i < W; i++) begin
            suba ua(.clk(clk), .foo(foo[i]));
        end
    endgenerate

endmodule

module top(input logic clk);

    logic foo = 0;

    dut #(.W(4)) udut(.*);
endmodule

P.S. I can still send you by email gziped tar ball of .tree files of the original code but it is large ~15 MB and we do not want to post it on the web-site.

Updated by Wilson Snyder 8 months ago

  • File deleted (env_site_mc_top_34_gate_simp.dot)

Updated by Wilson Snyder 8 months ago

  • File deleted (env_site_mc_top_33_tracedecl.tree.gz)

Updated by Wilson Snyder 8 months ago

  • File deleted (env_site_mc_top_99_final.tree.gz)

Updated by Chandan Egbert 8 months ago

To clarify, the RTL bug is that the signal "foo" in module "top" in the test case should be arrayed but is not.

Also available in: Atom