Remove (* techmap_autopurge *) from abc_unmap.v since no effect
[yosys.git] / techlibs / xilinx / xc6s_ff_map.v
1 /*
2 * yosys -- Yosys Open SYnthesis Suite
3 *
4 * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
5 *
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 */
19
20 // ============================================================================
21 // FF mapping
22
23 `ifndef _NO_FFS
24
25 module \$_DFF_N_ (input D, C, output Q);
26 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
27 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
28 FDSE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .S(1'b0));
29 else
30 FDRE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0));
31 endgenerate
32 endmodule
33 module \$_DFF_P_ (input D, C, output Q);
34 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
35 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
36 FDSE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .S(1'b0));
37 else
38 FDRE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0));
39 endgenerate
40 endmodule
41
42 module \$_DFFE_NP_ (input D, C, E, output Q);
43 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
44 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
45 FDSE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .S(1'b0));
46 else
47 FDRE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .R(1'b0));
48 endgenerate
49 endmodule
50 module \$_DFFE_PP_ (input D, C, E, output Q);
51 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
52 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
53 FDSE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .S(1'b0));
54 else
55 FDRE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E), .R(1'b0));
56 endgenerate
57 endmodule
58
59 module \$_DFF_NN0_ (input D, C, R, output Q);
60 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
61 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
62 $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1");
63 else
64 FDCE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R));
65 endgenerate
66 endmodule
67 module \$_DFF_NP0_ (input D, C, R, output Q);
68 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
69 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
70 $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1");
71 else
72 FDCE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R));
73 endgenerate
74 endmodule
75 module \$_DFF_PN0_ (input D, C, R, output Q);
76 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
77 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
78 $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1");
79 else
80 FDCE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R));
81 endgenerate
82 endmodule
83 module \$_DFF_PP0_ (input D, C, R, output Q);
84 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
85 generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
86 $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1");
87 else
88 FDCE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R));
89 endgenerate
90 endmodule
91
92 module \$_DFF_NN1_ (input D, C, R, output Q);
93 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
94 generate if (_TECHMAP_WIREINIT_Q_ === 1'b0)
95 $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0");
96 else
97 FDPE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R));
98 endgenerate
99 endmodule
100 module \$_DFF_NP1_ (input D, C, R, output Q);
101 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
102 generate if (_TECHMAP_WIREINIT_Q_ === 1'b0)
103 $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0");
104 else
105 FDPE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R));
106 endgenerate
107 endmodule
108 module \$_DFF_PN1_ (input D, C, R, output Q);
109 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
110 generate if (_TECHMAP_WIREINIT_Q_ === 1'b0)
111 $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0");
112 else
113 FDPE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R));
114 endgenerate
115 endmodule
116 module \$_DFF_PP1_ (input D, C, R, output Q);
117 parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx;
118 generate if (_TECHMAP_WIREINIT_Q_ === 1'b0)
119 $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0");
120 else
121 FDPE #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R));
122 endgenerate
123 endmodule
124
125 `endif
126