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_107.v
More file actions
143 lines (138 loc) · 4.55 KB
/
add8_107.v
File metadata and controls
143 lines (138 loc) · 4.55 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
142
143
// Library = EvoApprox8b
// Circuit = add8_107
// Area (180) = 1956
// Delay (180) = 1.200
// Power (180) = 655.80
// Area (45) = 131
// Delay (45) = 0.510
// Power (45) = 52.33
// Nodes = 42
// HD = 65408
// MAE = 0.56250
// MSE = 0.62500
// MRE = 0.29 %
// WCE = 2
// WCRE = 100 %
// EP = 53.1 %
module add8_107(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];
PDKGENNAND3X1 n32(.A(N[14]), .B(N[26]), .C(N[12]), .Y(N[32]));
PDKGENOR2X1 n38(.A(N[22]), .B(N[6]), .Y(N[38]));
assign N[39] = N[38];
PDKGENHAX1 n40(.A(N[2]), .B(N[18]), .YS(N[40]), .YC(N[41]));
PDKGENOR2X1 n46(.A(N[24]), .B(N[8]), .Y(N[46]));
PDKGENHAX1 n50(.A(N[4]), .B(N[20]), .YS(N[50]), .YC(N[51]));
PDKGENBUFX2 n56(.A(N[50]), .Y(N[56]));
assign N[57] = N[56];
PDKGENHAX1 n58(.A(N[6]), .B(N[22]), .YS(N[58]), .YC(N[59]));
PDKGENHAX1 n68(.A(N[8]), .B(N[24]), .YS(N[68]), .YC(N[69]));
PDKGENHAX1 n78(.A(N[10]), .B(N[26]), .YS(N[78]), .YC(N[79]));
PDKGENHAX1 n86(.A(N[12]), .B(N[28]), .YS(N[86]), .YC(N[87]));
PDKGENBUFX2 n90(.A(N[78]), .Y(N[90]));
assign N[91] = N[90];
PDKGENHAX1 n96(.A(N[14]), .B(N[30]), .YS(N[96]), .YC(N[97]));
PDKGENAND2X1 n106(.A(N[50]), .B(N[41]), .Y(N[106]));
assign N[107] = N[106];
PDKGENOR2X1 n124(.A(N[51]), .B(N[107]), .Y(N[124]));
PDKGENAND2X1 n134(.A(N[46]), .B(N[59]), .Y(N[134]));
PDKGENAND2X1 n142(.A(N[68]), .B(N[39]), .Y(N[142]));
assign N[143] = N[142];
PDKGENBUFX2 n150(.A(N[124]), .Y(N[150]));
PDKGENOR2X1 n152(.A(N[69]), .B(N[134]), .Y(N[152]));
PDKGENAND2X1 n162(.A(N[86]), .B(N[79]), .Y(N[162]));
PDKGENAND2X1 n174(.A(N[86]), .B(N[91]), .Y(N[174]));
assign N[175] = N[174];
PDKGENOR2X1 n180(.A(N[87]), .B(N[162]), .Y(N[180]));
PDKGENBUFX2 n198(.A(N[150]), .Y(N[198]));
assign N[199] = N[198];
PDKGENAND2X1 n208(.A(N[143]), .B(N[150]), .Y(N[208]));
PDKGENBUFX2 n214(.A(N[152]), .Y(N[214]));
PDKGENHAX1 n224(.A(N[24]), .B(N[8]), .YS(N[224]), .YC(N[225]));
PDKGENOR2X1 n226(.A(N[214]), .B(N[208]), .Y(N[226]));
assign N[227] = N[226];
PDKGENBUFX2 n244(.A(N[175]), .Y(N[244]));
PDKGENBUFX2 n272(.A(N[227]), .Y(N[272]));
assign N[273] = N[272];
PDKGENAND2X1 n282(.A(N[244]), .B(N[273]), .Y(N[282]));
PDKGENOR2X1 n292(.A(N[180]), .B(N[282]), .Y(N[292]));
assign N[293] = N[292];
PDKGENBUFX2 n310(.A(N[41]), .Y(N[310]));
PDKGENAND2X1 n320(.A(N[58]), .B(N[199]), .Y(N[320]));
assign N[321] = N[320];
PDKGENOR2X1 n328(.A(N[59]), .B(N[321]), .Y(N[328]));
PDKGENAND2X1 n338(.A(N[91]), .B(N[272]), .Y(N[338]));
PDKGENOR2X1 n348(.A(N[79]), .B(N[338]), .Y(N[348]));
assign N[349] = N[348];
PDKGENHAX1 n366(.A(N[57]), .B(N[310]), .YS(N[366]), .YC(N[367]));
PDKGENHAX1 n376(.A(N[58]), .B(N[198]), .YS(N[376]), .YC(N[377]));
PDKGENHAX1 n384(.A(N[224]), .B(N[328]), .YS(N[384]), .YC(N[385]));
PDKGENHAX1 n394(.A(N[91]), .B(N[272]), .YS(N[394]), .YC(N[395]));
PDKGENHAX1 n404(.A(N[86]), .B(N[349]), .YS(N[404]), .YC(N[405]));
PDKGENHAX1 n412(.A(N[96]), .B(N[293]), .YS(N[412]), .YC(N[413]));
PDKGENOR2X1 n422(.A(N[97]), .B(N[413]), .Y(N[422]));
assign O[0] = N[32];
assign O[1] = N[40];
assign O[2] = N[366];
assign O[3] = N[376];
assign O[4] = N[384];
assign O[5] = N[394];
assign O[6] = N[404];
assign O[7] = N[412];
assign O[8] = N[422];
endmodule
/* mod */
module PDKGENAND2X1(input A, input B, output Y );
assign Y = A & B;
endmodule
/* mod */
module PDKGENOR2X1(input A, input B, output Y );
assign Y = A | B;
endmodule
/* mod */
module PDKGENHAX1( input A, input B, output YS, output YC );
assign YS = A ^ B;
assign YC = A & B;
endmodule
/* mod */
module PDKGENNAND3X1(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