aboutsummaryrefslogtreecommitdiffstats
path: root/tests/opt/opt_share_mux_tree.v
diff options
context:
space:
mode:
authorBogdan Vukobratovic <bogdan.vukobratovic@gmail.com>2019-07-26 11:36:48 +0200
committerBogdan Vukobratovic <bogdan.vukobratovic@gmail.com>2019-07-26 11:36:48 +0200
commit07c4a7d4388cdacaa15512dd2f6f0f9e9fcb31f5 (patch)
tree1bee2945a214e126b3356168c9763aa16d336a98 /tests/opt/opt_share_mux_tree.v
parenta02d1720a766ae1b993a9884e840f37b3d785b8f (diff)
downloadyosys-07c4a7d4388cdacaa15512dd2f6f0f9e9fcb31f5.tar.gz
yosys-07c4a7d4388cdacaa15512dd2f6f0f9e9fcb31f5.tar.bz2
yosys-07c4a7d4388cdacaa15512dd2f6f0f9e9fcb31f5.zip
Implement opt_share
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
Diffstat (limited to 'tests/opt/opt_share_mux_tree.v')
-rw-r--r--tests/opt/opt_share_mux_tree.v19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/opt/opt_share_mux_tree.v b/tests/opt/opt_share_mux_tree.v
new file mode 100644
index 000000000..807ed2978
--- /dev/null
+++ b/tests/opt/opt_share_mux_tree.v
@@ -0,0 +1,19 @@
+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