-
Notifications
You must be signed in to change notification settings - Fork 905
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
Unexpected behaviour of for loop and if statement #1243
Labels
Comments
Reverting #1169 seems to give the expected result (I don't think assigning sel to y is correct, but the register looks good): module top(y, clk, sel);
input clk;
reg reg_assign = 1'h0;
wire [1:0] reg_count;
input sel;
output y;
always @(posedge clk)
reg_assign <= sel;
assign reg_count = 2'h0;
assign y = reg_assign;
endmodule cc @whitequark |
Ah yes you are right, assigning |
@daveshah1 Good catch, I'll fix the pass in a moment. |
whitequark
added a commit
to whitequark/yosys
that referenced
this issue
Aug 8, 2019
Before this commit, in a process like: process $proc$bug.v:8$3 assign $foo \bar switch \sel case 1'1 assign $foo 1'1 assign $foo 1'1 case assign $foo 1'0 end end both of the "assign $foo 1'1" would incorrectly be removed. Fixes YosysHQ#1243.
Fixed in #1267. |
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Steps to reproduce the issue
Consider the following piece of code:
First of all, the for loop in the code does seem a bit dodgy, however, I would still expect
reg_assign
to be set to 1 whensel
is high. Whensel
is low,reg_assign
should then be reset to 0.However, when synthesised with
using
reg_assign
is set to a constant 0 instead of to what the value ofsel
is. Removing the dead if statement in the for loop results in the correct behaviour.I have also attached a folder containing a test bench and SymbiYosys script to compare the design to the synthesised net list.
Expected behaviour
I would expect this to be implemented by assigning
sel
toy
. This is actually also the output of a previous version of Yosys (Yosys 0.8+508 (git sha1 c2ea3746, clang 8.0.0 -fPIC -Os)
)Actual behaviour
However, with Yosys,
y
is set to a constant 0.test.zip
The text was updated successfully, but these errors were encountered: