mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 12:28:44 +00:00
This pass identifies arithmetic operators that share an operand and whose results are used in mutually exclusive cases controlled by a multiplexer, and merges them together by multiplexing the other operands
20 lines
366 B
Verilog
20 lines
366 B
Verilog
module add_sub(
|
|
input [15:0] a,
|
|
input [15:0] b,
|
|
input [15:0] c,
|
|
input [1:0] sel,
|
|
output reg [15:0] res
|
|
);
|
|
|
|
|
|
always @* begin
|
|
case(sel)
|
|
0: res = a + b;
|
|
1: res = a - b;
|
|
2: res = a + c;
|
|
default: res = 16'bx;
|
|
endcase
|
|
end
|
|
|
|
endmodule
|