3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-05-25 11:26:22 +00:00
yosys/tests/arith_tree/arith_tree_fma.ys
2026-05-18 13:44:40 +02:00

119 lines
2 KiB
Text

read_verilog <<EOT
module fma_mul_only(
input [3:0] a, b,
output [7:0] y
);
assign y = a * b;
endmodule
EOT
hierarchy -auto-top
proc
alumacc
opt
equiv_opt arith_tree
design -load postopt
select -assert-count 0 t:$macc t:$macc_v2 %u
select -assert-count 0 t:$mul
select -assert-count 1 t:$add
select -assert-min 1 t:$fa
design -reset
read_verilog <<EOT
module fma_mac(
input [3:0] a, b,
input [7:0] c,
output [7:0] y
);
assign y = a * b + c;
endmodule
EOT
hierarchy -auto-top
proc
alumacc
opt
equiv_opt arith_tree
design -load postopt
select -assert-count 0 t:$macc t:$macc_v2 %u
select -assert-count 0 t:$mul
select -assert-count 1 t:$add
select -assert-min 1 t:$fa
design -reset
read_verilog <<EOT
module fma_dot2(
input [3:0] a, b, c, d,
output [7:0] y
);
assign y = a * b + c * d;
endmodule
EOT
hierarchy -auto-top
proc
alumacc
opt
equiv_opt arith_tree
design -load postopt
select -assert-count 0 t:$macc t:$macc_v2 %u
select -assert-count 0 t:$mul
select -assert-count 1 t:$add
select -assert-min 1 t:$fa
design -reset
read_verilog <<EOT
module fma_mac_sub(
input [3:0] a, b,
input [7:0] c,
output [7:0] y
);
assign y = a * b - c;
endmodule
EOT
hierarchy -auto-top
proc
alumacc
opt
equiv_opt arith_tree
design -load postopt
select -assert-count 0 t:$macc t:$macc_v2 %u
select -assert-count 0 t:$mul
select -assert-count 1 t:$add
select -assert-min 1 t:$fa
design -reset
read_verilog <<EOT
module fma_disabled(
input [3:0] a, b,
input [7:0] c,
output [7:0] y
);
assign y = a * b + c;
endmodule
EOT
hierarchy -auto-top
proc
alumacc
opt
equiv_opt arith_tree -no-fma
design -load postopt
select -assert-count 0 t:$fa
select -assert-min 1 t:$macc t:$macc_v2 %u
design -reset
read_verilog <<EOT
module fma_signed_bailout(
input signed [3:0] a, b,
input signed [7:0] c,
output signed [7:0] y
);
assign y = a * b + c;
endmodule
EOT
hierarchy -auto-top
proc
alumacc
opt
equiv_opt arith_tree
design -load postopt
select -assert-count 0 t:$fa
select -assert-min 1 t:$macc t:$macc_v2 %u
design -reset