summaryrefslogtreecommitdiff
path: root/manual/PRESENTATION_ExAdv/macc_xilinx_wrap_map.v
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-02-20 20:44:41 +0100
committerClifford Wolf <clifford@clifford.at>2014-02-20 20:44:41 +0100
commitb0e84802ecf3e224387317245786cd1437773a42 (patch)
treea8baa31ba434bd17f28fcd2ecb966491b0147874 /manual/PRESENTATION_ExAdv/macc_xilinx_wrap_map.v
parent0dadfed46d938282d7651c9a817f33b1d87397c7 (diff)
Progress in presentation
Diffstat (limited to 'manual/PRESENTATION_ExAdv/macc_xilinx_wrap_map.v')
-rw-r--r--manual/PRESENTATION_ExAdv/macc_xilinx_wrap_map.v91
1 files changed, 91 insertions, 0 deletions
diff --git a/manual/PRESENTATION_ExAdv/macc_xilinx_wrap_map.v b/manual/PRESENTATION_ExAdv/macc_xilinx_wrap_map.v
new file mode 100644
index 00000000..d1ded295
--- /dev/null
+++ b/manual/PRESENTATION_ExAdv/macc_xilinx_wrap_map.v
@@ -0,0 +1,91 @@
+
+(* techmap_celltype = "$mul" *)
+module mul_wrap (A, B, Y);
+
+parameter A_SIGNED = 0;
+parameter B_SIGNED = 0;
+parameter A_WIDTH = 1;
+parameter B_WIDTH = 1;
+parameter Y_WIDTH = 1;
+
+input [A_WIDTH-1:0] A;
+input [B_WIDTH-1:0] B;
+output [Y_WIDTH-1:0] Y;
+
+wire [24:0] A_25 = A;
+wire [17:0] B_18 = B;
+wire [47:0] Y_48;
+assign Y = Y_48;
+
+wire [1023:0] _TECHMAP_DO_ = "proc; clean";
+
+reg _TECHMAP_FAIL_;
+initial begin
+ _TECHMAP_FAIL_ <= 0;
+ if (A_SIGNED || B_SIGNED)
+ _TECHMAP_FAIL_ <= 1;
+ if (A_WIDTH < 4 || B_WIDTH < 4)
+ _TECHMAP_FAIL_ <= 1;
+ if (A_WIDTH > 25 || B_WIDTH > 18)
+ _TECHMAP_FAIL_ <= 1;
+ if (A_WIDTH*B_WIDTH < 100)
+ _TECHMAP_FAIL_ <= 1;
+end
+
+\$__mul_wrapper #(
+ .A_SIGNED(A_SIGNED),
+ .B_SIGNED(B_SIGNED),
+ .A_WIDTH(A_WIDTH),
+ .B_WIDTH(B_WIDTH),
+ .Y_WIDTH(Y_WIDTH)
+) _TECHMAP_REPLACE_ (
+ .A(A_25),
+ .B(B_18),
+ .Y(Y_48)
+);
+
+endmodule
+
+(* techmap_celltype = "$add" *)
+module add_wrap (A, B, Y);
+
+parameter A_SIGNED = 0;
+parameter B_SIGNED = 0;
+parameter A_WIDTH = 1;
+parameter B_WIDTH = 1;
+parameter Y_WIDTH = 1;
+
+input [A_WIDTH-1:0] A;
+input [B_WIDTH-1:0] B;
+output [Y_WIDTH-1:0] Y;
+
+wire [47:0] A_48 = A;
+wire [47:0] B_48 = B;
+wire [47:0] Y_48;
+assign Y = Y_48;
+
+wire [1023:0] _TECHMAP_DO_ = "proc; clean";
+
+reg _TECHMAP_FAIL_;
+initial begin
+ _TECHMAP_FAIL_ <= 0;
+ if (A_SIGNED || B_SIGNED)
+ _TECHMAP_FAIL_ <= 1;
+ if (A_WIDTH < 10 && B_WIDTH < 10)
+ _TECHMAP_FAIL_ <= 1;
+end
+
+\$__add_wrapper #(
+ .A_SIGNED(A_SIGNED),
+ .B_SIGNED(B_SIGNED),
+ .A_WIDTH(A_WIDTH),
+ .B_WIDTH(B_WIDTH),
+ .Y_WIDTH(Y_WIDTH)
+) _TECHMAP_REPLACE_ (
+ .A(A_48),
+ .B(B_48),
+ .Y(Y_48)
+);
+
+endmodule
+