Skip to main content

PyMTL3-Net: an open-source Python-based framework for modeling, testing, and evaluating on-chip interconnection networks

Project description

=======================================
    ____        ____  _______   __
   / __ \__  __/ __ \/ ____/ | / /
  / /_/ / / / / / / / /   /  |/ /
 / ____/ /_/ / /_/ / /___/ /|  /
/_/    \__, /\____/\____/_/ |_/
      /____/
=======================================

Build Status

PyOCN (PyMTL-OCN Generator) is a parameterizable and powerful OCN (on-chip network) generator to generate synthesizable Verilog for different OCNs based on user-specified configurations (e.g., network size, topology, number of virtual channels, routing strategy, switching arbitration, etc.). It comes with PyMTL implementation and is the first one to provide functional-level (FL), cycle-level (CL), and register-transfer-level (RTL) modeling for building OCNs. Furthermore, POSH OCN Generator is open-source with a modular design and standardized interfaces between modules. The configurability and extensibility are maximized by its parametrization system to fit in various research and industrial needs.

Demo

We have a demo at repl.it (https://repl.it/@ChengTan/pymtl3-net-demo), which shows the key features of PyOCN.

Related publications

  • Cheng Tan, Yanghui Ou, Shunning Jiang, Peitian Pan, Christopher Torng, Shady Agwa, and Christopher Batten. "PyOCN: A Unified Framework for Modeling, Testing, and Evaluating On-Chip Networks." 37th IEEE International Conference on Computer Design. (ICCD-37), Nov 2019.

  • Shunning Jiang, Christopher Torng, and Christopher Batten. "An Open-Source Python-Based Hardware Generation, Simulation, and Verification Framework." First Workshop on Open-Source EDA Technology (WOSET'18) held in conjunction with ICCAD-37, Nov. 2018.

  • Shunning Jiang, Berkin Ilbeyi, and Christopher Batten. "Mamba: Closing the Performance Gap in Productive Hardware Development Frameworks." 55th ACM/IEEE Design Automation Conf. (DAC-55), June 2018.

License

PyOCN is offered under the terms of the Open Source Initiative BSD 3-Clause License. More information about this license can be found here:

Installation

PyOCN requires Python3.7 and has the following additional prerequisites:

  • graphviz, verilator
  • git, Python headers, and libffi
  • virtualenv
  • PyMTL3

The steps for installing these prerequisites and PyOCN on a fresh Ubuntu distribution are shown below. They have been tested with Ubuntu Trusty 14.04.

Install python3

 % sudo apt-get install python3.7

Install graphviz

 % sudo apt-get install -y graphviz

Install Verilator

Verilator is an open-source toolchain for compiling Verilog RTL models into C++ simulators. PyOCN uses Verilator for Verilog import.

 % wget https://github.com/cornell-brg/verilator-travisci-cache/raw/master/verilator-travis-4.008.tar.gz
 % tar -C ${HOME} -xzf verilator-travis-4.008.tar.gz
 % export VERILATOR_ROOT=${HOME}/verilator
 % export PATH=${VERILATOR_ROOT}/bin:${PATH}
 % export PYMTL_VERILATOR_INCLUDE_DIR=${VERILATOR_ROOT}/share/verilator/include
 % verilator --version

Install git, Python headers, and libffi

We need to install the Python headers and libffi in order to be able to install the cffi Python package. cffi provides an elegant way to call C functions from Python, and PyMTL uses cffi to call C code generated by Verilator. We will use git to grab the PyMTL source. The following commands will install the appropriate packages:

 % sudo apt-get install git python-dev libffi-dev

Create virtual environment

While not strictly necessary, we strongly recommend using virtualenv to install PyMTL3 and the Python packages that PyMTL3 depends on. virtualenv enables creating isolated Python environments. The following commands will create and activate the virtual environment:

 % python3 -m venv ${HOME}/venv
 % source ${HOME}/venv/bin/activate

Install PyMTL3 and Python requirements

 % pip install pymtl3
 % pip install --upgrade pip setuptools twine
 % pip install --requirement requirements.txt
 % pip list

Clone PyOCN repo

We can now use git to clone the PyOCN repo.

 % mkdir -p ${HOME}/cornell-brg
 % cd ${HOME}/cornell-brg
 % git clone --depth=50 https://github.com/cornell-brg/posh-ocn.git cornell-brg/posh-ocn

When you're done testing/developing, you can deactivate the virtualenv::

 % deactivate

Quickview

OCN generator hierarchy:

Test with a set of simple tests:

test table

OCN generator design flow:

Generic network architecture:

OCN generic router architecture:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymtl3-net-0.1.5.tar.gz (49.2 kB view details)

Uploaded Source

Built Distribution

pymtl3_net-0.1.5-py3-none-any.whl (89.1 kB view details)

Uploaded Python 3

File details

Details for the file pymtl3-net-0.1.5.tar.gz.

File metadata

  • Download URL: pymtl3-net-0.1.5.tar.gz
  • Upload date:
  • Size: 49.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for pymtl3-net-0.1.5.tar.gz
Algorithm Hash digest
SHA256 28da389f9c5d1b6a45adaf8c40316cc21447c918fddbad954509a2720479c062
MD5 e5e347965e740196fb7553797a6a2958
BLAKE2b-256 eb4ec2a25817b62e96826756e4ec655d1f9e41c5be0e5411c9f8f0fa9071cbc0

See more details on using hashes here.

Provenance

File details

Details for the file pymtl3_net-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: pymtl3_net-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 89.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for pymtl3_net-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 079f718769ac049321013ca57abdd6ae387311069ad6848d2318719dceb44883
MD5 538aad92e6f600b38c579229078b7871
BLAKE2b-256 c322e4560030174ccaa8aa1e81534524fbe1c89d56dc91855ae463b514b6d1a9

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page