blob: 1c8e9ef87015163d8b083317054e40d4f91e80a3 [file] [log] [blame]
/----------------------------------------------------------------------------\
| |
| yosys -- Yosys Open SYnthesis Suite |
| |
| Copyright (C) 2012 - 2020 Claire Wolf <claire@symbioticeda.com> |
| |
| Permission to use, copy, modify, and/or distribute this software for any |
| purpose with or without fee is hereby granted, provided that the above |
| copyright notice and this permission notice appear in all copies. |
| |
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| |
\----------------------------------------------------------------------------/
Yosys 0.9+3621 (git sha1 84e9fa7, gcc 8.3.1 -fPIC -Os)
[TCL: yosys -import] Command name collision: found pre-existing command `cd' -> skip.
[TCL: yosys -import] Command name collision: found pre-existing command `eval' -> skip.
[TCL: yosys -import] Command name collision: found pre-existing command `exec' -> skip.
[TCL: yosys -import] Command name collision: found pre-existing command `read' -> skip.
[TCL: yosys -import] Command name collision: found pre-existing command `trace' -> skip.
1. Executing Liberty frontend.
Imported 428 cell types from liberty file.
2. Executing Verilog-2005 frontend: /project/openlane/user_id_programming/../../verilog/rtl/user_id_programming.v
Parsing SystemVerilog input from `/project/openlane/user_id_programming/../../verilog/rtl/user_id_programming.v' to AST representation.
Generating RTLIL representation for module `\user_id_programming'.
Successfully finished Verilog frontend.
3. Generating Graphviz representation of design.
Writing dot description to `/project/openlane/user_id_programming/runs/user_id_programming/tmp/synthesis/hierarchy.dot'.
Dumping module user_id_programming to page 1.
4. Executing HIERARCHY pass (managing design hierarchy).
4.1. Analyzing design hierarchy..
Top module: \user_id_programming
4.2. Analyzing design hierarchy..
Top module: \user_id_programming
Removed 0 unused modules.
5. Executing SYNTH pass.
5.1. Executing HIERARCHY pass (managing design hierarchy).
5.1.1. Analyzing design hierarchy..
Top module: \user_id_programming
5.1.2. Analyzing design hierarchy..
Top module: \user_id_programming
Removed 0 unused modules.
5.2. Executing PROC pass (convert processes to netlists).
5.2.1. Executing PROC_CLEAN pass (remove empty switches from decision trees).
Cleaned up 0 empty switches.
5.2.2. Executing PROC_RMDEAD pass (remove dead branches from decision trees).
Removed a total of 0 dead cases.
5.2.3. Executing PROC_PRUNE pass (remove redundant assignments in processes).
Removed 0 redundant assignments.
Promoted 0 assignments to connections.
5.2.4. Executing PROC_INIT pass (extract init attributes).
5.2.5. Executing PROC_ARST pass (detect async resets in processes).
5.2.6. Executing PROC_MUX pass (convert decision trees to multiplexers).
5.2.7. Executing PROC_DLATCH pass (convert process syncs to latches).
5.2.8. Executing PROC_DFF pass (convert process syncs to FFs).
5.2.9. Executing PROC_CLEAN pass (remove empty switches from decision trees).
Cleaned up 0 empty switches.
5.3. Executing FLATTEN pass (flatten design).
5.4. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.5. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.6. Executing CHECK pass (checking for obvious problems).
checking module user_id_programming..
found and reported 0 problems.
5.7. Executing OPT pass (performing simple optimizations).
5.7.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.7.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.7.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
Running muxtree optimizer on module \user_id_programming..
Creating internal representation of mux trees.
No muxes found in this module.
Removed 0 multiplexer ports.
5.7.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
Optimizing cells in module \user_id_programming.
Performed a total of 0 changes.
5.7.5. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.7.6. Executing OPT_DFF pass (perform DFF optimizations).
5.7.7. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.7.8. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.7.9. Finished OPT passes. (There is nothing left to do.)
5.8. Executing FSM pass (extract and optimize FSM).
5.8.1. Executing FSM_DETECT pass (finding FSMs in design).
5.8.2. Executing FSM_EXTRACT pass (extracting FSM from design).
5.8.3. Executing FSM_OPT pass (simple optimizations of FSMs).
5.8.4. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.8.5. Executing FSM_OPT pass (simple optimizations of FSMs).
5.8.6. Executing FSM_RECODE pass (re-assigning FSM state encoding).
5.8.7. Executing FSM_INFO pass (dumping all available information on FSM cells).
5.8.8. Executing FSM_MAP pass (mapping FSMs to basic logic).
5.9. Executing OPT pass (performing simple optimizations).
5.9.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.9.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.9.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
Running muxtree optimizer on module \user_id_programming..
Creating internal representation of mux trees.
No muxes found in this module.
Removed 0 multiplexer ports.
5.9.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
Optimizing cells in module \user_id_programming.
Performed a total of 0 changes.
5.9.5. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.9.6. Executing OPT_DFF pass (perform DFF optimizations).
5.9.7. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.9.8. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.9.9. Finished OPT passes. (There is nothing left to do.)
5.10. Executing WREDUCE pass (reducing word size of cells).
5.11. Executing PEEPOPT pass (run peephole optimizers).
5.12. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.13. Executing ALUMACC pass (create $alu and $macc cells).
Extracting $alu and $macc cells in module user_id_programming:
created 0 $alu and 0 $macc cells.
5.14. Executing SHARE pass (SAT-based resource sharing).
5.15. Executing OPT pass (performing simple optimizations).
5.15.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.15.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.15.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
Running muxtree optimizer on module \user_id_programming..
Creating internal representation of mux trees.
No muxes found in this module.
Removed 0 multiplexer ports.
5.15.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
Optimizing cells in module \user_id_programming.
Performed a total of 0 changes.
5.15.5. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.15.6. Executing OPT_DFF pass (perform DFF optimizations).
5.15.7. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.15.8. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.15.9. Finished OPT passes. (There is nothing left to do.)
5.16. Executing MEMORY pass.
5.16.1. Executing OPT_MEM pass (optimize memories).
Performed a total of 0 transformations.
5.16.2. Executing MEMORY_DFF pass (merging $dff cells to $memrd and $memwr).
5.16.3. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.16.4. Executing MEMORY_SHARE pass (consolidating $memrd/$memwr cells).
5.16.5. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.16.6. Executing MEMORY_COLLECT pass (generating $mem cells).
5.17. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.18. Executing OPT pass (performing simple optimizations).
5.18.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.18.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.18.3. Executing OPT_DFF pass (perform DFF optimizations).
5.18.4. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.18.5. Finished fast OPT passes.
5.19. Executing MEMORY_MAP pass (converting $mem cells to logic and flip-flops).
5.20. Executing OPT pass (performing simple optimizations).
5.20.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.20.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.20.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
Running muxtree optimizer on module \user_id_programming..
Creating internal representation of mux trees.
No muxes found in this module.
Removed 0 multiplexer ports.
5.20.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
Optimizing cells in module \user_id_programming.
Performed a total of 0 changes.
5.20.5. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.20.6. Executing OPT_SHARE pass.
5.20.7. Executing OPT_DFF pass (perform DFF optimizations).
5.20.8. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.20.9. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.20.10. Finished OPT passes. (There is nothing left to do.)
5.21. Executing TECHMAP pass (map to technology primitives).
5.21.1. Executing Verilog-2005 frontend: /build/bin/../share/yosys/techmap.v
Parsing Verilog input from `/build/bin/../share/yosys/techmap.v' to AST representation.
Generating RTLIL representation for module `\_90_simplemap_bool_ops'.
Generating RTLIL representation for module `\_90_simplemap_reduce_ops'.
Generating RTLIL representation for module `\_90_simplemap_logic_ops'.
Generating RTLIL representation for module `\_90_simplemap_compare_ops'.
Generating RTLIL representation for module `\_90_simplemap_various'.
Generating RTLIL representation for module `\_90_simplemap_registers'.
Generating RTLIL representation for module `\_90_shift_ops_shr_shl_sshl_sshr'.
Generating RTLIL representation for module `\_90_shift_shiftx'.
Generating RTLIL representation for module `\_90_fa'.
Generating RTLIL representation for module `\_90_lcu'.
Generating RTLIL representation for module `\_90_alu'.
Generating RTLIL representation for module `\_90_macc'.
Generating RTLIL representation for module `\_90_alumacc'.
Generating RTLIL representation for module `\$__div_mod_u'.
Generating RTLIL representation for module `\$__div_mod_trunc'.
Generating RTLIL representation for module `\_90_div'.
Generating RTLIL representation for module `\_90_mod'.
Generating RTLIL representation for module `\$__div_mod_floor'.
Generating RTLIL representation for module `\_90_divfloor'.
Generating RTLIL representation for module `\_90_modfloor'.
Generating RTLIL representation for module `\_90_pow'.
Generating RTLIL representation for module `\_90_pmux'.
Generating RTLIL representation for module `\_90_lut'.
Successfully finished Verilog frontend.
5.21.2. Continuing TECHMAP pass.
No more expansions possible.
<suppressed ~67 debug messages>
5.22. Executing OPT pass (performing simple optimizations).
5.22.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.22.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.22.3. Executing OPT_DFF pass (perform DFF optimizations).
5.22.4. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.22.5. Finished fast OPT passes.
5.23. Executing ABC pass (technology mapping using ABC).
5.23.1. Extracting gate netlist of module `\user_id_programming' to `<abc-temp-dir>/input.blif'..
Extracted 0 gates and 0 wires to a netlist network with 0 inputs and 0 outputs.
Don't call ABC as there is nothing to map.
Removing temp directory.
5.24. Executing OPT pass (performing simple optimizations).
5.24.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
5.24.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
5.24.3. Executing OPT_DFF pass (perform DFF optimizations).
5.24.4. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
5.24.5. Finished fast OPT passes.
5.25. Executing HIERARCHY pass (managing design hierarchy).
5.25.1. Analyzing design hierarchy..
Top module: \user_id_programming
5.25.2. Analyzing design hierarchy..
Top module: \user_id_programming
Removed 0 unused modules.
5.26. Printing statistics.
=== user_id_programming ===
Number of wires: 3
Number of wire bits: 96
Number of public wires: 3
Number of public wire bits: 96
Number of memories: 0
Number of memory bits: 0
Number of processes: 0
Number of cells: 32
sky130_fd_sc_hd__conb_1 32
5.27. Executing CHECK pass (checking for obvious problems).
checking module user_id_programming..
found and reported 0 problems.
6. Executing SHARE pass (SAT-based resource sharing).
7. Executing OPT pass (performing simple optimizations).
7.1. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
7.2. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
7.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).
Running muxtree optimizer on module \user_id_programming..
Creating internal representation of mux trees.
No muxes found in this module.
Removed 0 multiplexer ports.
7.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).
Optimizing cells in module \user_id_programming.
Performed a total of 0 changes.
7.5. Executing OPT_MERGE pass (detect identical cells).
Finding identical cells in module `\user_id_programming'.
Removed a total of 0 cells.
7.6. Executing OPT_DFF pass (perform DFF optimizations).
7.7. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
7.8. Executing OPT_EXPR pass (perform const folding).
Optimizing module user_id_programming.
7.9. Finished OPT passes. (There is nothing left to do.)
8. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
Removed 0 unused cells and 1 unused wires.
<suppressed ~1 debug messages>
9. Printing statistics.
=== user_id_programming ===
Number of wires: 2
Number of wire bits: 64
Number of public wires: 2
Number of public wire bits: 64
Number of memories: 0
Number of memory bits: 0
Number of processes: 0
Number of cells: 32
sky130_fd_sc_hd__conb_1 32
10. Executing DFFLIBMAP pass (mapping DFF cells to sequential cells from liberty file).
cell sky130_fd_sc_hd__dfxtp_4 (noninv, pins=3, area=23.77) is a direct match for cell type $_DFF_P_.
cell sky130_fd_sc_hd__dfrtp_4 (noninv, pins=4, area=28.78) is a direct match for cell type $_DFF_PN0_.
cell sky130_fd_sc_hd__dfstp_4 (noninv, pins=4, area=30.03) is a direct match for cell type $_DFF_PN1_.
cell sky130_fd_sc_hd__dfbbn_2 (noninv, pins=6, area=35.03) is a direct match for cell type $_DFFSR_NNN_.
final dff cell mappings:
unmapped dff cell: $_DFF_N_
\sky130_fd_sc_hd__dfxtp_4 _DFF_P_ (.CLK( C), .D( D), .Q( Q));
unmapped dff cell: $_DFF_NN0_
unmapped dff cell: $_DFF_NN1_
unmapped dff cell: $_DFF_NP0_
unmapped dff cell: $_DFF_NP1_
\sky130_fd_sc_hd__dfrtp_4 _DFF_PN0_ (.CLK( C), .D( D), .Q( Q), .RESET_B( R));
\sky130_fd_sc_hd__dfstp_4 _DFF_PN1_ (.CLK( C), .D( D), .Q( Q), .SET_B( R));
unmapped dff cell: $_DFF_PP0_
unmapped dff cell: $_DFF_PP1_
\sky130_fd_sc_hd__dfbbn_2 _DFFSR_NNN_ (.CLK_N( C), .D( D), .Q( Q), .Q_N(~Q), .RESET_B( R), .SET_B( S));
unmapped dff cell: $_DFFSR_NNP_
unmapped dff cell: $_DFFSR_NPN_
unmapped dff cell: $_DFFSR_NPP_
unmapped dff cell: $_DFFSR_PNN_
unmapped dff cell: $_DFFSR_PNP_
unmapped dff cell: $_DFFSR_PPN_
unmapped dff cell: $_DFFSR_PPP_
10.1. Executing DFFLEGALIZE pass (convert FFs to types supported by the target).
Mapping DFF cells in module `\user_id_programming':
11. Printing statistics.
=== user_id_programming ===
Number of wires: 2
Number of wire bits: 64
Number of public wires: 2
Number of public wire bits: 64
Number of memories: 0
Number of memory bits: 0
Number of processes: 0
Number of cells: 32
sky130_fd_sc_hd__conb_1 32
12. Executing ABC pass (technology mapping using ABC).
12.1. Extracting gate netlist of module `\user_id_programming' to `/tmp/yosys-abc-O7MXe7/input.blif'..
Extracted 0 gates and 0 wires to a netlist network with 0 inputs and 0 outputs.
Don't call ABC as there is nothing to map.
Removing temp directory.
13. Executing SETUNDEF pass (replace undef values with defined constants).
14. Executing HILOMAP pass (mapping to constant drivers).
15. Executing SPLITNETS pass (splitting up multi-bit signals).
16. Executing OPT_CLEAN pass (remove unused cells and wires).
Finding unused cells or wires in module \user_id_programming..
17. Executing INSBUF pass (insert buffer cells for connected wires).
18. Executing CHECK pass (checking for obvious problems).
checking module user_id_programming..
found and reported 0 problems.
19. Printing statistics.
=== user_id_programming ===
Number of wires: 33
Number of wire bits: 64
Number of public wires: 33
Number of public wire bits: 64
Number of memories: 0
Number of memory bits: 0
Number of processes: 0
Number of cells: 32
sky130_fd_sc_hd__conb_1 32
Chip area for module '\user_id_programming': 120.115200
20. Executing Verilog backend.
Dumping module `\user_id_programming'.
End of script. Logfile hash: 235bb5ed9f, CPU: user 0.85s system 0.03s, MEM: 43.77 MB peak
Yosys 0.9+3621 (git sha1 84e9fa7, gcc 8.3.1 -fPIC -Os)
Time spent: 37% 2x read_liberty (0 sec), 36% 4x stat (0 sec), ...