-
Notifications
You must be signed in to change notification settings - Fork 512
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
Issue with modpaths when BUFT is in different scope #985
Comments
It seems the issue depends only on the scope of the input buffer. It is enough to move the first of the two |
I am pretty sure that I have found the root cause for this issue. The general concept of modpaths in Icarus Verilog is based on the
The What should happen (a bit simplified):
It is crucial that In the working variant with the input buffer in the outer scope, the functors are connected to
If the buffer is moved into the inner scope, for some reason the order in which these functors are connected to the input is changed:
Since this seems to be the order in which the netlist is evaluated and The obvious solution would be to ensure that |
This is a very specify issue that only occurs when manually editing the VVP source file, but an issue nonetheless.
For my work on SDF interconnect, I need to add input and output buffers to modules. Below is the VVP code for a simple design, a buffer
buffer0
instantiated inside the toplevel moduletop
. Instead ofa
andb
being directly connected to theBUFZ
ofbuffer0
, both signals go through aBUFT
.The expected result is that b is delayed by one ns. However, if you run this VVP source file with the latest master, the delay inside the specify block is not applied.
If the "BUFTs" are manually moved to the outer scope
top
, the simulation behaves correctly.For example, insert the
BUFT
s directly aftera
andb
.This is unexpected because the netlist stays the same, only the scope of the
BUFT
s has changed.I am going to investigate this problem, because for SDF interconnect work I need input and output buffers in the same scope as the
.port_info
directives, so I can add a reference to the associated buffer.But if someone already has a clue what it could be, please tell me :)
The text was updated successfully, but these errors were encountered: