Signedness
authorEddie Hung <eddie@fpgeh.com>
Tue, 16 Jul 2019 22:54:27 +0000 (15:54 -0700)
committerEddie Hung <eddie@fpgeh.com>
Tue, 16 Jul 2019 22:54:27 +0000 (15:54 -0700)
techlibs/xilinx/cells_sim.v
techlibs/xilinx/dsp_map.v

index 1262fc8c1a8352f5eef1be065e2f741a3c22085e..33b2a8f620bf6f13175b74dd3cd4ded2500e3d4e 100644 (file)
@@ -386,15 +386,15 @@ module DSP48E1 (
     output [3:0] CARRYOUT,
     output MULTSIGNOUT,
     output OVERFLOW,
-    output reg [47:0] P,
+    output reg signed [47:0] P,
     output PATTERNBDETECT,
     output PATTERNDETECT,
     output [47:0] PCOUT,
     output UNDERFLOW,
-    input [29:0] A,
+    input signed [29:0] A,
     input [29:0] ACIN,
     input [3:0] ALUMODE,
-    input [17:0] B,
+    input signed [17:0] B,
     input [17:0] BCIN,
     input [47:0] C,
     input CARRYCASCIN,
@@ -494,9 +494,9 @@ module DSP48E1 (
 `endif
     end
 
-    reg [29:0] Ar;
-    reg [17:0] Br;
-    reg [47:0] Pr;
+    reg signed [29:0] Ar;
+    reg signed [17:0] Br;
+    reg signed [47:0] Pr;
     generate
         if (AREG == 1) begin always @(posedge CLK) if (CEA2) Ar <= A; end
         else           always @* Ar <= A;
@@ -516,7 +516,7 @@ module DSP48E1 (
         if (PCIN != 48'b0)          $fatal(1, "Unsupported PCIN value");
         if (CARRYIN != 1'b0)        $fatal(1, "Unsupported CARRYIN value");
 `endif
-        Pr[42:0] <= $signed(Ar[24:0]) * $signed(Br);
+        Pr[42:0] <= $signed(Ar[24:0]) * Br;
     end
 
     generate
index da1d6f3a9ffe78a69803267d04e13cddc77c94f4..28e4568987f4402455c7ca94bae497dfe9300f2e 100644 (file)
@@ -20,7 +20,7 @@ module \$__MUL25X18 (input [24:0] A, input [17:0] B, output [42:0] Y);
                .PREG(0)
        ) _TECHMAP_REPLACE_ (
                //Data path
-               .A({5'b0, A}),
+               .A({{5{A[24]}}, A}),
                .B(B),
                .C(48'b0),
                .D(24'b0),