| (* 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 [17:0] A_18 = A; |
| wire [24:0] B_25 = 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 > 18 || B_WIDTH > 25) |
| _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_18), |
| .B(B_25), |
| .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 |