-
Notifications
You must be signed in to change notification settings - Fork 182
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
Internal error during proc inlining #1455
Comments
I'm not able to reproduce this error w/ v0.0.0-5199-gf59b8a886: can you confirm which build are you using? |
Disable proc inlining due to google#1455 Internal-tag: [#52186] Signed-off-by: Pawel Czarnecki <[email protected]>
This issue occurs in #1315 as well. It looks like it might be done here. |
It seems you currently have to remove the flag from |
Disable proc inlining due to google#1455 Internal-tag: [#52186] Signed-off-by: Pawel Czarnecki <[email protected]>
Not able to generate verilog code due to broken IR optimization see google#1455 Internal-tag: [#52186] Signed-off-by: Pawel Czarnecki <[email protected]>
Not able to generate verilog code due to broken IR optimization see google#1455 Internal-tag: [#52186] Signed-off-by: Pawel Czarnecki <[email protected]>
@hongted it seems that the problem still exists. I updated the example that shows the problem: |
In order to unblock verilog and PD: I was thinking that they may be able to codegen the memory interface w/o inlining as a regular DSLX proc w/ a channel rdv/vld (without any DSLX ram integration) and stub out the verilog module w/ an adapter to the ram macros; wdyt? |
The problem is quite specific. So in some cases it is easier to split interaction with RAM between two child processes - one responsible for writing data to RAM, and one for reading if from the memory. In that case we cannot generate a complete Verilog with proper RAM signals, because only half of the interface is available for each child process and the RAM rewriting mechanism will fail. In this particular scenario it is required to inline the proc and allow for rewriting all signal at once. I'm not sure but inlining can also affect the scheduler in that case. |
I believe this is a bug introduced with the new token semantics; the inliner wasn't handling that appropriately. I think I have a fix forthcoming! |
It works! Thank you @ericastor |
Describe the bug
Inlining a proc that spawns another proc and contains a logic that performs operations on tokens, causes an internal error.
To Reproduce
One can use the following DSLX code to observe the issue:
Here is a bazel rule that can be used to observe the problem:
Building the
passthrough_nested_opt_ir
target causes the following error:What is interesting, a procs with empty
next()
, like the one below, can be inlined without any problems:Expected behavior
It should be possible to inline the procs
The text was updated successfully, but these errors were encountered: