Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Synthesis issue with shift and multiplication #1047

Closed
ymherklotz opened this issue May 28, 2019 · 1 comment · Fixed by #1049
Closed

Synthesis issue with shift and multiplication #1047

ymherklotz opened this issue May 28, 2019 · 1 comment · Fixed by #1049
Assignees
Labels
bug fix pending PR with a fix is pending

Comments

@ymherklotz
Copy link

Steps to reproduce the issue

Consider the following Verilog code

module top (y, w);
   output y;
   input [2:0] w;
   assign y = 1'b1 >> (w * (3'b110));
endmodule

Run with yosys version

Generated by Yosys 0.8+498 (git sha1 92dde319, clang 8.0.0 -fPIC -Os)

and the following command

yosys -p 'read -formal rtl.v; synth; write_verilog -noattr syn_yosys.v'

Expected behavior

When passing the input 3'b100, I would expect the output to give 1'b1, as 3'b100 * 3'b110 = 3'b000.

Actual behavior

The synthesised output is the following, which when given 3'b100 gives 1'b0 as output.

module top(y, w);
  wire _0_;
  input [2:0] w;
  output y;
  assign _0_ = ~(w[1] | w[0]);
  assign y = _0_ & ~(w[2]);
endmodule

I have included a testbench with iverilog and SymbiYosys script that compares the RTL to the synthesised Verilog. To run everything, run ./run.sh.

test_bug.zip

@cliffordwolf cliffordwolf self-assigned this May 28, 2019
cliffordwolf added a commit that referenced this issue May 28, 2019
#1047

Signed-off-by: Clifford Wolf <clifford@clifford.at>
@cliffordwolf cliffordwolf added the fix pending PR with a fix is pending label May 28, 2019
@cliffordwolf
Copy link
Collaborator

Thanks for reporting this issue. #1049 will fix this.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug fix pending PR with a fix is pending
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants