This repository was archived by the owner on Oct 14, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathadd8_033.v
More file actions
141 lines (136 loc) · 4.1 KB
/
add8_033.v
File metadata and controls
141 lines (136 loc) · 4.1 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// Library = EvoApprox8b
// Circuit = add8_033
// Area (180) = 1344
// Delay (180) = 0.940
// Power (180) = 382.20
// Area (45) = 96
// Delay (45) = 0.400
// Power (45) = 30.28
// Nodes = 34
// HD = 188032
// MAE = 4.89844
// MSE = 38.75000
// MRE = 2.57 %
// WCE = 16
// WCRE = 600 %
// EP = 92.6 %
module add8_033(A, B, O);
input [7:0] A;
input [7:0] B;
output [8:0] O;
wire [2031:0] N;
assign N[0] = A[0];
assign N[1] = A[0];
assign N[2] = A[1];
assign N[3] = A[1];
assign N[4] = A[2];
assign N[5] = A[2];
assign N[6] = A[3];
assign N[7] = A[3];
assign N[8] = A[4];
assign N[9] = A[4];
assign N[10] = A[5];
assign N[11] = A[5];
assign N[12] = A[6];
assign N[13] = A[6];
assign N[14] = A[7];
assign N[15] = A[7];
assign N[16] = B[0];
assign N[17] = B[0];
assign N[18] = B[1];
assign N[19] = B[1];
assign N[20] = B[2];
assign N[21] = B[2];
assign N[22] = B[3];
assign N[23] = B[3];
assign N[24] = B[4];
assign N[25] = B[4];
assign N[26] = B[5];
assign N[27] = B[5];
assign N[28] = B[6];
assign N[29] = B[6];
assign N[30] = B[7];
assign N[31] = B[7];
PDKGENOR2X1 n42(.A(N[28]), .B(N[12]), .Y(N[42]));
assign N[43] = N[42];
PDKGENOR2X1 n44(.A(N[28]), .B(N[12]), .Y(N[44]));
PDKGENAND2X1 n46(.A(N[26]), .B(N[10]), .Y(N[46]));
PDKGENNOR3X1 n48(.A(N[24]), .B(N[8]), .C(N[6]), .Y(N[48]));
assign N[49] = N[48];
PDKGENAND2X1 n68(.A(N[8]), .B(N[24]), .Y(N[68]));
assign N[69] = N[68];
PDKGENBUFX2 n70(.A(N[69]), .Y(N[70]));
PDKGENHAX1 n72(.A(N[24]), .B(N[8]), .YS(N[72]), .YC(N[73]));
PDKGENHAX1 n78(.A(N[10]), .B(N[26]), .YS(N[78]), .YC(N[79]));
PDKGENBUFX2 n80(.A(N[79]), .Y(N[80]));
assign N[81] = N[80];
PDKGENHAX1 n86(.A(N[12]), .B(N[28]), .YS(N[86]), .YC(N[87]));
PDKGENHAX1 n96(.A(N[14]), .B(N[30]), .YS(N[96]), .YC(N[97]));
PDKGENBUFX2 n128(.A(N[44]), .Y(N[128]));
assign N[129] = N[128];
PDKGENOR2X1 n134(.A(N[26]), .B(N[10]), .Y(N[134]));
assign N[135] = N[134];
PDKGENBUFX2 n136(.A(N[135]), .Y(N[136]));
PDKGENBUFX2 n142(.A(N[87]), .Y(N[142]));
assign N[143] = N[142];
PDKGENBUFX2 n152(.A(N[70]), .Y(N[152]));
PDKGENBUFX2 n160(.A(N[96]), .Y(N[160]));
PDKGENAND2X1 n162(.A(N[43]), .B(N[46]), .Y(N[162]));
PDKGENBUFX2 n164(.A(N[160]), .Y(N[164]));
assign N[165] = N[164];
PDKGENBUFX2 n170(.A(N[129]), .Y(N[170]));
PDKGENINVX1 n176(.A(N[49]), .Y(N[176]));
assign N[177] = N[176];
PDKGENOR2X1 n180(.A(N[143]), .B(N[162]), .Y(N[180]));
PDKGENBUFX2 n206(.A(N[136]), .Y(N[206]));
assign N[207] = N[206];
PDKGENAND2X1 n226(.A(N[207]), .B(N[152]), .Y(N[226]));
PDKGENOR2X1 n244(.A(N[81]), .B(N[226]), .Y(N[244]));
assign N[245] = N[244];
PDKGENAND2X1 n254(.A(N[170]), .B(N[226]), .Y(N[254]));
assign N[255] = N[254];
PDKGENOR2X1 n272(.A(N[180]), .B(N[255]), .Y(N[272]));
PDKGENOR2X1 n344(.A(N[48]), .B(N[72]), .Y(N[344]));
assign N[345] = N[344];
PDKGENBUFX2 n348(.A(N[272]), .Y(N[348]));
PDKGENBUFX2 n376(.A(N[165]), .Y(N[376]));
assign N[377] = N[376];
PDKGENHAX1 n394(.A(N[78]), .B(N[73]), .YS(N[394]), .YC(N[395]));
PDKGENHAX1 n404(.A(N[86]), .B(N[245]), .YS(N[404]), .YC(N[405]));
PDKGENHAX1 n412(.A(N[377]), .B(N[348]), .YS(N[412]), .YC(N[413]));
PDKGENOR2X1 n422(.A(N[97]), .B(N[413]), .Y(N[422]));
assign O[0] = N[4];
assign O[1] = N[345];
assign O[2] = N[344];
assign O[3] = N[22];
assign O[4] = N[177];
assign O[5] = N[394];
assign O[6] = N[404];
assign O[7] = N[412];
assign O[8] = N[422];
endmodule
/* mod */
module PDKGENHAX1( input A, input B, output YS, output YC );
assign YS = A ^ B;
assign YC = A & B;
endmodule
/* mod */
module PDKGENOR2X1(input A, input B, output Y );
assign Y = A | B;
endmodule
/* mod */
module PDKGENAND2X1(input A, input B, output Y );
assign Y = A & B;
endmodule
/* mod */
module PDKGENINVX1(input A, output Y );
assign Y = ~A;
endmodule
/* mod */
module PDKGENNOR3X1(input A, input B, input C, output Y );
assign Y = ~((A | B) | C);
endmodule
/* mod */
module PDKGENBUFX2(input A, output Y );
assign Y = A;
endmodule