LUT3.v
1.37 KB
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
// $Header: /root/leakn64/depot/rf/hw/flif/xilinx/LUT3.v,v 1.1 2003/08/20 23:46:50 berndt Exp $
/*
FUNCTION : 3-inputs LUT
*/
`timescale 100 ps / 10 ps
module LUT3 (O, I0, I1, I2);
parameter INIT = 8'h00;
input I0, I1, I2;
output O;
wire out0, out1, out;
lut3_mux4 (out1, INIT[7], INIT[6], INIT[5], INIT[4], I1, I0);
lut3_mux4 (out0, INIT[3], INIT[2], INIT[1], INIT[0], I1, I0);
lut3_mux4 (out, 1'b0, 1'b0, out1, out0, 1'b0, I2);
buf b3 (O, out);
specify
(I0 *> O) = (1, 1);
(I1 *> O) = (1, 1);
(I2 *> O) = (1, 1);
endspecify
endmodule
primitive lut3_mux4 (O, d3, d2, d1, d0, s1, s0);
output O;
input d3, d2, d1, d0;
input s1, s0;
table
// d3 d2 d1 d0 s1 s0 : O;
? ? ? 1 0 0 : 1;
? ? ? 0 0 0 : 0;
? ? 1 ? 0 1 : 1;
? ? 0 ? 0 1 : 0;
? 1 ? ? 1 0 : 1;
? 0 ? ? 1 0 : 0;
1 ? ? ? 1 1 : 1;
0 ? ? ? 1 1 : 0;
? ? 0 0 0 x : 0;
? ? 1 1 0 x : 1;
0 0 ? ? 1 x : 0;
1 1 ? ? 1 x : 1;
? 0 ? 0 x 0 : 0;
? 1 ? 1 x 0 : 1;
0 ? 0 ? x 1 : 0;
1 ? 1 ? x 1 : 1;
0 0 0 0 x x : 0;
1 1 1 1 x x : 1;
endtable
endprimitive