phanerozoic commited on
Commit
cb69dfe
·
verified ·
1 Parent(s): 864ba61

Stage 5: Yosys synthesis (3,220 gates total for Stage 0 classifier)

Browse files
stage_5/README.md CHANGED
@@ -1,5 +1,44 @@
1
  # Stage 5: Circuit-Level Synthesis
2
 
3
- Reserved. See repo root README for plan.
4
 
5
- Scope: synthesize the entire fixed-weight pipeline to gates and dead-code eliminate everything that does not reach the classifier output.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # Stage 5: Circuit-Level Synthesis
2
 
3
+ The Stage 0 classifier synthesized to gates.
4
 
5
+ ## Input
6
+
7
+ `person_classifier_1p.v` describes the Stage 0 decision as a purely combinational Verilog module. It takes 40 signed INT8 inputs (the already-selected, already-layernormed, already-max-pooled feature values at the 40 classifier dims), computes `sum(positive dims) - sum(negative dims)`, and compares the result against a signed 16-bit threshold. One output bit: `person_present`.
8
+
9
+ No multipliers, no sequential logic, no memory.
10
+
11
+ ## Synthesis
12
+
13
+ Run with Yosys (OSS CAD Suite, `yosys.exe -s synth.ys`). Pass sequence: `hierarchy`, `proc`, `opt`, `flatten`, `opt_clean`, `synth -top`, `abc -g AND,XOR`, `opt_clean`, `stat`. Target gate library restricted to `{AND, XOR}` at the ABC stage so the reported count is directly in universal 2-input gates rather than a vendor cell library.
14
+
15
+ ## Result
16
+
17
+ ```
18
+ Total cells : 3,220
19
+ AND : 1,172
20
+ NOT : 1,318
21
+ XOR : 730
22
+ Wires : 3,261
23
+ Public ports : 42 (40 data + 1 threshold + 1 output)
24
+ Port bits : 337
25
+ ```
26
+
27
+ 3,220 universal gates for a 40-input INT8 combinational person-scene detector.
28
+
29
+ ## Scale comparison
30
+
31
+ From the prior cofiber-detection repo's synthesis scaling (`circuit/README.md` there): a 768-input INT8 multiply-accumulate extrapolates to ~65,000 gates per MAC. A full 6-MAC 4,614-parameter person detector was estimated at ~391,000 gates. Our 1-parameter classifier is roughly **120× smaller** than that reference, because it replaces the 768×{cls, reg, ctr} MAC array with 40 selected additions + one comparator.
32
+
33
+ ## What this stage ships
34
+
35
+ - `person_classifier_1p.v` — the classifier as synthesizable Verilog
36
+ - `synth.ys` — Yosys script
37
+ - `synthesized.v` — post-synthesis gate-level netlist
38
+ - `synth.log` — full synthesis log with statistics
39
+
40
+ ## Deployment implication
41
+
42
+ 3,220 gates at a modern process (e.g., 22 nm FD-SOI for microcontroller-class ASICs) sits on the order of 0.01–0.03 mm². Sub-millisecond combinational latency. Sub-milliwatt switching power for single-frame evaluation. Fits inside the ISP block of a camera sensor or as a macro next to an always-on wake circuit.
43
+
44
+ The classifier's inputs (40 selected INT8 feature values) still require the backbone to produce them. Everything upstream of this module — EUPE-ViT-B or a specialist student (Stage 4) — must also be synthesizable or runnable in some other primitive before the full camera-to-bit pipeline is gate-level. That upstream cost is where the other stages sit; this stage closes the loop at the decision end.
stage_5/person_classifier_1p.v ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Stage 5: Stage 0 1-parameter person classifier synthesized to hardware.
2
+ //
3
+ // Inputs: 40 selected INT8 features from the EUPE-ViT-B backbone (pre-selected,
4
+ // post-LN, post-max-pool, via the dim indices in stage_0/classifier.json).
5
+ // Output: one bit indicating "person present in scene".
6
+ //
7
+ // Arithmetic: 20 signed additions of pos-dim features, 20 signed subtractions of
8
+ // neg-dim features, one 16-bit comparator against a scalar threshold. No
9
+ // multiplies anywhere. Fully combinational.
10
+
11
+ module person_classifier_1p (
12
+ input signed [7:0] f00, f01, f02, f03, f04, f05, f06, f07, f08, f09,
13
+ input signed [7:0] f10, f11, f12, f13, f14, f15, f16, f17, f18, f19,
14
+ input signed [7:0] f20, f21, f22, f23, f24, f25, f26, f27, f28, f29,
15
+ input signed [7:0] f30, f31, f32, f33, f34, f35, f36, f37, f38, f39,
16
+ input signed [15:0] threshold,
17
+ output person_present
18
+ );
19
+ // f00..f19 are the person-positive dims (layernormed then max-pooled).
20
+ // f20..f39 are the person-negative dims.
21
+ // Score = sum(f00..f19) - sum(f20..f39); worst-case 20 * 127 = 2540 fits in 16 bits.
22
+
23
+ wire signed [15:0] pos_sum =
24
+ {{8{f00[7]}}, f00} + {{8{f01[7]}}, f01} + {{8{f02[7]}}, f02} + {{8{f03[7]}}, f03} +
25
+ {{8{f04[7]}}, f04} + {{8{f05[7]}}, f05} + {{8{f06[7]}}, f06} + {{8{f07[7]}}, f07} +
26
+ {{8{f08[7]}}, f08} + {{8{f09[7]}}, f09} + {{8{f10[7]}}, f10} + {{8{f11[7]}}, f11} +
27
+ {{8{f12[7]}}, f12} + {{8{f13[7]}}, f13} + {{8{f14[7]}}, f14} + {{8{f15[7]}}, f15} +
28
+ {{8{f16[7]}}, f16} + {{8{f17[7]}}, f17} + {{8{f18[7]}}, f18} + {{8{f19[7]}}, f19};
29
+
30
+ wire signed [15:0] neg_sum =
31
+ {{8{f20[7]}}, f20} + {{8{f21[7]}}, f21} + {{8{f22[7]}}, f22} + {{8{f23[7]}}, f23} +
32
+ {{8{f24[7]}}, f24} + {{8{f25[7]}}, f25} + {{8{f26[7]}}, f26} + {{8{f27[7]}}, f27} +
33
+ {{8{f28[7]}}, f28} + {{8{f29[7]}}, f29} + {{8{f30[7]}}, f30} + {{8{f31[7]}}, f31} +
34
+ {{8{f32[7]}}, f32} + {{8{f33[7]}}, f33} + {{8{f34[7]}}, f34} + {{8{f35[7]}}, f35} +
35
+ {{8{f36[7]}}, f36} + {{8{f37[7]}}, f37} + {{8{f38[7]}}, f38} + {{8{f39[7]}}, f39};
36
+
37
+ wire signed [15:0] score = pos_sum - neg_sum;
38
+ assign person_present = (score > threshold);
39
+ endmodule
stage_5/synth.log ADDED
@@ -0,0 +1,912 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 
2
+ /----------------------------------------------------------------------------\
3
+ | yosys -- Yosys Open SYnthesis Suite |
4
+ | Copyright (C) 2012 - 2026 Claire Xenia Wolf <claire@yosyshq.com> |
5
+ | Distributed under an ISC-like license, type "license" to see terms |
6
+ \----------------------------------------------------------------------------/
7
+ Yosys 0.63+222 (git sha1 a4b6a8c58-dirty, x86_64-w64-mingw32-g++ 13.2.1 -O3)
8
+
9
+ -- Executing script file `synth.ys' --
10
+
11
+ 1. Executing Verilog-2005 frontend: person_classifier_1p.v
12
+ Parsing Verilog input from `person_classifier_1p.v' to AST representation.
13
+ Generating RTLIL representation for module `\person_classifier_1p'.
14
+ Successfully finished Verilog frontend.
15
+
16
+ 2. Executing HIERARCHY pass (managing design hierarchy).
17
+
18
+ 2.1. Analyzing design hierarchy..
19
+ Top module: \person_classifier_1p
20
+
21
+ 2.2. Analyzing design hierarchy..
22
+ Top module: \person_classifier_1p
23
+ Removed 0 unused modules.
24
+
25
+ 3. Executing PROC pass (convert processes to netlists).
26
+
27
+ 3.1. Executing PROC_CLEAN pass (remove empty switches from decision trees).
28
+ Cleaned up 0 empty switches.
29
+
30
+ 3.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees).
31
+ Removed a total of 0 dead cases.
32
+
33
+ 3.3. Executing PROC_PRUNE pass (remove redundant assignments in processes).
34
+ Removed 0 redundant assignments.
35
+ Promoted 0 assignments to connections.
36
+
37
+ 3.4. Executing PROC_INIT pass (extract init attributes).
38
+
39
+ 3.5. Executing PROC_ARST pass (detect async resets in processes).
40
+
41
+ 3.6. Executing PROC_ROM pass (convert switches to ROMs).
42
+ Converted 0 switches.
43
+
44
+ 3.7. Executing PROC_MUX pass (convert decision trees to multiplexers).
45
+
46
+ 3.8. Executing PROC_DLATCH pass (convert process syncs to latches).
47
+
48
+ 3.9. Executing PROC_DFF pass (convert process syncs to FFs).
49
+
50
+ 3.10. Executing PROC_MEMWR pass (convert process memory writes to cells).
51
+
52
+ 3.11. Executing PROC_CLEAN pass (remove empty switches from decision trees).
53
+ Cleaned up 0 empty switches.
54
+
55
+ 3.12. Executing OPT_EXPR pass (perform const folding).
56
+ Optimizing module person_classifier_1p.
57
+
58
+ 4. Executing OPT pass (performing simple optimizations).
59
+
60
+ 4.1. Executing OPT_EXPR pass (perform const folding).
61
+ Optimizing module person_classifier_1p.
62
+
63
+ 4.2. Executing OPT_MERGE pass (detect identical cells).
64
+ Finding identical cells in module `\person_classifier_1p'.
65
+ Computing hashes of 40 cells of `\person_classifier_1p'.
66
+ Finding duplicate cells in `\person_classifier_1p'.
67
+ Removed a total of 0 cells.
68
+
69
+ 4.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
70
+ Running muxtree optimizer on module \person_classifier_1p..
71
+ Creating internal representation of mux trees.
72
+ No muxes found in this module.
73
+ Removed 0 multiplexer ports.
74
+
75
+ 4.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
76
+ Optimizing cells in module \person_classifier_1p.
77
+ Performed a total of 0 changes.
78
+
79
+ 4.5. Executing OPT_MERGE pass (detect identical cells).
80
+ Finding identical cells in module `\person_classifier_1p'.
81
+ Computing hashes of 40 cells of `\person_classifier_1p'.
82
+ Finding duplicate cells in `\person_classifier_1p'.
83
+ Removed a total of 0 cells.
84
+
85
+ 4.6. Executing OPT_DFF pass (perform DFF optimizations).
86
+
87
+ 4.7. Executing OPT_CLEAN pass (remove unused cells and wires).
88
+ Finding unused cells or wires in module \person_classifier_1p..
89
+ Removed 0 unused cells and 4 unused wires.
90
+ <suppressed ~1 debug messages>
91
+
92
+ 4.8. Executing OPT_EXPR pass (perform const folding).
93
+ Optimizing module person_classifier_1p.
94
+
95
+ 4.9. Rerunning OPT passes. (Maybe there is more to do..)
96
+
97
+ 4.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
98
+ Running muxtree optimizer on module \person_classifier_1p..
99
+ Creating internal representation of mux trees.
100
+ No muxes found in this module.
101
+ Removed 0 multiplexer ports.
102
+
103
+ 4.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
104
+ Optimizing cells in module \person_classifier_1p.
105
+ Performed a total of 0 changes.
106
+
107
+ 4.12. Executing OPT_MERGE pass (detect identical cells).
108
+ Finding identical cells in module `\person_classifier_1p'.
109
+ Computing hashes of 40 cells of `\person_classifier_1p'.
110
+ Finding duplicate cells in `\person_classifier_1p'.
111
+ Removed a total of 0 cells.
112
+
113
+ 4.13. Executing OPT_DFF pass (perform DFF optimizations).
114
+
115
+ 4.14. Executing OPT_CLEAN pass (remove unused cells and wires).
116
+ Finding unused cells or wires in module \person_classifier_1p..
117
+
118
+ 4.15. Executing OPT_EXPR pass (perform const folding).
119
+ Optimizing module person_classifier_1p.
120
+
121
+ 4.16. Finished fast OPT passes. (There is nothing left to do.)
122
+
123
+ 5. Executing FLATTEN pass (flatten design).
124
+
125
+ 6. Executing OPT_CLEAN pass (remove unused cells and wires).
126
+ Finding unused cells or wires in module \person_classifier_1p..
127
+
128
+ 7. Executing SYNTH pass.
129
+
130
+ 7.1. Executing HIERARCHY pass (managing design hierarchy).
131
+
132
+ 7.1.1. Analyzing design hierarchy..
133
+ Top module: \person_classifier_1p
134
+
135
+ 7.1.2. Analyzing design hierarchy..
136
+ Top module: \person_classifier_1p
137
+ Removed 0 unused modules.
138
+
139
+ 7.2. Executing PROC pass (convert processes to netlists).
140
+
141
+ 7.2.1. Executing PROC_CLEAN pass (remove empty switches from decision trees).
142
+ Cleaned up 0 empty switches.
143
+
144
+ 7.2.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees).
145
+ Removed a total of 0 dead cases.
146
+
147
+ 7.2.3. Executing PROC_PRUNE pass (remove redundant assignments in processes).
148
+ Removed 0 redundant assignments.
149
+ Promoted 0 assignments to connections.
150
+
151
+ 7.2.4. Executing PROC_INIT pass (extract init attributes).
152
+
153
+ 7.2.5. Executing PROC_ARST pass (detect async resets in processes).
154
+
155
+ 7.2.6. Executing PROC_ROM pass (convert switches to ROMs).
156
+ Converted 0 switches.
157
+
158
+ 7.2.7. Executing PROC_MUX pass (convert decision trees to multiplexers).
159
+
160
+ 7.2.8. Executing PROC_DLATCH pass (convert process syncs to latches).
161
+
162
+ 7.2.9. Executing PROC_DFF pass (convert process syncs to FFs).
163
+
164
+ 7.2.10. Executing PROC_MEMWR pass (convert process memory writes to cells).
165
+
166
+ 7.2.11. Executing PROC_CLEAN pass (remove empty switches from decision trees).
167
+ Cleaned up 0 empty switches.
168
+
169
+ 7.2.12. Executing OPT_EXPR pass (perform const folding).
170
+ Optimizing module person_classifier_1p.
171
+
172
+ 7.3. Executing OPT_EXPR pass (perform const folding).
173
+ Optimizing module person_classifier_1p.
174
+
175
+ 7.4. Executing OPT_CLEAN pass (remove unused cells and wires).
176
+ Finding unused cells or wires in module \person_classifier_1p..
177
+
178
+ 7.5. Executing CHECK pass (checking for obvious problems).
179
+ Checking module person_classifier_1p...
180
+ Found and reported 0 problems.
181
+
182
+ 7.6. Executing OPT pass (performing simple optimizations).
183
+
184
+ 7.6.1. Executing OPT_EXPR pass (perform const folding).
185
+ Optimizing module person_classifier_1p.
186
+
187
+ 7.6.2. Executing OPT_MERGE pass (detect identical cells).
188
+ Finding identical cells in module `\person_classifier_1p'.
189
+ Computing hashes of 40 cells of `\person_classifier_1p'.
190
+ Finding duplicate cells in `\person_classifier_1p'.
191
+ Removed a total of 0 cells.
192
+
193
+ 7.6.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
194
+ Running muxtree optimizer on module \person_classifier_1p..
195
+ Creating internal representation of mux trees.
196
+ No muxes found in this module.
197
+ Removed 0 multiplexer ports.
198
+
199
+ 7.6.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
200
+ Optimizing cells in module \person_classifier_1p.
201
+ Performed a total of 0 changes.
202
+
203
+ 7.6.5. Executing OPT_MERGE pass (detect identical cells).
204
+ Finding identical cells in module `\person_classifier_1p'.
205
+ Computing hashes of 40 cells of `\person_classifier_1p'.
206
+ Finding duplicate cells in `\person_classifier_1p'.
207
+ Removed a total of 0 cells.
208
+
209
+ 7.6.6. Executing OPT_DFF pass (perform DFF optimizations).
210
+
211
+ 7.6.7. Executing OPT_CLEAN pass (remove unused cells and wires).
212
+ Finding unused cells or wires in module \person_classifier_1p..
213
+
214
+ 7.6.8. Executing OPT_EXPR pass (perform const folding).
215
+ Optimizing module person_classifier_1p.
216
+
217
+ 7.6.9. Finished fast OPT passes. (There is nothing left to do.)
218
+
219
+ 7.7. Executing FSM pass (extract and optimize FSM).
220
+
221
+ 7.7.1. Executing FSM_DETECT pass (finding FSMs in design).
222
+
223
+ 7.7.2. Executing FSM_EXTRACT pass (extracting FSM from design).
224
+
225
+ 7.7.3. Executing FSM_OPT pass (simple optimizations of FSMs).
226
+
227
+ 7.7.4. Executing OPT_CLEAN pass (remove unused cells and wires).
228
+ Finding unused cells or wires in module \person_classifier_1p..
229
+
230
+ 7.7.5. Executing FSM_OPT pass (simple optimizations of FSMs).
231
+
232
+ 7.7.6. Executing FSM_RECODE pass (re-assigning FSM state encoding).
233
+
234
+ 7.7.7. Executing FSM_INFO pass (dumping all available information on FSM cells).
235
+
236
+ 7.7.8. Executing FSM_MAP pass (mapping FSMs to basic logic).
237
+
238
+ 7.8. Executing OPT pass (performing simple optimizations).
239
+
240
+ 7.8.1. Executing OPT_EXPR pass (perform const folding).
241
+ Optimizing module person_classifier_1p.
242
+
243
+ 7.8.2. Executing OPT_MERGE pass (detect identical cells).
244
+ Finding identical cells in module `\person_classifier_1p'.
245
+ Computing hashes of 40 cells of `\person_classifier_1p'.
246
+ Finding duplicate cells in `\person_classifier_1p'.
247
+ Removed a total of 0 cells.
248
+
249
+ 7.8.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
250
+ Running muxtree optimizer on module \person_classifier_1p..
251
+ Creating internal representation of mux trees.
252
+ No muxes found in this module.
253
+ Removed 0 multiplexer ports.
254
+
255
+ 7.8.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
256
+ Optimizing cells in module \person_classifier_1p.
257
+ Performed a total of 0 changes.
258
+
259
+ 7.8.5. Executing OPT_MERGE pass (detect identical cells).
260
+ Finding identical cells in module `\person_classifier_1p'.
261
+ Computing hashes of 40 cells of `\person_classifier_1p'.
262
+ Finding duplicate cells in `\person_classifier_1p'.
263
+ Removed a total of 0 cells.
264
+
265
+ 7.8.6. Executing OPT_DFF pass (perform DFF optimizations).
266
+
267
+ 7.8.7. Executing OPT_CLEAN pass (remove unused cells and wires).
268
+ Finding unused cells or wires in module \person_classifier_1p..
269
+
270
+ 7.8.8. Executing OPT_EXPR pass (perform const folding).
271
+ Optimizing module person_classifier_1p.
272
+
273
+ 7.8.9. Finished fast OPT passes. (There is nothing left to do.)
274
+
275
+ 7.9. Executing WREDUCE pass (reducing word size of cells).
276
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$1 ($add) from unsigned to signed.
277
+ Removed top 8 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$1 ($add).
278
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$1 ($add).
279
+ Removed top 7 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:24$1 ($add).
280
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$2 ($add) from unsigned to signed.
281
+ Removed top 7 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$2 ($add).
282
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$2 ($add).
283
+ Removed top 6 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:24$2 ($add).
284
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$3 ($add) from unsigned to signed.
285
+ Removed top 6 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$3 ($add).
286
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$3 ($add).
287
+ Removed top 5 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:24$3 ($add).
288
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$4 ($add) from unsigned to signed.
289
+ Removed top 5 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$4 ($add).
290
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$4 ($add).
291
+ Removed top 4 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:24$4 ($add).
292
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$5 ($add) from unsigned to signed.
293
+ Removed top 4 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$5 ($add).
294
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$5 ($add).
295
+ Removed top 3 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:24$5 ($add).
296
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$6 ($add) from unsigned to signed.
297
+ Removed top 3 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$6 ($add).
298
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$6 ($add).
299
+ Removed top 2 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:24$6 ($add).
300
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$7 ($add) from unsigned to signed.
301
+ Removed top 2 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$7 ($add).
302
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$7 ($add).
303
+ Removed top 1 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:24$7 ($add).
304
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:24$8 ($add) from unsigned to signed.
305
+ Removed top 1 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:24$8 ($add).
306
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:24$8 ($add).
307
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$20 ($add) from unsigned to signed.
308
+ Removed top 8 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$20 ($add).
309
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$20 ($add).
310
+ Removed top 7 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:31$20 ($add).
311
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$21 ($add) from unsigned to signed.
312
+ Removed top 7 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$21 ($add).
313
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$21 ($add).
314
+ Removed top 6 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:31$21 ($add).
315
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$22 ($add) from unsigned to signed.
316
+ Removed top 6 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$22 ($add).
317
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$22 ($add).
318
+ Removed top 5 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:31$22 ($add).
319
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$23 ($add) from unsigned to signed.
320
+ Removed top 5 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$23 ($add).
321
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$23 ($add).
322
+ Removed top 4 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:31$23 ($add).
323
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$24 ($add) from unsigned to signed.
324
+ Removed top 4 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$24 ($add).
325
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$24 ($add).
326
+ Removed top 3 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:31$24 ($add).
327
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$25 ($add) from unsigned to signed.
328
+ Removed top 3 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$25 ($add).
329
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$25 ($add).
330
+ Removed top 2 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:31$25 ($add).
331
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$26 ($add) from unsigned to signed.
332
+ Removed top 2 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$26 ($add).
333
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$26 ($add).
334
+ Removed top 1 bits (of 16) from port Y of cell person_classifier_1p.$add$person_classifier_1p.v:31$26 ($add).
335
+ Converting cell person_classifier_1p.$add$person_classifier_1p.v:31$27 ($add) from unsigned to signed.
336
+ Removed top 1 bits (of 16) from port A of cell person_classifier_1p.$add$person_classifier_1p.v:31$27 ($add).
337
+ Removed top 8 bits (of 16) from port B of cell person_classifier_1p.$add$person_classifier_1p.v:31$27 ($add).
338
+
339
+ 7.10. Executing PEEPOPT pass (run peephole optimizers).
340
+
341
+ 7.11. Executing OPT_CLEAN pass (remove unused cells and wires).
342
+ Finding unused cells or wires in module \person_classifier_1p..
343
+
344
+ 7.12. Executing ALUMACC pass (create $alu and $macc cells).
345
+ Extracting $alu and $macc cells in module person_classifier_1p:
346
+ creating $macc model for $sub$person_classifier_1p.v:37$39 ($sub).
347
+ creating $macc model for $add$person_classifier_1p.v:31$38 ($add).
348
+ creating $macc model for $add$person_classifier_1p.v:31$37 ($add).
349
+ creating $macc model for $add$person_classifier_1p.v:31$36 ($add).
350
+ creating $macc model for $add$person_classifier_1p.v:31$35 ($add).
351
+ creating $macc model for $add$person_classifier_1p.v:31$34 ($add).
352
+ creating $macc model for $add$person_classifier_1p.v:31$33 ($add).
353
+ creating $macc model for $add$person_classifier_1p.v:31$32 ($add).
354
+ creating $macc model for $add$person_classifier_1p.v:31$31 ($add).
355
+ creating $macc model for $add$person_classifier_1p.v:31$30 ($add).
356
+ creating $macc model for $add$person_classifier_1p.v:31$29 ($add).
357
+ creating $macc model for $add$person_classifier_1p.v:31$28 ($add).
358
+ creating $macc model for $add$person_classifier_1p.v:31$27 ($add).
359
+ creating $macc model for $add$person_classifier_1p.v:31$26 ($add).
360
+ creating $macc model for $add$person_classifier_1p.v:31$25 ($add).
361
+ creating $macc model for $add$person_classifier_1p.v:31$24 ($add).
362
+ creating $macc model for $add$person_classifier_1p.v:31$23 ($add).
363
+ creating $macc model for $add$person_classifier_1p.v:31$22 ($add).
364
+ creating $macc model for $add$person_classifier_1p.v:31$21 ($add).
365
+ creating $macc model for $add$person_classifier_1p.v:31$20 ($add).
366
+ creating $macc model for $add$person_classifier_1p.v:24$19 ($add).
367
+ creating $macc model for $add$person_classifier_1p.v:24$18 ($add).
368
+ creating $macc model for $add$person_classifier_1p.v:24$17 ($add).
369
+ creating $macc model for $add$person_classifier_1p.v:24$16 ($add).
370
+ creating $macc model for $add$person_classifier_1p.v:24$15 ($add).
371
+ creating $macc model for $add$person_classifier_1p.v:24$14 ($add).
372
+ creating $macc model for $add$person_classifier_1p.v:24$13 ($add).
373
+ creating $macc model for $add$person_classifier_1p.v:24$12 ($add).
374
+ creating $macc model for $add$person_classifier_1p.v:24$11 ($add).
375
+ creating $macc model for $add$person_classifier_1p.v:24$10 ($add).
376
+ creating $macc model for $add$person_classifier_1p.v:24$9 ($add).
377
+ creating $macc model for $add$person_classifier_1p.v:24$8 ($add).
378
+ creating $macc model for $add$person_classifier_1p.v:24$7 ($add).
379
+ creating $macc model for $add$person_classifier_1p.v:24$6 ($add).
380
+ creating $macc model for $add$person_classifier_1p.v:24$5 ($add).
381
+ creating $macc model for $add$person_classifier_1p.v:24$4 ($add).
382
+ creating $macc model for $add$person_classifier_1p.v:24$3 ($add).
383
+ creating $macc model for $add$person_classifier_1p.v:24$2 ($add).
384
+ creating $macc model for $add$person_classifier_1p.v:24$1 ($add).
385
+ merging $macc model for $add$person_classifier_1p.v:24$1 into $add$person_classifier_1p.v:24$2.
386
+ merging $macc model for $add$person_classifier_1p.v:24$2 into $add$person_classifier_1p.v:24$3.
387
+ merging $macc model for $add$person_classifier_1p.v:24$3 into $add$person_classifier_1p.v:24$4.
388
+ merging $macc model for $add$person_classifier_1p.v:24$4 into $add$person_classifier_1p.v:24$5.
389
+ merging $macc model for $add$person_classifier_1p.v:24$5 into $add$person_classifier_1p.v:24$6.
390
+ merging $macc model for $add$person_classifier_1p.v:24$6 into $add$person_classifier_1p.v:24$7.
391
+ merging $macc model for $add$person_classifier_1p.v:24$7 into $add$person_classifier_1p.v:24$8.
392
+ merging $macc model for $add$person_classifier_1p.v:24$8 into $add$person_classifier_1p.v:24$9.
393
+ merging $macc model for $add$person_classifier_1p.v:24$9 into $add$person_classifier_1p.v:24$10.
394
+ merging $macc model for $add$person_classifier_1p.v:24$10 into $add$person_classifier_1p.v:24$11.
395
+ merging $macc model for $add$person_classifier_1p.v:24$11 into $add$person_classifier_1p.v:24$12.
396
+ merging $macc model for $add$person_classifier_1p.v:24$12 into $add$person_classifier_1p.v:24$13.
397
+ merging $macc model for $add$person_classifier_1p.v:24$13 into $add$person_classifier_1p.v:24$14.
398
+ merging $macc model for $add$person_classifier_1p.v:24$14 into $add$person_classifier_1p.v:24$15.
399
+ merging $macc model for $add$person_classifier_1p.v:24$15 into $add$person_classifier_1p.v:24$16.
400
+ merging $macc model for $add$person_classifier_1p.v:24$16 into $add$person_classifier_1p.v:24$17.
401
+ merging $macc model for $add$person_classifier_1p.v:24$17 into $add$person_classifier_1p.v:24$18.
402
+ merging $macc model for $add$person_classifier_1p.v:24$18 into $add$person_classifier_1p.v:24$19.
403
+ merging $macc model for $add$person_classifier_1p.v:31$20 into $add$person_classifier_1p.v:31$21.
404
+ merging $macc model for $add$person_classifier_1p.v:31$21 into $add$person_classifier_1p.v:31$22.
405
+ merging $macc model for $add$person_classifier_1p.v:31$22 into $add$person_classifier_1p.v:31$23.
406
+ merging $macc model for $add$person_classifier_1p.v:31$23 into $add$person_classifier_1p.v:31$24.
407
+ merging $macc model for $add$person_classifier_1p.v:31$24 into $add$person_classifier_1p.v:31$25.
408
+ merging $macc model for $add$person_classifier_1p.v:31$25 into $add$person_classifier_1p.v:31$26.
409
+ merging $macc model for $add$person_classifier_1p.v:31$26 into $add$person_classifier_1p.v:31$27.
410
+ merging $macc model for $add$person_classifier_1p.v:31$27 into $add$person_classifier_1p.v:31$28.
411
+ merging $macc model for $add$person_classifier_1p.v:31$28 into $add$person_classifier_1p.v:31$29.
412
+ merging $macc model for $add$person_classifier_1p.v:31$29 into $add$person_classifier_1p.v:31$30.
413
+ merging $macc model for $add$person_classifier_1p.v:31$30 into $add$person_classifier_1p.v:31$31.
414
+ merging $macc model for $add$person_classifier_1p.v:31$31 into $add$person_classifier_1p.v:31$32.
415
+ merging $macc model for $add$person_classifier_1p.v:31$32 into $add$person_classifier_1p.v:31$33.
416
+ merging $macc model for $add$person_classifier_1p.v:31$33 into $add$person_classifier_1p.v:31$34.
417
+ merging $macc model for $add$person_classifier_1p.v:31$34 into $add$person_classifier_1p.v:31$35.
418
+ merging $macc model for $add$person_classifier_1p.v:31$35 into $add$person_classifier_1p.v:31$36.
419
+ merging $macc model for $add$person_classifier_1p.v:31$36 into $add$person_classifier_1p.v:31$37.
420
+ merging $macc model for $add$person_classifier_1p.v:31$37 into $add$person_classifier_1p.v:31$38.
421
+ merging $macc model for $add$person_classifier_1p.v:24$19 into $sub$person_classifier_1p.v:37$39.
422
+ merging $macc model for $add$person_classifier_1p.v:31$38 into $sub$person_classifier_1p.v:37$39.
423
+ creating $macc cell for $sub$person_classifier_1p.v:37$39: $auto$alumacc.cc:382:replace_macc$41
424
+ creating $alu model for $gt$person_classifier_1p.v:38$40 ($gt): new $alu
425
+ creating $alu cell for $gt$person_classifier_1p.v:38$40: $auto$alumacc.cc:512:replace_alu$43
426
+ created 1 $alu and 1 $macc cells.
427
+
428
+ 7.13. Executing SHARE pass (SAT-based resource sharing).
429
+
430
+ 7.14. Executing OPT pass (performing simple optimizations).
431
+
432
+ 7.14.1. Executing OPT_EXPR pass (perform const folding).
433
+ Optimizing module person_classifier_1p.
434
+
435
+ 7.14.2. Executing OPT_MERGE pass (detect identical cells).
436
+ Finding identical cells in module `\person_classifier_1p'.
437
+ Computing hashes of 45 cells of `\person_classifier_1p'.
438
+ Finding duplicate cells in `\person_classifier_1p'.
439
+ Removed a total of 0 cells.
440
+
441
+ 7.14.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
442
+ Running muxtree optimizer on module \person_classifier_1p..
443
+ Creating internal representation of mux trees.
444
+ No muxes found in this module.
445
+ Removed 0 multiplexer ports.
446
+
447
+ 7.14.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
448
+ Optimizing cells in module \person_classifier_1p.
449
+ Performed a total of 0 changes.
450
+
451
+ 7.14.5. Executing OPT_MERGE pass (detect identical cells).
452
+ Finding identical cells in module `\person_classifier_1p'.
453
+ Computing hashes of 45 cells of `\person_classifier_1p'.
454
+ Finding duplicate cells in `\person_classifier_1p'.
455
+ Removed a total of 0 cells.
456
+
457
+ 7.14.6. Executing OPT_DFF pass (perform DFF optimizations).
458
+
459
+ 7.14.7. Executing OPT_CLEAN pass (remove unused cells and wires).
460
+ Finding unused cells or wires in module \person_classifier_1p..
461
+ Removed 38 unused cells and 39 unused wires.
462
+ <suppressed ~41 debug messages>
463
+
464
+ 7.14.8. Executing OPT_EXPR pass (perform const folding).
465
+ Optimizing module person_classifier_1p.
466
+
467
+ 7.14.9. Rerunning OPT passes. (Maybe there is more to do..)
468
+
469
+ 7.14.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
470
+ Running muxtree optimizer on module \person_classifier_1p..
471
+ Creating internal representation of mux trees.
472
+ No muxes found in this module.
473
+ Removed 0 multiplexer ports.
474
+
475
+ 7.14.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
476
+ Optimizing cells in module \person_classifier_1p.
477
+ Performed a total of 0 changes.
478
+
479
+ 7.14.12. Executing OPT_MERGE pass (detect identical cells).
480
+ Finding identical cells in module `\person_classifier_1p'.
481
+ Computing hashes of 7 cells of `\person_classifier_1p'.
482
+ Finding duplicate cells in `\person_classifier_1p'.
483
+ Removed a total of 0 cells.
484
+
485
+ 7.14.13. Executing OPT_DFF pass (perform DFF optimizations).
486
+
487
+ 7.14.14. Executing OPT_CLEAN pass (remove unused cells and wires).
488
+ Finding unused cells or wires in module \person_classifier_1p..
489
+
490
+ 7.14.15. Executing OPT_EXPR pass (perform const folding).
491
+ Optimizing module person_classifier_1p.
492
+
493
+ 7.14.16. Finished fast OPT passes. (There is nothing left to do.)
494
+
495
+ 7.15. Executing MEMORY pass.
496
+
497
+ 7.15.1. Executing OPT_MEM pass (optimize memories).
498
+ Performed a total of 0 transformations.
499
+
500
+ 7.15.2. Executing OPT_MEM_PRIORITY pass (removing unnecessary memory write priority relations).
501
+ Performed a total of 0 transformations.
502
+
503
+ 7.15.3. Executing OPT_MEM_FEEDBACK pass (finding memory read-to-write feedback paths).
504
+
505
+ 7.15.4. Executing MEMORY_BMUX2ROM pass (converting muxes to ROMs).
506
+
507
+ 7.15.5. Executing MEMORY_DFF pass (merging $dff cells to $memrd).
508
+
509
+ 7.15.6. Executing OPT_CLEAN pass (remove unused cells and wires).
510
+ Finding unused cells or wires in module \person_classifier_1p..
511
+
512
+ 7.15.7. Executing MEMORY_SHARE pass (consolidating $memrd/$memwr cells).
513
+
514
+ 7.15.8. Executing OPT_MEM_WIDEN pass (optimize memories where all ports are wide).
515
+ Performed a total of 0 transformations.
516
+
517
+ 7.15.9. Executing OPT_CLEAN pass (remove unused cells and wires).
518
+ Finding unused cells or wires in module \person_classifier_1p..
519
+
520
+ 7.15.10. Executing MEMORY_COLLECT pass (generating $mem cells).
521
+
522
+ 7.16. Executing OPT_CLEAN pass (remove unused cells and wires).
523
+ Finding unused cells or wires in module \person_classifier_1p..
524
+
525
+ 7.17. Executing OPT pass (performing simple optimizations).
526
+
527
+ 7.17.1. Executing OPT_EXPR pass (perform const folding).
528
+ Optimizing module person_classifier_1p.
529
+
530
+ 7.17.2. Executing OPT_MERGE pass (detect identical cells).
531
+ Finding identical cells in module `\person_classifier_1p'.
532
+ Computing hashes of 7 cells of `\person_classifier_1p'.
533
+ Finding duplicate cells in `\person_classifier_1p'.
534
+ Removed a total of 0 cells.
535
+
536
+ 7.17.3. Executing OPT_DFF pass (perform DFF optimizations).
537
+
538
+ 7.17.4. Executing OPT_CLEAN pass (remove unused cells and wires).
539
+ Finding unused cells or wires in module \person_classifier_1p..
540
+
541
+ 7.17.5. Finished fast OPT passes.
542
+
543
+ 7.18. Executing MEMORY_MAP pass (converting memories to logic and flip-flops).
544
+
545
+ 7.19. Executing OPT pass (performing simple optimizations).
546
+
547
+ 7.19.1. Executing OPT_EXPR pass (perform const folding).
548
+ Optimizing module person_classifier_1p.
549
+
550
+ 7.19.2. Executing OPT_MERGE pass (detect identical cells).
551
+ Finding identical cells in module `\person_classifier_1p'.
552
+ Computing hashes of 7 cells of `\person_classifier_1p'.
553
+ Finding duplicate cells in `\person_classifier_1p'.
554
+ Removed a total of 0 cells.
555
+
556
+ 7.19.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
557
+ Running muxtree optimizer on module \person_classifier_1p..
558
+ Creating internal representation of mux trees.
559
+ No muxes found in this module.
560
+ Removed 0 multiplexer ports.
561
+
562
+ 7.19.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
563
+ Optimizing cells in module \person_classifier_1p.
564
+ Performed a total of 0 changes.
565
+
566
+ 7.19.5. Executing OPT_MERGE pass (detect identical cells).
567
+ Finding identical cells in module `\person_classifier_1p'.
568
+ Computing hashes of 7 cells of `\person_classifier_1p'.
569
+ Finding duplicate cells in `\person_classifier_1p'.
570
+ Removed a total of 0 cells.
571
+
572
+ 7.19.6. Executing OPT_SHARE pass.
573
+
574
+ 7.19.7. Executing OPT_DFF pass (perform DFF optimizations).
575
+
576
+ 7.19.8. Executing OPT_CLEAN pass (remove unused cells and wires).
577
+ Finding unused cells or wires in module \person_classifier_1p..
578
+
579
+ 7.19.9. Executing OPT_EXPR pass (perform const folding).
580
+ Optimizing module person_classifier_1p.
581
+
582
+ 7.19.10. Finished fast OPT passes. (There is nothing left to do.)
583
+
584
+ 7.20. Executing TECHMAP pass (map to technology primitives).
585
+
586
+ 7.20.1. Executing Verilog-2005 frontend: D:\oss-cad-suite\bin\../share/yosys/techmap.v
587
+ Parsing Verilog input from `D:\oss-cad-suite\bin\../share/yosys/techmap.v' to AST representation.
588
+ Generating RTLIL representation for module `\_90_simplemap_bool_ops'.
589
+ Generating RTLIL representation for module `\_90_simplemap_reduce_ops'.
590
+ Generating RTLIL representation for module `\_90_simplemap_logic_ops'.
591
+ Generating RTLIL representation for module `\_90_simplemap_compare_ops'.
592
+ Generating RTLIL representation for module `\_90_simplemap_various'.
593
+ Generating RTLIL representation for module `\_90_simplemap_registers'.
594
+ Generating RTLIL representation for module `\_90_shift_ops_shr_shl_sshl_sshr'.
595
+ Generating RTLIL representation for module `\_90_shift_shiftx'.
596
+ Generating RTLIL representation for module `\_90_fa'.
597
+ Generating RTLIL representation for module `\_90_lcu_brent_kung'.
598
+ Generating RTLIL representation for module `\_90_alu'.
599
+ Generating RTLIL representation for module `\_90_macc'.
600
+ Generating RTLIL representation for module `\_90_alumacc'.
601
+ Generating RTLIL representation for module `$__div_mod_u'.
602
+ Generating RTLIL representation for module `$__div_mod_trunc'.
603
+ Generating RTLIL representation for module `\_90_div'.
604
+ Generating RTLIL representation for module `\_90_mod'.
605
+ Generating RTLIL representation for module `$__div_mod_floor'.
606
+ Generating RTLIL representation for module `\_90_divfloor'.
607
+ Generating RTLIL representation for module `\_90_modfloor'.
608
+ Generating RTLIL representation for module `\_90_pow'.
609
+ Generating RTLIL representation for module `\_90_pmux'.
610
+ Generating RTLIL representation for module `\_90_demux'.
611
+ Generating RTLIL representation for module `\_90_lut'.
612
+ Generating RTLIL representation for module `$connect'.
613
+ Generating RTLIL representation for module `$input_port'.
614
+ Successfully finished Verilog frontend.
615
+
616
+ 7.20.2. Continuing TECHMAP pass.
617
+ Using extmapper simplemap for cells of type $not.
618
+ Using extmapper simplemap for cells of type $or.
619
+ Using extmapper simplemap for cells of type $reduce_and.
620
+ Using extmapper simplemap for cells of type $xor.
621
+ Using template $paramod$d4c0c20b0ee59f495e14575c4397dc0a6dd9e8e6\_90_alu for cells of type $alu.
622
+ Using extmapper maccmap for cells of type $macc_v2.
623
+ add \f00 (8 bits, signed)
624
+ sub \f20 (8 bits, signed)
625
+ add { \f19 [7] \f19 [7] \f19 [7] \f19 [7] \f19 [7] \f19 [7] \f19 [7] \f19 [7] \f19 } (16 bits, unsigned)
626
+ add { \f18 [7] \f18 [7] \f18 [7] \f18 [7] \f18 [7] \f18 [7] \f18 [7] \f18 [7] \f18 } (16 bits, unsigned)
627
+ add { \f17 [7] \f17 [7] \f17 [7] \f17 [7] \f17 [7] \f17 [7] \f17 [7] \f17 [7] \f17 } (16 bits, unsigned)
628
+ add { \f16 [7] \f16 [7] \f16 [7] \f16 [7] \f16 [7] \f16 [7] \f16 [7] \f16 [7] \f16 } (16 bits, unsigned)
629
+ add { \f15 [7] \f15 [7] \f15 [7] \f15 [7] \f15 [7] \f15 [7] \f15 [7] \f15 [7] \f15 } (16 bits, unsigned)
630
+ add { \f14 [7] \f14 [7] \f14 [7] \f14 [7] \f14 [7] \f14 [7] \f14 [7] \f14 [7] \f14 } (16 bits, unsigned)
631
+ add { \f13 [7] \f13 [7] \f13 [7] \f13 [7] \f13 [7] \f13 [7] \f13 [7] \f13 [7] \f13 } (16 bits, unsigned)
632
+ add { \f12 [7] \f12 [7] \f12 [7] \f12 [7] \f12 [7] \f12 [7] \f12 [7] \f12 [7] \f12 } (16 bits, unsigned)
633
+ add { \f11 [7] \f11 [7] \f11 [7] \f11 [7] \f11 [7] \f11 [7] \f11 [7] \f11 [7] \f11 } (16 bits, unsigned)
634
+ add { \f10 [7] \f10 [7] \f10 [7] \f10 [7] \f10 [7] \f10 [7] \f10 [7] \f10 [7] \f10 } (16 bits, unsigned)
635
+ add { \f09 [7] \f09 [7] \f09 [7] \f09 [7] \f09 [7] \f09 [7] \f09 [7] \f09 [7] \f09 } (16 bits, unsigned)
636
+ add \f08 (8 bits, signed)
637
+ add \f07 (8 bits, signed)
638
+ add \f06 (8 bits, signed)
639
+ add \f05 (8 bits, signed)
640
+ add \f04 (8 bits, signed)
641
+ add \f03 (8 bits, signed)
642
+ add \f02 (8 bits, signed)
643
+ add \f01 (8 bits, signed)
644
+ sub { \f39 [7] \f39 [7] \f39 [7] \f39 [7] \f39 [7] \f39 [7] \f39 [7] \f39 [7] \f39 } (16 bits, unsigned)
645
+ sub { \f38 [7] \f38 [7] \f38 [7] \f38 [7] \f38 [7] \f38 [7] \f38 [7] \f38 [7] \f38 } (16 bits, unsigned)
646
+ sub { \f37 [7] \f37 [7] \f37 [7] \f37 [7] \f37 [7] \f37 [7] \f37 [7] \f37 [7] \f37 } (16 bits, unsigned)
647
+ sub { \f36 [7] \f36 [7] \f36 [7] \f36 [7] \f36 [7] \f36 [7] \f36 [7] \f36 [7] \f36 } (16 bits, unsigned)
648
+ sub { \f35 [7] \f35 [7] \f35 [7] \f35 [7] \f35 [7] \f35 [7] \f35 [7] \f35 [7] \f35 } (16 bits, unsigned)
649
+ sub { \f34 [7] \f34 [7] \f34 [7] \f34 [7] \f34 [7] \f34 [7] \f34 [7] \f34 [7] \f34 } (16 bits, unsigned)
650
+ sub { \f33 [7] \f33 [7] \f33 [7] \f33 [7] \f33 [7] \f33 [7] \f33 [7] \f33 [7] \f33 } (16 bits, unsigned)
651
+ sub { \f32 [7] \f32 [7] \f32 [7] \f32 [7] \f32 [7] \f32 [7] \f32 [7] \f32 [7] \f32 } (16 bits, unsigned)
652
+ sub { \f31 [7] \f31 [7] \f31 [7] \f31 [7] \f31 [7] \f31 [7] \f31 [7] \f31 [7] \f31 } (16 bits, unsigned)
653
+ sub { \f30 [7] \f30 [7] \f30 [7] \f30 [7] \f30 [7] \f30 [7] \f30 [7] \f30 [7] \f30 } (16 bits, unsigned)
654
+ sub { \f29 [7] \f29 [7] \f29 [7] \f29 [7] \f29 [7] \f29 [7] \f29 [7] \f29 [7] \f29 } (16 bits, unsigned)
655
+ sub \f28 (8 bits, signed)
656
+ sub \f27 (8 bits, signed)
657
+ sub \f26 (8 bits, signed)
658
+ sub \f25 (8 bits, signed)
659
+ sub \f24 (8 bits, signed)
660
+ sub \f23 (8 bits, signed)
661
+ sub \f22 (8 bits, signed)
662
+ sub \f21 (8 bits, signed)
663
+ packed 20 (2) bits / 1 words into adder tree
664
+ Using template $paramod\_90_fa\WIDTH=32'00000000000000000000000000010000 for cells of type $fa.
665
+ Using template $paramod$6df0329addda9228fcc2546de2aaf14ad26c98e1\_90_alu for cells of type $alu.
666
+ Using template $paramod\_90_lcu_brent_kung\WIDTH=32'00000000000000000000000000010000 for cells of type $lcu.
667
+ Using extmapper simplemap for cells of type $pos.
668
+ Using extmapper simplemap for cells of type $mux.
669
+ Using extmapper simplemap for cells of type $and.
670
+ No more expansions possible.
671
+ <suppressed ~659 debug messages>
672
+
673
+ 7.21. Executing OPT pass (performing simple optimizations).
674
+
675
+ 7.21.1. Executing OPT_EXPR pass (perform const folding).
676
+ Optimizing module person_classifier_1p.
677
+ <suppressed ~217 debug messages>
678
+
679
+ 7.21.2. Executing OPT_MERGE pass (detect identical cells).
680
+ Finding identical cells in module `\person_classifier_1p'.
681
+ Computing hashes of 3553 cells of `\person_classifier_1p'.
682
+ Finding duplicate cells in `\person_classifier_1p'.
683
+ Computing hashes of 3290 cells of `\person_classifier_1p'.
684
+ Finding duplicate cells in `\person_classifier_1p'.
685
+ Computing hashes of 3079 cells of `\person_classifier_1p'.
686
+ Finding duplicate cells in `\person_classifier_1p'.
687
+ Computing hashes of 2918 cells of `\person_classifier_1p'.
688
+ Finding duplicate cells in `\person_classifier_1p'.
689
+ Computing hashes of 2806 cells of `\person_classifier_1p'.
690
+ Finding duplicate cells in `\person_classifier_1p'.
691
+ Computing hashes of 2680 cells of `\person_classifier_1p'.
692
+ Finding duplicate cells in `\person_classifier_1p'.
693
+ Computing hashes of 2582 cells of `\person_classifier_1p'.
694
+ Finding duplicate cells in `\person_classifier_1p'.
695
+ Computing hashes of 2523 cells of `\person_classifier_1p'.
696
+ Finding duplicate cells in `\person_classifier_1p'.
697
+ Computing hashes of 2451 cells of `\person_classifier_1p'.
698
+ Finding duplicate cells in `\person_classifier_1p'.
699
+ Computing hashes of 2391 cells of `\person_classifier_1p'.
700
+ Finding duplicate cells in `\person_classifier_1p'.
701
+ Computing hashes of 2357 cells of `\person_classifier_1p'.
702
+ Finding duplicate cells in `\person_classifier_1p'.
703
+ Computing hashes of 2317 cells of `\person_classifier_1p'.
704
+ Finding duplicate cells in `\person_classifier_1p'.
705
+ Computing hashes of 2282 cells of `\person_classifier_1p'.
706
+ Finding duplicate cells in `\person_classifier_1p'.
707
+ Computing hashes of 2267 cells of `\person_classifier_1p'.
708
+ Finding duplicate cells in `\person_classifier_1p'.
709
+ Computing hashes of 2251 cells of `\person_classifier_1p'.
710
+ Finding duplicate cells in `\person_classifier_1p'.
711
+ Computing hashes of 2235 cells of `\person_classifier_1p'.
712
+ Finding duplicate cells in `\person_classifier_1p'.
713
+ Computing hashes of 2227 cells of `\person_classifier_1p'.
714
+ Finding duplicate cells in `\person_classifier_1p'.
715
+ Computing hashes of 2215 cells of `\person_classifier_1p'.
716
+ Finding duplicate cells in `\person_classifier_1p'.
717
+ Computing hashes of 2203 cells of `\person_classifier_1p'.
718
+ Finding duplicate cells in `\person_classifier_1p'.
719
+ Computing hashes of 2197 cells of `\person_classifier_1p'.
720
+ Finding duplicate cells in `\person_classifier_1p'.
721
+ Computing hashes of 2193 cells of `\person_classifier_1p'.
722
+ Finding duplicate cells in `\person_classifier_1p'.
723
+ Computing hashes of 2189 cells of `\person_classifier_1p'.
724
+ Finding duplicate cells in `\person_classifier_1p'.
725
+ Computing hashes of 2187 cells of `\person_classifier_1p'.
726
+ Finding duplicate cells in `\person_classifier_1p'.
727
+ Computing hashes of 2185 cells of `\person_classifier_1p'.
728
+ Finding duplicate cells in `\person_classifier_1p'.
729
+ Computing hashes of 2183 cells of `\person_classifier_1p'.
730
+ Finding duplicate cells in `\person_classifier_1p'.
731
+ Computing hashes of 2182 cells of `\person_classifier_1p'.
732
+ Finding duplicate cells in `\person_classifier_1p'.
733
+ <suppressed ~4113 debug messages>
734
+ Removed a total of 1371 cells.
735
+
736
+ 7.21.3. Executing OPT_DFF pass (perform DFF optimizations).
737
+
738
+ 7.21.4. Executing OPT_CLEAN pass (remove unused cells and wires).
739
+ Finding unused cells or wires in module \person_classifier_1p..
740
+ Removed 58 unused cells and 495 unused wires.
741
+ <suppressed ~59 debug messages>
742
+
743
+ 7.21.5. Finished fast OPT passes.
744
+
745
+ 7.22. Executing ABC pass (technology mapping using ABC).
746
+
747
+ 7.22.1. Extracting gate netlist of module `\person_classifier_1p' to `<abc-temp-dir>/input.blif'..
748
+
749
+ 7.22.1.1. Executed ABC.
750
+ Extracted 2124 gates and 2460 wires to a netlist network with 336 inputs and 1 outputs.
751
+ Running ABC script: <abc-temp-dir>/abc.script
752
+ ABC: ======== ABC command line "source <abc-temp-dir>/abc.script"
753
+ ABC: + read_blif <abc-temp-dir>/input.blif
754
+ ABC: + read_library <abc-temp-dir>/stdcells.genlib
755
+ ABC: + strash
756
+ ABC: + &get -n
757
+ ABC: + &fraig -x
758
+ ABC: + &put
759
+ ABC: + scorr
760
+ ABC: Warning: The network is combinational (run "fraig" or "fraig_sweep").
761
+ ABC: + dc2
762
+ ABC: + dretime
763
+ ABC: + strash
764
+ ABC: + &get -n
765
+ ABC: + &dch -f
766
+ ABC: + &nf
767
+ ABC: + &put
768
+ ABC: + write_blif <abc-temp-dir>/output.blif
769
+
770
+ 7.22.1.2. Re-integrating ABC results.
771
+ ABC RESULTS: AND cells: 113
772
+ ABC RESULTS: ANDNOT cells: 42
773
+ ABC RESULTS: MUX cells: 13
774
+ ABC RESULTS: NAND cells: 774
775
+ ABC RESULTS: NOR cells: 31
776
+ ABC RESULTS: NOT cells: 4
777
+ ABC RESULTS: OR cells: 193
778
+ ABC RESULTS: ORNOT cells: 10
779
+ ABC RESULTS: XNOR cells: 202
780
+ ABC RESULTS: XOR cells: 497
781
+ ABC RESULTS: internal signals: 2123
782
+ ABC RESULTS: input signals: 336
783
+ ABC RESULTS: output signals: 1
784
+ Removing temp directory.
785
+ Removing global temp directory.
786
+
787
+ 7.23. Executing OPT pass (performing simple optimizations).
788
+
789
+ 7.23.1. Executing OPT_EXPR pass (perform const folding).
790
+ Optimizing module person_classifier_1p.
791
+ <suppressed ~2 debug messages>
792
+
793
+ 7.23.2. Executing OPT_MERGE pass (detect identical cells).
794
+ Finding identical cells in module `\person_classifier_1p'.
795
+ Computing hashes of 1879 cells of `\person_classifier_1p'.
796
+ Finding duplicate cells in `\person_classifier_1p'.
797
+ Removed a total of 0 cells.
798
+
799
+ 7.23.3. Executing OPT_DFF pass (perform DFF optimizations).
800
+
801
+ 7.23.4. Executing OPT_CLEAN pass (remove unused cells and wires).
802
+ Finding unused cells or wires in module \person_classifier_1p..
803
+ Removed 0 unused cells and 626 unused wires.
804
+ <suppressed ~2 debug messages>
805
+
806
+ 7.23.5. Finished fast OPT passes.
807
+
808
+ 7.24. Executing HIERARCHY pass (managing design hierarchy).
809
+ Attribute `top' found on module `person_classifier_1p'. Setting top module to person_classifier_1p.
810
+
811
+ 7.24.1. Analyzing design hierarchy..
812
+ Top module: \person_classifier_1p
813
+
814
+ 7.24.2. Analyzing design hierarchy..
815
+ Top module: \person_classifier_1p
816
+ Removed 0 unused modules.
817
+
818
+ 7.25. Printing statistics.
819
+
820
+ === person_classifier_1p ===
821
+
822
+ +----------Local Count, excluding submodules.
823
+ |
824
+ 1920 wires
825
+ 2215 wire bits
826
+ 42 public wires
827
+ 337 public wire bits
828
+ 42 ports
829
+ 337 port bits
830
+ 1879 cells
831
+ 42 $_ANDNOT_
832
+ 113 $_AND_
833
+ 13 $_MUX_
834
+ 774 $_NAND_
835
+ 31 $_NOR_
836
+ 4 $_NOT_
837
+ 10 $_ORNOT_
838
+ 193 $_OR_
839
+ 202 $_XNOR_
840
+ 497 $_XOR_
841
+
842
+ 7.26. Executing CHECK pass (checking for obvious problems).
843
+ Checking module person_classifier_1p...
844
+ Found and reported 0 problems.
845
+
846
+ 8. Executing ABC pass (technology mapping using ABC).
847
+
848
+ 8.1. Extracting gate netlist of module `\person_classifier_1p' to `<abc-temp-dir>/input.blif'..
849
+
850
+ 8.1.1. Executed ABC.
851
+ Extracted 1879 gates and 2215 wires to a netlist network with 336 inputs and 1 outputs.
852
+ Running ABC script: <abc-temp-dir>/abc.script
853
+ ABC: ======== ABC command line "source <abc-temp-dir>/abc.script"
854
+ ABC: + read_blif <abc-temp-dir>/input.blif
855
+ ABC: + read_library <abc-temp-dir>/stdcells.genlib
856
+ ABC: + strash
857
+ ABC: + &get -n
858
+ ABC: + &fraig -x
859
+ ABC: + &put
860
+ ABC: + scorr
861
+ ABC: Warning: The network is combinational (run "fraig" or "fraig_sweep").
862
+ ABC: + dc2
863
+ ABC: + dretime
864
+ ABC: + strash
865
+ ABC: + &get -n
866
+ ABC: + &dch -f
867
+ ABC: + &nf
868
+ ABC: + &put
869
+ ABC: + write_blif <abc-temp-dir>/output.blif
870
+
871
+ 8.1.2. Re-integrating ABC results.
872
+ ABC RESULTS: AND cells: 1172
873
+ ABC RESULTS: NOT cells: 1318
874
+ ABC RESULTS: XOR cells: 730
875
+ ABC RESULTS: internal signals: 1878
876
+ ABC RESULTS: input signals: 336
877
+ ABC RESULTS: output signals: 1
878
+ Removing temp directory.
879
+ Removing global temp directory.
880
+
881
+ 9. Executing OPT_CLEAN pass (remove unused cells and wires).
882
+ Finding unused cells or wires in module \person_classifier_1p..
883
+ Removed 0 unused cells and 2215 unused wires.
884
+ <suppressed ~1 debug messages>
885
+
886
+ 10. Printing statistics.
887
+
888
+ === person_classifier_1p ===
889
+
890
+ +----------Local Count, excluding submodules.
891
+ |
892
+ 3261 wires
893
+ 3556 wire bits
894
+ 42 public wires
895
+ 337 public wire bits
896
+ 42 ports
897
+ 337 port bits
898
+ 3220 cells
899
+ 1172 $_AND_
900
+ 1318 $_NOT_
901
+ 730 $_XOR_
902
+
903
+ 11. Executing Verilog backend.
904
+
905
+ 11.1. Executing BMUXMAP pass.
906
+
907
+ 11.2. Executing DEMUXMAP pass.
908
+ Dumping module `\person_classifier_1p'.
909
+
910
+ End of script. Logfile hash: b1bbd57796
911
+ Yosys 0.63+222 (git sha1 a4b6a8c58-dirty, x86_64-w64-mingw32-g++ 13.2.1 -O3)
912
+ Time spent: 1% 20x opt_expr (0 sec), 1% 19x opt_clean (0 sec), ...
stage_5/synth.ys ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ read_verilog person_classifier_1p.v
2
+ hierarchy -top person_classifier_1p
3
+ proc
4
+ opt
5
+ flatten
6
+ opt_clean
7
+ synth -top person_classifier_1p
8
+ abc -g AND,XOR
9
+ opt_clean
10
+ stat
11
+ write_verilog synthesized.v
stage_5/synthesized.v ADDED
The diff for this file is too large to render. See raw diff