Navigation Menu

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

SystemVerilog interfaces: Internal error when connecting interfaces #658

Closed
veripoolbot opened this issue Jun 18, 2013 · 9 comments
Closed
Labels
resolution: abandoned Closed; not enough information or otherwise never finished

Comments

@veripoolbot
Copy link
Contributor


Author Name: Ed Lander
Original Redmine Issue: 658 from https://www.veripool.org
Original Date: 2013-06-18


Hi,

We are seeing an internal error when connecting SystemVerilog interfaces. Verilator happily compiles the interface file, but then falls over on elaboration:

%Error: Internal Error: <file_path>:<linenum>: ../V3Scope.cpp:234: Can't locate varref scope

The interface file itself contains two interface definitions (a channel interface and a multi-channel interface, made up of two channel interfaces). I've attached a stripped down file that is safe for the public domain, alas Verilator is not entirely happy with it; I need to comment out lines 65 - 67 before I get the same Error message as with the full file:

%Error: Internal Error: ../V3LinkLevel.cpp:89: No module found to process

Note: once the (super) interface is instantiated in our design that Internal Error message goes away.

With regards to how we wire the interface into our design, we use the following syntax in our module declaration:

  block_channel_ifce.master <channel_name>,

And we're assigning values / signals to the interface using the following syntax:

       assign <signal_assigned>	= <interface>.<interface_wire>;

At the next level up, we do:

  block_channel_ifce.master <channel1_name>,
  block_channel_ifce.master <channel2_name>,

And:

<module> <instance1> (
  .block_channel_ifce	(<interface1_name>),

...

<module> <instance2> (
  .block_channel_ifce	(<interface2_name>),

Cheers,
Ed

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Ed Lander
Original Date: 2013-06-18T16:37:58Z


Important clarification: whilst we define multiple / nested interfaces, our design isn't actually using the nested style (other EDA tools are unhappy with it). I'll enhance the example file to align with our integration and see if I can throw up the internal Error.

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Ed Lander
Original Date: 2013-06-19T11:17:01Z


Revised example attached. Internal error not repeated; i'll try recoding our complex example ...

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Ed Lander
Original Date: 2013-06-19T11:45:23Z


Typo in example corrected.

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Ed Lander
Original Date: 2013-06-19T13:13:17Z


Clean example attached (to be made more complex).

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Ed Lander
Original Date: 2013-06-19T13:58:35Z


Example updated (now with two instances of an interface propagating down through two levels of hierarchy). Clean output from Verilator.

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Ed Lander
Original Date: 2013-06-19T14:34:54Z


I've replicated our example almost exactly now (file attached), but Verilator is happy with it (cannot recreate internal error).

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2013-06-21T00:28:38Z


Ok, so the last example you gave already passes on git head, right? So I'm not sure if there's something for me to look at here or not....

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Ed Lander
Original Date: 2013-06-21T09:11:49Z


Hi Wilson, yes indeed sadly I cannot recreate the internal error with our simplified example, so there is nothing for you to look at. I'll try and debug the internal error at our side further ...
Cheers, Ed

@veripoolbot
Copy link
Contributor Author


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2014-01-18T18:32:04Z


Closing - recent versions work.

@veripoolbot veripoolbot added the resolution: abandoned Closed; not enough information or otherwise never finished label Dec 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
resolution: abandoned Closed; not enough information or otherwise never finished
Projects
None yet
Development

No branches or pull requests

1 participant