yosys/techlibs/gowin/cells_map.v

179 lines
6.0 KiB
Verilog
Raw Normal View History

2019-11-25 07:33:21 -06:00
`default_nettype none
//All DFF* have INIT, but the hardware is always initialised to the reset
//value regardless. The parameter is ignored.
2019-09-05 12:12:47 -05:00
2019-11-25 07:50:34 -06:00
// DFFN D Flip-Flop with Negative-Edge Clock
2020-07-02 17:23:18 -05:00
module \$_DFF_N_ (input D, C, output Q);
DFFN _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C));
2019-11-25 07:33:21 -06:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
endmodule
2019-11-25 07:50:34 -06:00
// DFF D Flip-Flop
2020-07-02 17:23:18 -05:00
module \$_DFF_P_ (input D, C, output Q);
DFF _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C));
2019-11-25 07:33:21 -06:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
endmodule
2019-11-25 07:50:34 -06:00
// DFFE D Flip-Flop with Clock Enable
2020-07-02 17:23:18 -05:00
module \$_DFFE_PP_ (input D, C, E, output Q);
DFFE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CE(E));
2019-11-25 07:33:21 -06:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
endmodule
2019-09-05 12:12:47 -05:00
2019-11-25 07:50:34 -06:00
// DFFNE D Flip-Flop with Negative-Edge Clock and Clock Enable
2020-07-02 17:23:18 -05:00
module \$_DFFE_NP_ (input D, C, E, output Q);
DFFNE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CE(E));
2019-11-25 07:33:21 -06:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
endmodule
2019-09-05 12:12:47 -05:00
2019-11-25 07:50:34 -06:00
// DFFR D Flip-Flop with Synchronous Reset
2020-07-02 17:23:18 -05:00
module \$_SDFF_PP0_ (input D, C, R, output Q);
2019-11-25 07:33:21 -06:00
DFFR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-09-05 12:12:47 -05:00
2019-11-25 07:50:34 -06:00
// DFFNR D Flip-Flop with Negative-Edge Clock and Synchronous Reset
2020-07-02 17:23:18 -05:00
module \$_SDFF_NP0_ (input D, C, R, output Q);
2019-11-25 07:50:34 -06:00
DFFNR _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2019-11-25 07:50:34 -06:00
// DFFRE D Flip-Flop with Clock Enable and Synchronous Reset
2020-07-02 17:23:18 -05:00
module \$_SDFFE_PP0P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFRE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 09:08:13 -05:00
2019-11-25 07:50:34 -06:00
// DFFNRE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Synchronous Reset
2020-07-02 17:23:18 -05:00
module \$_SDFFE_NP0P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFNRE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .RESET(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 09:08:13 -05:00
2019-11-25 07:50:34 -06:00
// DFFS D Flip-Flop with Synchronous Set
2020-07-02 17:23:18 -05:00
module \$_SDFF_PP1_ (input D, C, R, output Q);
2019-11-25 07:50:34 -06:00
DFFS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-09-05 12:12:47 -05:00
2019-11-25 07:50:34 -06:00
// DFFNS D Flip-Flop with Negative-Edge Clock and Synchronous Set
2020-07-02 17:23:18 -05:00
module \$_SDFF_NP1_ (input D, C, R, output Q);
2019-11-25 07:50:34 -06:00
DFFNS _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2019-11-25 07:50:34 -06:00
// DFFSE D Flip-Flop with Clock Enable and Synchronous Set
2020-07-02 17:23:18 -05:00
module \$_SDFFE_PP1P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFSE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 09:08:13 -05:00
2019-11-25 07:50:34 -06:00
// DFFNSE D Flip-Flop with Negative-Edge Clock,Clock Enable,and Synchronous Set
2020-07-02 17:23:18 -05:00
module \$_SDFFE_NP1P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFNSE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .SET(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 09:08:13 -05:00
2019-11-25 07:50:34 -06:00
// DFFP D Flip-Flop with Asynchronous Preset
2020-07-02 17:23:18 -05:00
module \$_DFF_PP1_ (input D, C, R, output Q);
2019-11-25 07:50:34 -06:00
DFFP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2019-11-25 07:50:34 -06:00
// DFFNP D Flip-Flop with Negative-Edge Clock and Asynchronous Preset
2020-07-02 17:23:18 -05:00
module \$_DFF_NP1_ (input D, C, R, output Q);
2019-11-25 07:50:34 -06:00
DFFNP _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2019-11-25 07:50:34 -06:00
// DFFC D Flip-Flop with Asynchronous Clear
2020-07-02 17:23:18 -05:00
module \$_DFF_PP0_ (input D, C, R, output Q);
2019-11-25 07:50:34 -06:00
DFFC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-09-05 12:12:47 -05:00
2019-11-25 07:50:34 -06:00
// DFFNC D Flip-Flop with Negative-Edge Clock and Asynchronous Clear
2020-07-02 17:23:18 -05:00
module \$_DFF_NP0_ (input D, C, R, output Q);
2019-11-25 07:50:34 -06:00
DFFNC _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2019-11-25 07:50:34 -06:00
// DFFPE D Flip-Flop with Clock Enable and Asynchronous Preset
2020-07-02 17:23:18 -05:00
module \$_DFFE_PP1P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2019-11-25 07:50:34 -06:00
// DFFNPE D Flip-Flop with Negative-Edge Clock,Clock Enable, and Asynchronous Preset
2020-07-02 17:23:18 -05:00
module \$_DFFE_NP1P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFNPE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .PRESET(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2019-11-25 07:50:34 -06:00
// DFFCE D Flip-Flop with Clock Enable and Asynchronous Clear
2020-07-02 17:23:18 -05:00
module \$_DFFE_PP0P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-09-05 12:12:47 -05:00
2019-11-25 07:50:34 -06:00
// DFFNCE D Flip-Flop with Negative-Edge Clock,Clock Enable and Asynchronous Clear
2020-07-02 17:23:18 -05:00
module \$_DFFE_NP0P_ (input D, C, R, E, output Q);
2019-11-25 07:50:34 -06:00
DFFNCE _TECHMAP_REPLACE_ (.D(D), .Q(Q), .CLK(C), .CLEAR(R), .CE(E));
2020-07-02 17:23:18 -05:00
wire _TECHMAP_REMOVEINIT_Q_ = 1;
2019-11-25 07:33:21 -06:00
endmodule
2019-10-21 05:31:11 -05:00
2016-11-01 05:31:13 -05:00
module \$lut (A, Y);
2019-11-25 07:50:34 -06:00
parameter WIDTH = 0;
parameter LUT = 0;
2016-11-01 05:31:13 -05:00
(* force_downto *)
2019-11-25 07:50:34 -06:00
input [WIDTH-1:0] A;
output Y;
2016-11-01 05:31:13 -05:00
2019-11-25 07:50:34 -06:00
generate
if (WIDTH == 1) begin
LUT1 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y),
.I0(A[0]));
end else
if (WIDTH == 2) begin
LUT2 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y),
.I0(A[0]), .I1(A[1]));
end else
if (WIDTH == 3) begin
LUT3 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y),
.I0(A[0]), .I1(A[1]), .I2(A[2]));
end else
if (WIDTH == 4) begin
LUT4 #(.INIT(LUT)) _TECHMAP_REPLACE_ (.F(Y),
.I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(A[3]));
end else
if (WIDTH == 5) begin
wire f0, f1;
\$lut #(.LUT(LUT[15: 0]), .WIDTH(4)) lut0 (.A(A[3:0]), .Y(f0));
\$lut #(.LUT(LUT[31:16]), .WIDTH(4)) lut1 (.A(A[3:0]), .Y(f1));
MUX2_LUT5 mux5(.I0(f0), .I1(f1), .S0(A[4]), .O(Y));
end else
if (WIDTH == 6) begin
wire f0, f1;
\$lut #(.LUT(LUT[31: 0]), .WIDTH(5)) lut0 (.A(A[4:0]), .Y(f0));
\$lut #(.LUT(LUT[63:32]), .WIDTH(5)) lut1 (.A(A[4:0]), .Y(f1));
MUX2_LUT6 mux6(.I0(f0), .I1(f1), .S0(A[5]), .O(Y));
end else
if (WIDTH == 7) begin
wire f0, f1;
\$lut #(.LUT(LUT[63: 0]), .WIDTH(6)) lut0 (.A(A[5:0]), .Y(f0));
\$lut #(.LUT(LUT[127:64]), .WIDTH(6)) lut1 (.A(A[5:0]), .Y(f1));
MUX2_LUT7 mux7(.I0(f0), .I1(f1), .S0(A[6]), .O(Y));
end else
if (WIDTH == 8) begin
wire f0, f1;
\$lut #(.LUT(LUT[127: 0]), .WIDTH(7)) lut0 (.A(A[6:0]), .Y(f0));
\$lut #(.LUT(LUT[255:128]), .WIDTH(7)) lut1 (.A(A[6:0]), .Y(f1));
MUX2_LUT8 mux8(.I0(f0), .I1(f1), .S0(A[7]), .O(Y));
end else begin
wire _TECHMAP_FAIL_ = 1;
end
endgenerate
2016-11-01 05:31:13 -05:00
endmodule