1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
module \$_DFF_P_ (input D, C, output Q);
ICESTORM_LC #(
.LUT_INIT(2),
.NEG_CLK(0),
.CARRY_ENABLE(0),
.DFF_ENABLE(1),
.SET_NORESET(0),
.ASYNC_SR(0)
) _TECHMAP_REPLACE_ (
.I0(D),
.CLK(C),
.O(Q),
.I1(),
.I2(),
.I3(),
.CIN(),
.CEN(),
.SR(),
.LO(),
.COUT()
);
endmodule
module \$lut (A, Y);
parameter WIDTH = 0;
parameter LUT = 0;
input [WIDTH-1:0] A;
output Y;
generate
if (WIDTH == 1) begin
ICESTORM_LC #(
.LUT_INIT(LUT),
.NEG_CLK(0),
.CARRY_ENABLE(0),
.DFF_ENABLE(0),
.SET_NORESET(0),
.ASYNC_SR(0)
) _TECHMAP_REPLACE_ (
.I0(A[0]), .I1(), .I2(), .I3(), .O(Y),
.CLK(), .CIN(), .CEN(), .SR(), .LO(), .COUT()
);
end
if (WIDTH == 2) begin
ICESTORM_LC #(
.LUT_INIT(LUT),
.NEG_CLK(0),
.CARRY_ENABLE(0),
.DFF_ENABLE(0),
.SET_NORESET(0),
.ASYNC_SR(0)
) _TECHMAP_REPLACE_ (
.I0(A[0]), .I1(A[1]), .I2(), .I3(), .O(Y),
.CLK(), .CIN(), .CEN(), .SR(), .LO(), .COUT()
);
end
if (WIDTH == 3) begin
ICESTORM_LC #(
.LUT_INIT(LUT),
.NEG_CLK(0),
.CARRY_ENABLE(0),
.DFF_ENABLE(0),
.SET_NORESET(0),
.ASYNC_SR(0)
) _TECHMAP_REPLACE_ (
.I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(), .O(Y),
.CLK(), .CIN(), .CEN(), .SR(), .LO(), .COUT()
);
end
if (WIDTH == 4) begin
ICESTORM_LC #(
.LUT_INIT(LUT),
.NEG_CLK(0),
.CARRY_ENABLE(0),
.DFF_ENABLE(0),
.SET_NORESET(0),
.ASYNC_SR(0)
) _TECHMAP_REPLACE_ (
.I0(A[0]), .I1(A[1]), .I2(A[2]), .I3(A[3]), .O(Y),
.CLK(), .CIN(), .CEN(), .SR(), .LO(), .COUT()
);
end
endgenerate
endmodule
|