11 changed files with 231 additions and 79 deletions
			
			
		@ -1,56 +0,0 @@ | 
				
			|||||||
KyuPy - Processing VLSI Circuits With Ease | 
					 | 
				
			||||||
========================================== | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
KyuPy is a python package for high-performance processing and analysis of | 
					 | 
				
			||||||
non-hierarchical VLSI designs. Its purpose is to provide a rapid prototyping | 
					 | 
				
			||||||
platform to aid and accelerate research in the fields of VLSI test, diagnosis | 
					 | 
				
			||||||
and reliability. KyuPy is freely available under the MIT license. | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Main Features | 
					 | 
				
			||||||
------------- | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* Partial [lark](https://github.com/lark-parser/lark) parsers for common files used with synthesized designs: | 
					 | 
				
			||||||
  bench, gate-level verilog, standard delay format (SDF), standard test interface language (STIL) | 
					 | 
				
			||||||
* Bit-parallel gate-level 2-, 4-, and 8-valued logic simulation | 
					 | 
				
			||||||
* GPU-accelerated high-throughput gate-level timing simulation | 
					 | 
				
			||||||
* High-performance through the use of [numpy](https://numpy.org) and [numba](https://numba.pydata.org) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Getting Started | 
					 | 
				
			||||||
--------------- | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
KyuPy requires Python 3.6 or newer. | 
					 | 
				
			||||||
Install the latest release by running: | 
					 | 
				
			||||||
```commandline | 
					 | 
				
			||||||
pip3 install --user kyupy | 
					 | 
				
			||||||
``` | 
					 | 
				
			||||||
For best performance, ensure you have [numba](https://pypi.org/project/numba) installed: | 
					 | 
				
			||||||
```commandline | 
					 | 
				
			||||||
pip3 install --user numba | 
					 | 
				
			||||||
``` | 
					 | 
				
			||||||
GPU/CUDA support may [require some additional setup](https://numba.pydata.org/numba-doc/latest/cuda/index.html). | 
					 | 
				
			||||||
If CUDA or numba is not available, KyuPy will automatically fall back to slow, pure python execution. | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The Jupyter Notebook [UsageExamples.ipynb](https://github.com/s-holst/kyupy/blob/main/UsageExamples.ipynb) on GitHub | 
					 | 
				
			||||||
contains some useful examples to get familiar with the API. | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Development | 
					 | 
				
			||||||
----------- | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To contribute to KyuPy or simply explore the source code, clone the KyuPy [repository](https://github.com/s-holst/kyupy) on GitHub. | 
					 | 
				
			||||||
Within your local checkout, run: | 
					 | 
				
			||||||
```commandline | 
					 | 
				
			||||||
pip3 install --user -e . | 
					 | 
				
			||||||
``` | 
					 | 
				
			||||||
to make the kyupy package available in your python environment. | 
					 | 
				
			||||||
The source code comes with tests that can be run with: | 
					 | 
				
			||||||
``` | 
					 | 
				
			||||||
pytest | 
					 | 
				
			||||||
``` | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
KyuPy depends on the following packages: | 
					 | 
				
			||||||
* [lark-parser](https://pypi.org/project/lark-parser) | 
					 | 
				
			||||||
* [numpy](https://pypi.org/project/numpy) | 
					 | 
				
			||||||
* [numba](https://pypi.org/project/numba) (optional, required only for GPU/CUDA support) | 
					 | 
				
			||||||
@ -0,0 +1,28 @@ | 
				
			|||||||
 | 
					KyuPy - Pythonic Processing of VLSI Circuits | 
				
			||||||
 | 
					============================================ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KyuPy is a Python package for processing and analysis of non-hierarchical gate-level VLSI designs. | 
				
			||||||
 | 
					It contains fundamental building blocks for research software in the fields of VLSI test, diagnosis and reliability: | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Efficient data structures for gate-level circuits and related design data. | 
				
			||||||
 | 
					* Partial `lark <https://github.com/lark-parser/lark>`_ parsers for common design files like | 
				
			||||||
 | 
					  bench, gate-level verilog, standard delay format (SDF), standard test interface language (STIL). | 
				
			||||||
 | 
					* Bit-parallel gate-level 2-, 4-, and 8-valued logic simulation. | 
				
			||||||
 | 
					* GPU-accelerated high-throughput gate-level timing simulation. | 
				
			||||||
 | 
					* High-performance through the use of `numpy <https://numpy.org>`_ and `numba <https://numba.pydata.org>`_. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Getting Started | 
				
			||||||
 | 
					--------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KyuPy is available in `PyPI <https://pypi.org/project/kyupy>`_. | 
				
			||||||
 | 
					It requires Python 3.6 or newer, `lark-parser <https://pypi.org/project/lark-parser>`_, and `numpy <https://pypi.org/project/numpy>`_. | 
				
			||||||
 | 
					Although optional, `numba <https://pypi.org/project/numba>`_ should be installed for best performance. | 
				
			||||||
 | 
					GPU/CUDA support in numba may `require some additional setup <https://numba.pydata.org/numba-doc/latest/cuda/index.html>`_. | 
				
			||||||
 | 
					If numba is not available, KyuPy will automatically fall back to slow, pure Python execution. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The Jupyter Notebook `UsageExamples.ipynb <https://github.com/s-holst/kyupy/blob/main/UsageExamples.ipynb>`_ contains some useful examples to get familiar with the API. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To work with the latest pre-release source code, clone the `KyuPy GitHub repository <https://github.com/s-holst/kyupy>`_. | 
				
			||||||
 | 
					Run ``pip3 install --user -e .`` within your local checkout to make the package available in your Python environment. | 
				
			||||||
 | 
					The source code comes with tests that can be run with ``pytest``. | 
				
			||||||
@ -0,0 +1,20 @@ | 
				
			|||||||
 | 
					# Minimal makefile for Sphinx documentation
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# You can set these variables from the command line, and also
 | 
				
			||||||
 | 
					# from the environment for the first two.
 | 
				
			||||||
 | 
					SPHINXOPTS    ?= | 
				
			||||||
 | 
					SPHINXBUILD   ?= sphinx-build | 
				
			||||||
 | 
					SOURCEDIR     = . | 
				
			||||||
 | 
					BUILDDIR      = _build | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Put it first so that "make" without argument is like "make help".
 | 
				
			||||||
 | 
					help: | 
				
			||||||
 | 
						@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: help Makefile | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Catch-all target: route all unknown targets to Sphinx using the new
 | 
				
			||||||
 | 
					# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
 | 
				
			||||||
 | 
					%: Makefile | 
				
			||||||
 | 
						@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | 
				
			||||||
@ -0,0 +1,64 @@ | 
				
			|||||||
 | 
					# Configuration file for the Sphinx documentation builder. | 
				
			||||||
 | 
					# | 
				
			||||||
 | 
					# This file only contains a selection of the most common options. For a full | 
				
			||||||
 | 
					# list see the documentation: | 
				
			||||||
 | 
					# https://www.sphinx-doc.org/en/master/usage/configuration.html | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Path setup -------------------------------------------------------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If extensions (or modules to document with autodoc) are in another directory, | 
				
			||||||
 | 
					# add these directories to sys.path here. If the directory is relative to the | 
				
			||||||
 | 
					# documentation root, use os.path.abspath to make it absolute, like shown here. | 
				
			||||||
 | 
					# | 
				
			||||||
 | 
					import os | 
				
			||||||
 | 
					import sys | 
				
			||||||
 | 
					import sphinx_rtd_theme | 
				
			||||||
 | 
					sys.path.insert(0, os.path.abspath('../src')) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Project information ----------------------------------------------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					project = 'KyuPy' | 
				
			||||||
 | 
					copyright = '2020, Stefan Holst' | 
				
			||||||
 | 
					author = 'Stefan Holst' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The full version, including alpha/beta/rc tags | 
				
			||||||
 | 
					release = '0.0.2' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- General configuration --------------------------------------------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any Sphinx extension module names here, as strings. They can be | 
				
			||||||
 | 
					# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom | 
				
			||||||
 | 
					# ones. | 
				
			||||||
 | 
					extensions = [ | 
				
			||||||
 | 
					    'sphinx.ext.autodoc', | 
				
			||||||
 | 
					    'sphinx_rtd_theme', | 
				
			||||||
 | 
					] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any paths that contain templates here, relative to this directory. | 
				
			||||||
 | 
					templates_path = ['_templates'] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# List of patterns, relative to source directory, that match files and | 
				
			||||||
 | 
					# directories to ignore when looking for source files. | 
				
			||||||
 | 
					# This pattern also affects html_static_path and html_extra_path. | 
				
			||||||
 | 
					exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Options for HTML output ------------------------------------------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The theme to use for HTML and HTML Help pages.  See the documentation for | 
				
			||||||
 | 
					# a list of builtin themes. | 
				
			||||||
 | 
					# | 
				
			||||||
 | 
					# html_theme = 'alabaster' | 
				
			||||||
 | 
					html_theme = 'sphinx_rtd_theme' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any paths that contain custom static files (such as style sheets) here, | 
				
			||||||
 | 
					# relative to this directory. They are copied after the builtin static files, | 
				
			||||||
 | 
					# so a file named "default.css" will overwrite the builtin "default.css". | 
				
			||||||
 | 
					html_static_path = ['_static'] | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					autodoc_default_options = { | 
				
			||||||
 | 
					    'member-order': 'bysource', | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,30 @@ | 
				
			|||||||
 | 
					Core Data Structures | 
				
			||||||
 | 
					==================== | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KyuPy provides two types of core data structures, one for gate-level circuits, and a few others for representing and storing logic data and signal values. | 
				
			||||||
 | 
					The data structures are designed to work together nicely with numpy arrays. | 
				
			||||||
 | 
					For example, all the nodes and connections in the circuit graph have numerical indices that can be used to access ndarrays with associated data. | 
				
			||||||
 | 
					Circuit graphs also define an ordering of inputs, outputs and other nodes to easily process test vector data and alike. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Module :mod:`kyupy.circuit` | 
				
			||||||
 | 
					--------------------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. automodule:: kyupy.circuit | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: kyupy.circuit.Node | 
				
			||||||
 | 
					   :members: | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: kyupy.circuit.Circuit | 
				
			||||||
 | 
					   :members: | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Logic Values and Arrays | 
				
			||||||
 | 
					----------------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. automodule:: kyupy.logic | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: kyupy.logic.MVArray | 
				
			||||||
 | 
					   :members: | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: kyupy.logic.BPArray | 
				
			||||||
 | 
					   :members: | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,12 @@ | 
				
			|||||||
 | 
					.. include:: ../README.rst | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					API Reference | 
				
			||||||
 | 
					------------- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. toctree:: | 
				
			||||||
 | 
					   :maxdepth: 2 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   datastructures | 
				
			||||||
 | 
					   parsers | 
				
			||||||
 | 
					   simulators | 
				
			||||||
 | 
					
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue