mirror of
https://github.com/YosysHQ/yosys
synced 2025-07-24 21:27:00 +00:00
Merge pull request #1317 from YosysHQ/eddie/opt_expr_shiftx
opt_expr to trim A port of $shiftx/$shift
This commit is contained in:
commit
b800059fc1
2 changed files with 96 additions and 4 deletions
|
@ -221,3 +221,73 @@ check
|
|||
equiv_opt opt_expr -fine
|
||||
design -load postopt
|
||||
select -assert-count 1 t:$alu r:A_WIDTH=8 r:B_WIDTH=8 r:Y_WIDTH=9 %i %i %i
|
||||
|
||||
###########
|
||||
|
||||
design -reset
|
||||
read_verilog -icells <<EOT
|
||||
module opt_expr_shiftx_1bit(input [2:0] a, input [1:0] b, output y);
|
||||
\$shiftx #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(4), .B_WIDTH(2), .Y_WIDTH(1)) shiftx (.A({1'bx,a}), .B(b), .Y(y));
|
||||
endmodule
|
||||
EOT
|
||||
check
|
||||
|
||||
equiv_opt opt_expr
|
||||
design -load postopt
|
||||
select -assert-count 1 t:$shiftx r:A_WIDTH=3 %i
|
||||
|
||||
###########
|
||||
|
||||
design -reset
|
||||
read_verilog -icells <<EOT
|
||||
module opt_expr_shiftx_3bit(input [9:0] a, input [3:0] b, output [2:0] y);
|
||||
\$shiftx #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(14), .B_WIDTH(4), .Y_WIDTH(3)) shiftx (.A({4'bxx00,a}), .B(b), .Y(y));
|
||||
endmodule
|
||||
EOT
|
||||
check
|
||||
|
||||
equiv_opt opt_expr
|
||||
design -load postopt
|
||||
select -assert-count 1 t:$shiftx r:A_WIDTH=12 %i
|
||||
|
||||
###########
|
||||
|
||||
design -reset
|
||||
read_verilog -icells <<EOT
|
||||
module opt_expr_shift_1bit(input [2:0] a, input [1:0] b, output y);
|
||||
\$shift #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(4), .B_WIDTH(2), .Y_WIDTH(1)) shift (.A({1'b0,a}), .B(b), .Y(y));
|
||||
endmodule
|
||||
EOT
|
||||
check
|
||||
|
||||
equiv_opt opt_expr
|
||||
design -load postopt
|
||||
select -assert-count 1 t:$shift r:A_WIDTH=3 %i
|
||||
|
||||
###########
|
||||
|
||||
design -reset
|
||||
read_verilog -icells <<EOT
|
||||
module opt_expr_shift_3bit(input [9:0] a, input [3:0] b, output [2:0] y);
|
||||
\$shift #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(14), .B_WIDTH(4), .Y_WIDTH(3)) shift (.A({4'b0x0x,a}), .B(b), .Y(y));
|
||||
endmodule
|
||||
EOT
|
||||
check
|
||||
|
||||
equiv_opt opt_expr
|
||||
design -load postopt
|
||||
select -assert-count 1 t:$shift r:A_WIDTH=10 %i
|
||||
|
||||
###########
|
||||
|
||||
design -reset
|
||||
read_verilog -icells <<EOT
|
||||
module opt_expr_shift_3bit_keepdc(input [9:0] a, input [3:0] b, output [2:0] y);
|
||||
\$shift #(.A_SIGNED(0), .B_SIGNED(0), .A_WIDTH(14), .B_WIDTH(4), .Y_WIDTH(3)) shift (.A({4'b0x0x,a}), .B(b), .Y(y));
|
||||
endmodule
|
||||
EOT
|
||||
check
|
||||
|
||||
equiv_opt opt_expr -keepdc
|
||||
design -load postopt
|
||||
select -assert-count 1 t:$shift r:A_WIDTH=13 %i
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue