aboutsummaryrefslogtreecommitdiffstats
path: root/tests/efinix/mux.v
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2019-10-04 12:20:49 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2019-10-04 12:20:49 +0200
commitef417fb1b3555a3075bcd01cb7c5267f3e55b407 (patch)
tree80813ffc49a6a645cb28224af9359ebfe12634a5 /tests/efinix/mux.v
parent2ed2e9c3e8f2d9d6882588857c8556a6e2af57ea (diff)
parenteb750670e3835a1bad36cb604e04bf4836cc7f91 (diff)
downloadyosys-ef417fb1b3555a3075bcd01cb7c5267f3e55b407.tar.gz
yosys-ef417fb1b3555a3075bcd01cb7c5267f3e55b407.tar.bz2
yosys-ef417fb1b3555a3075bcd01cb7c5267f3e55b407.zip
Merge branch 'SergeyDegtyar/efinix' of https://github.com/SergeyDegtyar/yosys into mmicko/efinix
Diffstat (limited to 'tests/efinix/mux.v')
-rw-r--r--tests/efinix/mux.v100
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/efinix/mux.v b/tests/efinix/mux.v
new file mode 100644
index 000000000..0814b733e
--- /dev/null
+++ b/tests/efinix/mux.v
@@ -0,0 +1,100 @@
+module mux2 (S,A,B,Y);
+ input S;
+ input A,B;
+ output reg Y;
+
+ always @(*)
+ Y = (S)? B : A;
+endmodule
+
+module mux4 ( S, D, Y );
+
+input[1:0] S;
+input[3:0] D;
+output Y;
+
+reg Y;
+wire[1:0] S;
+wire[3:0] D;
+
+always @*
+begin
+ case( S )
+ 0 : Y = D[0];
+ 1 : Y = D[1];
+ 2 : Y = D[2];
+ 3 : Y = D[3];
+ endcase
+end
+
+endmodule
+
+module mux8 ( S, D, Y );
+
+input[2:0] S;
+input[7:0] D;
+output Y;
+
+reg Y;
+wire[2:0] S;
+wire[7:0] D;
+
+always @*
+begin
+ case( S )
+ 0 : Y = D[0];
+ 1 : Y = D[1];
+ 2 : Y = D[2];
+ 3 : Y = D[3];
+ 4 : Y = D[4];
+ 5 : Y = D[5];
+ 6 : Y = D[6];
+ 7 : Y = D[7];
+ endcase
+end
+
+endmodule
+
+module mux16 (D, S, Y);
+ input [15:0] D;
+ input [3:0] S;
+ output Y;
+
+assign Y = D[S];
+
+endmodule
+
+
+module top (
+input [3:0] S,
+input [15:0] D,
+output M2,M4,M8,M16
+);
+
+mux2 u_mux2 (
+ .S (S[0]),
+ .A (D[0]),
+ .B (D[1]),
+ .Y (M2)
+ );
+
+
+mux4 u_mux4 (
+ .S (S[1:0]),
+ .D (D[3:0]),
+ .Y (M4)
+ );
+
+mux8 u_mux8 (
+ .S (S[2:0]),
+ .D (D[7:0]),
+ .Y (M8)
+ );
+
+mux16 u_mux16 (
+ .S (S[3:0]),
+ .D (D[15:0]),
+ .Y (M16)
+ );
+
+endmodule