Stefan Holst
4 years ago
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