├── .btd.yml ├── .bumpversion.cfg ├── .flake8 ├── .github └── workflows │ ├── docs.yml │ ├── pre-commit.yml │ ├── pythonpublish.yml │ ├── test_code.yml │ ├── test_docs.yml │ └── unit_tests.yml ├── .gitignore ├── .isort.cfg ├── .pre-commit-config.yaml ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README.md ├── docs ├── Makefile ├── conf.py ├── diagrams │ ├── F.png │ ├── L.png │ ├── T.png │ ├── adder_local.png │ ├── adder_prefix_operator.png │ ├── adder_transforms.gif │ ├── bk_old.png │ ├── fanout_demo.png │ ├── intro_19_0.png │ ├── intro_24_1.png │ ├── intro_28_0.png │ ├── ks_old.png │ ├── ling_demo.png │ ├── rc_old.png │ ├── sk_old.png │ ├── sklansky_old.png │ └── xor_vs_mux.png ├── index.rst ├── notebooks │ ├── adder_theory.ipynb │ ├── factorization.ipynb │ ├── forest_demo.ipynb │ ├── hardware_addition.ipynb │ ├── hardware_operations.ipynb │ ├── intro.ipynb │ ├── sparseness.ipynb │ ├── traditional_addition.ipynb │ ├── tree_demo.ipynb │ └── tree_traversal.ipynb ├── prolog.inc ├── requirements.txt └── src │ ├── pptrees.rst │ ├── theory.rst │ └── tutorial.rst ├── pytest.ini ├── requirements.txt ├── setup.cfg ├── setup.py ├── src └── pptrees │ ├── AdderForest.py │ ├── AdderTree.py │ ├── EquivClass.py │ ├── ExpressionForest.py │ ├── ExpressionGraph.py │ ├── ExpressionNode.py │ ├── ExpressionTree.py │ ├── YosysAdder.py │ ├── __init__.py │ ├── adder_tree.py │ ├── mappings │ ├── GTECH_map.v │ ├── README.md │ ├── __init__.py │ ├── asap7sc7p5t_28_R.v │ ├── behavioral_map.v │ ├── behavioral_map.vhd │ ├── sky130_fd_sc_hd_map.v │ ├── sky130_fd_sc_hs_map.v │ ├── sky130_fd_sc_ls_map.v │ └── sky130_fd_sc_ms_map.v │ ├── node_data │ ├── __init__.py │ ├── invis.py │ ├── ppa_buffer.py │ ├── ppa_cocycle.py │ ├── ppa_lspine.py │ ├── ppa_lspine_pre.py │ ├── ppa_lspine_pre_simple.py │ ├── ppa_lspine_single.py │ ├── ppa_post.py │ ├── ppa_post_nolspine.py │ ├── ppa_post_plusone.py │ ├── ppa_pre.py │ ├── ppa_pre_t.py │ ├── ppa_rspine.py │ ├── ppa_rspine_buffer.py │ ├── ppa_rspine_pre.py │ └── ppa_small_root.py │ ├── util.py │ └── yosys_alu.py ├── tests └── test_node.py └── tox.ini /.btd.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.btd.yml -------------------------------------------------------------------------------- /.bumpversion.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.bumpversion.cfg -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.flake8 -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.github/workflows/docs.yml -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.github/workflows/pre-commit.yml -------------------------------------------------------------------------------- /.github/workflows/pythonpublish.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.github/workflows/pythonpublish.yml -------------------------------------------------------------------------------- /.github/workflows/test_code.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.github/workflows/test_code.yml -------------------------------------------------------------------------------- /.github/workflows/test_docs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.github/workflows/test_docs.yml -------------------------------------------------------------------------------- /.github/workflows/unit_tests.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.github/workflows/unit_tests.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.gitignore -------------------------------------------------------------------------------- /.isort.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.isort.cfg -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/LICENSE -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/MANIFEST.in -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/README.md -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/Makefile -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/conf.py -------------------------------------------------------------------------------- /docs/diagrams/F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/F.png -------------------------------------------------------------------------------- /docs/diagrams/L.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/L.png -------------------------------------------------------------------------------- /docs/diagrams/T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/T.png -------------------------------------------------------------------------------- /docs/diagrams/adder_local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/adder_local.png -------------------------------------------------------------------------------- /docs/diagrams/adder_prefix_operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/adder_prefix_operator.png -------------------------------------------------------------------------------- /docs/diagrams/adder_transforms.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/adder_transforms.gif -------------------------------------------------------------------------------- /docs/diagrams/bk_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/bk_old.png -------------------------------------------------------------------------------- /docs/diagrams/fanout_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/fanout_demo.png -------------------------------------------------------------------------------- /docs/diagrams/intro_19_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/intro_19_0.png -------------------------------------------------------------------------------- /docs/diagrams/intro_24_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/intro_24_1.png -------------------------------------------------------------------------------- /docs/diagrams/intro_28_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/intro_28_0.png -------------------------------------------------------------------------------- /docs/diagrams/ks_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/ks_old.png -------------------------------------------------------------------------------- /docs/diagrams/ling_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/ling_demo.png -------------------------------------------------------------------------------- /docs/diagrams/rc_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/rc_old.png -------------------------------------------------------------------------------- /docs/diagrams/sk_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/sk_old.png -------------------------------------------------------------------------------- /docs/diagrams/sklansky_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/sklansky_old.png -------------------------------------------------------------------------------- /docs/diagrams/xor_vs_mux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/diagrams/xor_vs_mux.png -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/index.rst -------------------------------------------------------------------------------- /docs/notebooks/adder_theory.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/adder_theory.ipynb -------------------------------------------------------------------------------- /docs/notebooks/factorization.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/factorization.ipynb -------------------------------------------------------------------------------- /docs/notebooks/forest_demo.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/forest_demo.ipynb -------------------------------------------------------------------------------- /docs/notebooks/hardware_addition.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/hardware_addition.ipynb -------------------------------------------------------------------------------- /docs/notebooks/hardware_operations.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/hardware_operations.ipynb -------------------------------------------------------------------------------- /docs/notebooks/intro.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/intro.ipynb -------------------------------------------------------------------------------- /docs/notebooks/sparseness.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/sparseness.ipynb -------------------------------------------------------------------------------- /docs/notebooks/traditional_addition.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/traditional_addition.ipynb -------------------------------------------------------------------------------- /docs/notebooks/tree_demo.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/tree_demo.ipynb -------------------------------------------------------------------------------- /docs/notebooks/tree_traversal.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/notebooks/tree_traversal.ipynb -------------------------------------------------------------------------------- /docs/prolog.inc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/prolog.inc -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/requirements.txt -------------------------------------------------------------------------------- /docs/src/pptrees.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/src/pptrees.rst -------------------------------------------------------------------------------- /docs/src/theory.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/src/theory.rst -------------------------------------------------------------------------------- /docs/src/tutorial.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/docs/src/tutorial.rst -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/pytest.ini -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | networkx 2 | pydot 3 | graphviz 4 | Pillow 5 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/setup.cfg -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/setup.py -------------------------------------------------------------------------------- /src/pptrees/AdderForest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/AdderForest.py -------------------------------------------------------------------------------- /src/pptrees/AdderTree.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/AdderTree.py -------------------------------------------------------------------------------- /src/pptrees/EquivClass.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/EquivClass.py -------------------------------------------------------------------------------- /src/pptrees/ExpressionForest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/ExpressionForest.py -------------------------------------------------------------------------------- /src/pptrees/ExpressionGraph.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/ExpressionGraph.py -------------------------------------------------------------------------------- /src/pptrees/ExpressionNode.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/ExpressionNode.py -------------------------------------------------------------------------------- /src/pptrees/ExpressionTree.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/ExpressionTree.py -------------------------------------------------------------------------------- /src/pptrees/YosysAdder.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/YosysAdder.py -------------------------------------------------------------------------------- /src/pptrees/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/__init__.py -------------------------------------------------------------------------------- /src/pptrees/adder_tree.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/adder_tree.py -------------------------------------------------------------------------------- /src/pptrees/mappings/GTECH_map.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/GTECH_map.v -------------------------------------------------------------------------------- /src/pptrees/mappings/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/README.md -------------------------------------------------------------------------------- /src/pptrees/mappings/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/pptrees/mappings/asap7sc7p5t_28_R.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/asap7sc7p5t_28_R.v -------------------------------------------------------------------------------- /src/pptrees/mappings/behavioral_map.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/behavioral_map.v -------------------------------------------------------------------------------- /src/pptrees/mappings/behavioral_map.vhd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/behavioral_map.vhd -------------------------------------------------------------------------------- /src/pptrees/mappings/sky130_fd_sc_hd_map.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/sky130_fd_sc_hd_map.v -------------------------------------------------------------------------------- /src/pptrees/mappings/sky130_fd_sc_hs_map.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/sky130_fd_sc_hs_map.v -------------------------------------------------------------------------------- /src/pptrees/mappings/sky130_fd_sc_ls_map.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/sky130_fd_sc_ls_map.v -------------------------------------------------------------------------------- /src/pptrees/mappings/sky130_fd_sc_ms_map.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/mappings/sky130_fd_sc_ms_map.v -------------------------------------------------------------------------------- /src/pptrees/node_data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/__init__.py -------------------------------------------------------------------------------- /src/pptrees/node_data/invis.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/invis.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_buffer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_buffer.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_cocycle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_cocycle.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_lspine.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_lspine.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_lspine_pre.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_lspine_pre.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_lspine_pre_simple.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_lspine_pre_simple.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_lspine_single.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_lspine_single.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_post.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_post.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_post_nolspine.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_post_nolspine.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_post_plusone.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_post_plusone.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_pre.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_pre.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_pre_t.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_pre_t.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_rspine.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_rspine.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_rspine_buffer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_rspine_buffer.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_rspine_pre.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_rspine_pre.py -------------------------------------------------------------------------------- /src/pptrees/node_data/ppa_small_root.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/node_data/ppa_small_root.py -------------------------------------------------------------------------------- /src/pptrees/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/util.py -------------------------------------------------------------------------------- /src/pptrees/yosys_alu.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/src/pptrees/yosys_alu.py -------------------------------------------------------------------------------- /tests/test_node.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/tests/test_node.py -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tdene/synth_opt_adders/HEAD/tox.ini --------------------------------------------------------------------------------