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
Improve error handling on slices of packed arrays #226
Comments
Original Redmine Comment Thanks! A test even! In git for 3.802+ |
Original Redmine Comment From: Lane Brooks I haven't been following the array/slice changes, but I recently pulled %Error: ../../UXN1230/lib/rtl/HostInterface/models/fx2.v:46: The verilog of line in question is: reg [15:0] wbuf[0:255] /* verilator public */; I git reverted commit 6715cb9 and it Do you need me to further isolate the problem or is this sufficient? The Lane |
Original Redmine Comment Previously I mentioned that even after reverting this patch that I was still having problems. That was not correct. So in summary, this patch causes the above mentioned error. If I remove the /* verilator public */, then the error changes to
Line 75 is a read from the array inside a clocked process:
If I revert this patch, everything works fine. |
Original Redmine Comment I haven't been able to reproduce this but I have found some possible issues with the code. Some of these were found as part of #227 so I'll probably put most/all of the patches there. Wilson, at the moment V3Slice runs on every AstNodeAssign but I don't think it should. I've skipped AstAssignAlias nodes and all of the Verilator and my regression passes. Can you think of any other assign nodes that don't make it to V3Emit? |
Original Redmine Comment Spoke too soon, AstAssignAlias nodes do make it to V3Emit so they do need to be expanded for slices. |
Original Redmine Comment I did a little more digging into this problem, and it seems like a false alarm. I checked out the main branch without my new tristate changes and I do not see these errors. Likewise if I leave my changes in but revert this patch, I do not see the errors. So there is a conflict between this patch and my tristate changes. So I dug a little deeper and found that the array was being tristate expanded because it did not have an any drivers (the drivers are actually in C). I decided that I will not tristate expand public variables when they have no drivers. That resolves the conflict. |
Original Redmine Comment Great, thanks Lane, that explains why I couldn't reproduce it :) |
Original Redmine Comment In 3.802 |
Author Name: Byron Bradley (@bbradley)
Original Redmine Issue: 226 from https://www.veripool.org
Original Date: 2010-03-19
Original Assignee: Byron Bradley (@bbradley)
The attached patch improves error handling on slices of packed arrays:
The text was updated successfully, but these errors were encountered: