aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/common/gate2lut.v
diff options
context:
space:
mode:
authorJim Lawson <ucbjrl@berkeley.edu>2018-12-18 14:08:20 -0800
committerJim Lawson <ucbjrl@berkeley.edu>2018-12-18 14:08:20 -0800
commitf4d500f98e0e298a98099ec2177b43571e9cda61 (patch)
treee39952065ae50763d5ef47ec1495ad234eaca59e /techlibs/common/gate2lut.v
parent3bb9288d65f547085b79fbaffb7046f336ff7f59 (diff)
parent2d73e1b60a43f2a621b387768134b83054f59e89 (diff)
downloadyosys-f4d500f98e0e298a98099ec2177b43571e9cda61.tar.gz
yosys-f4d500f98e0e298a98099ec2177b43571e9cda61.tar.bz2
yosys-f4d500f98e0e298a98099ec2177b43571e9cda61.zip
Merge remote-tracking branch 'upstream/master'
# Conflicts: # CHANGELOG # frontends/verific/verific.cc # frontends/verilog/verilog_parser.y
Diffstat (limited to 'techlibs/common/gate2lut.v')
-rw-r--r--techlibs/common/gate2lut.v87
1 files changed, 87 insertions, 0 deletions
diff --git a/techlibs/common/gate2lut.v b/techlibs/common/gate2lut.v
new file mode 100644
index 000000000..99c123f4a
--- /dev/null
+++ b/techlibs/common/gate2lut.v
@@ -0,0 +1,87 @@
+(* techmap_celltype = "$_NOT_" *)
+module _90_lut_not (A, Y);
+ input A;
+ output Y;
+
+ wire [`LUT_WIDTH-1:0] AA;
+ assign AA = {A};
+
+ \$lut #(
+ .WIDTH(`LUT_WIDTH),
+ .LUT(4'b01)
+ ) lut (
+ .A(AA),
+ .Y(Y)
+ );
+endmodule
+
+(* techmap_celltype = "$_OR_" *)
+module _90_lut_or (A, B, Y);
+ input A, B;
+ output Y;
+
+ wire [`LUT_WIDTH-1:0] AA;
+ assign AA = {B, A};
+
+ \$lut #(
+ .WIDTH(`LUT_WIDTH),
+ .LUT(4'b1110)
+ ) lut (
+ .A(AA),
+ .Y(Y)
+ );
+endmodule
+
+(* techmap_celltype = "$_AND_" *)
+module _90_lut_and (A, B, Y);
+ input A, B;
+ output Y;
+
+ wire [`LUT_WIDTH-1:0] AA;
+ assign AA = {B, A};
+
+ \$lut #(
+ .WIDTH(`LUT_WIDTH),
+ .LUT(4'b1000)
+ ) lut (
+ .A(AA),
+ .Y(Y)
+ );
+endmodule
+
+(* techmap_celltype = "$_XOR_" *)
+module _90_lut_xor (A, B, Y);
+ input A, B;
+ output Y;
+
+ wire [`LUT_WIDTH-1:0] AA;
+ assign AA = {B, A};
+
+ \$lut #(
+ .WIDTH(`LUT_WIDTH),
+ .LUT(4'b0110)
+ ) lut (
+ .A(AA),
+ .Y(Y)
+ );
+endmodule
+
+(* techmap_celltype = "$_MUX_" *)
+module _90_lut_mux (A, B, S, Y);
+ input A, B, S;
+ output Y;
+
+ wire [`LUT_WIDTH-1:0] AA;
+ assign AA = {S, B, A};
+
+ \$lut #(
+ .WIDTH(`LUT_WIDTH),
+ // A 1010 1010
+ // B 1100 1100
+ // S 1111 0000
+ .LUT(8'b_1100_1010)
+ ) lut (
+ .A(AA),
+ .Y(Y)
+ );
+endmodule