2020-03-19 16:57:10 -05:00
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input a, output [1:0] y);
|
|
|
|
assign y = {a,1'b0} + 1'b1;
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
alumacc
|
2020-04-13 12:29:39 -05:00
|
|
|
equiv_opt -assert opt_expr -fine
|
2020-03-19 16:57:10 -05:00
|
|
|
design -load postopt
|
|
|
|
select -assert-count 1 t:$pos
|
|
|
|
select -assert-count none t:$pos t:* %D
|
|
|
|
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input a, output [1:0] y);
|
|
|
|
assign y = {a,1'b1} + 1'b1;
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
alumacc
|
|
|
|
select -assert-count 1 t:$alu
|
|
|
|
select -assert-count none t:$alu t:* %D
|
|
|
|
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input a, output [1:0] y);
|
|
|
|
assign y = {a,1'b1} - 1'b1;
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
2020-04-13 12:29:39 -05:00
|
|
|
equiv_opt -assert opt_expr -fine
|
2020-03-19 16:57:10 -05:00
|
|
|
design -load postopt
|
|
|
|
select -assert-count 1 t:$pos
|
|
|
|
select -assert-count none t:$pos t:* %D
|
|
|
|
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input a, output [3:0] y);
|
|
|
|
assign y = {a,3'b101} - 1'b1;
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
2020-04-13 12:29:39 -05:00
|
|
|
equiv_opt -assert opt_expr -fine
|
2020-03-19 16:57:10 -05:00
|
|
|
design -load postopt
|
|
|
|
select -assert-count 1 t:$pos
|
|
|
|
select -assert-count none t:$pos t:* %D
|
|
|
|
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input a, output [3:0] y);
|
|
|
|
assign y = {a,3'b101} - 1'b1;
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
alumacc
|
2020-04-13 12:29:39 -05:00
|
|
|
equiv_opt -assert opt_expr -fine
|
2020-03-19 16:57:10 -05:00
|
|
|
design -load postopt
|
|
|
|
select -assert-count 1 t:$pos
|
|
|
|
select -assert-count none t:$pos t:* %D
|
2020-04-13 12:29:39 -05:00
|
|
|
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input [1:0] a, output [3:0] y);
|
|
|
|
assign y = -{a[1], 2'b10, a[0]};
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
alumacc
|
|
|
|
equiv_opt -assert opt -fine
|
|
|
|
design -load postopt
|
|
|
|
select -assert-count 1 t:$alu
|
|
|
|
select -assert-count 1 t:$alu r:Y_WIDTH=3 %i
|
|
|
|
select -assert-count 1 t:$not
|
|
|
|
select -assert-count none t:$alu t:$not t:* %D %D
|
|
|
|
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input [3:0] a, input [2:0] b, output [5:0] y);
|
|
|
|
assign y = {a[3:2], 1'b1, a[1:0]} + {b[2], 2'b11, b[1:0]};
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
alumacc
|
|
|
|
equiv_opt -assert opt -fine
|
|
|
|
design -load postopt
|
|
|
|
dump
|
|
|
|
select -assert-count 2 t:$alu
|
|
|
|
select -assert-count 1 t:$alu r:Y_WIDTH=2 %i
|
|
|
|
select -assert-count 1 t:$alu r:Y_WIDTH=3 %i
|
|
|
|
select -assert-count none t:$alu t:* %D
|
|
|
|
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
read_verilog <<EOT
|
|
|
|
module test(input [3:0] a, input [3:0] b, output [5:0] y);
|
|
|
|
assign y = {a[3:2], 1'b0, a[1:0]} + {b[3:2], 1'b0, b[1:0]};
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
|
|
|
|
alumacc
|
|
|
|
equiv_opt -assert opt -fine
|
|
|
|
design -load postopt
|
|
|
|
select -assert-count 2 t:$alu
|
|
|
|
select -assert-count 2 t:$alu r:Y_WIDTH=3 %i
|
|
|
|
select -assert-count none t:$alu t:* %D
|