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

../V3Inst.cpp:360: Module dearray failed -- unpacked array of interfaces badness #1153

Closed
veripoolbot opened this issue Apr 9, 2017 · 2 comments
Assignees
Labels
resolution: fixed Closed; fixed

Comments

@veripoolbot
Copy link
Contributor


Author Name: John (Pete) Stevenson
Original Redmine Issue: 1153 from https://www.veripool.org

Original Assignee: Wilson Snyder (@wsnyder)


With two instances, each with a different implementation, Verilator emits a strange error message:

../V3Inst.cpp:360: Module dearray failed

Using the attached 4 files, command line and stdout:

> verilator --lint-only Testbench.sv 
%Error: Internal Error: Contemplator.sv:13: ../V3Inst.cpp:360: Module dearray failed
%Error: Internal Error: See the manual and http://www.veripool.org/verilator for more assistance.
%Error: Command Failed /usr/local/bin/verilator_bin --lint-only Testbench.sv
>verilator --version
Verilator 3.902 2017-04-02 rev verilator_3_900-25-gf4a5aa2

Perhaps this is related to a previous issue because when using Verilator version 3.89, this code will trigger issue 1135.

Testbench.sv

typedef logic [63:0] uid_t;
typedef logic [31:0] value_t;

module Testbench( input logic clk );
     localparam  M = 5;
     localparam  N = 1;

     the_intf #(.M(M)) out0 [N-1:0] ();
     the_intf #(.M(M)) out1 [N-1:0] ();

     Contemplator #(
         .IMPL ( 0    ),
         .M    ( M    ),
         .N    ( N    )) contemplatorOfTheZerothKind(
         .clk  ( clk  ),
         .out  ( out0 ));

     Contemplator #(
         .IMPL ( 1    ),
         .M    ( M    ),
         .N    ( N    )) contemplatorOfTheFirstKind(
         .clk  ( clk  ),
         .out  ( out1 ));
endmodule

Contemplator.sv

module Contemplator #(
     parameter IMPL = 0,
     parameter M    = 5,
     parameter N    = 1 )(
     input logic clk,
     the_intf.i out [N-1:0]
     );

     the_intf #(.M(M)) inp[N-1:0] ();

     DeepThought #(
         .N    ( N   )) ultimateAnswerer(
         .src  ( inp ),
         .dst  ( out ));
endmodule

DeepThought.sv

module DeepThought #(
     parameter N = 1 )(
     the_intf.t src[N-1:0],
     the_intf.i dst[N-1:0]
     );
endmodule

the_intf.sv

interface the_intf #(parameter M = 5);
     logic           valid;
     uid_t           uid;
     value_t [M-1:0] values;

     modport i(
         output valid,
         output uid,
         output values
         );
     modport t(
         input valid,
         input uid,
         input values
         );
endinterface

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2017-04-29T00:10:29Z


Fixed in git towards 3.903.

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2017-05-31T02:06:38Z


In 3.904.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
resolution: fixed Closed; fixed
Projects
None yet
Development

No branches or pull requests

2 participants