- Notifications
You must be signed in to change notification settings - Fork49
Pymtl 3 (Mamba), an open-source Python-based hardware generation, simulation, and verification framework
License
pymtl/pymtl3
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
PyMTL 3 (Mamba) is the latest version of PyMTL, an open-sourcePython-based hardware generation, simulation, and verification framework withmulti-level hardware modeling support. The original PyMTL was introducedat MICRO-47 in December, 2014. Please note that PyMTL 3 is currentlybeta software that is under active development and documentation iscurrently quite sparse.
In June 2019,Keeping Computer Hardware Fast and Furious: "PyMTL is a fantastic example of what we need to jump-start the open-source hardware ecosystem…It’s a key missing link." was featured on Cornell Research.
We recommend the user to post onhttps://groups.google.com/forum/#!forum/pymtl-users to ask questions about using PyMTL 3. The github issues are reserved for development purposes, e.g., bug reports and feature requests.
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.
Derek Lockhart, Gary Zibrat, and Christopher Batten."PyMTL: A Unified Framework for Vertically Integrated Computer Architecture Research." 47th ACM/IEEE Int'l Symp. on Microarchitecture (MICRO-47), Dec. 2014.
PyMTL is offered under the terms of the Open Source Initiative BSD3-Clause License. More information about this license can be found here:
The steps for installing these prerequisites and PyMTL on a fresh Ubuntudistribution are shown below. They have been tested with Ubuntu Xenial 18.04.
tl; drpip install pymtl3
PyMTL 3 requires Python 3.6+. We highly recommend you work inside avirtual environment instead of callingsudo pip install
. Starting from Python 3.5, the use of venv is now recommended for creating virtual environments.
$ cd <path to where venvs are stored> $ python3 -m venv pymtl3 # you can use whatever Python 3.6+ binary you have $ source pymtl3/bin/activate
PyMTL 3 needs to use cffi, so install these packages first.
$ sudo apt-get install git python-dev libffi-dev
PyMTL 3 is available on pypi.org. As a result, you are able to just callpip install pymtl3
to install PyMTL 3.
$ pip install pymtl3
When you relaunch the bash session, you need to re-enable the venv.
$ source <path to where venvs are stored>/pymtl3/bin/activate
When you're done testing/developing but you don't want to close the terminal, you can deactivate the virtualenv:
$ deactivate
Additional dependencies includeverilator
(andpkg-config
) when you want to integrate SystemVerilog blackbox into your PyMTL simulation.
Verilator is an open-source toolchain for compiling SystemVerilog RTLmodels into C++ simulators. You can install Verilator using thestandard package manager but the version available in the packagerepositories is several years old. This means you will need to build andinstall Verilator from source using the following commands:
$ sudo apt-get install git make autoconf g++ libfl-dev bison $ mkdir -p ${HOME}/src $ cd ${HOME}/src $ wget http://www.veripool.org/ftp/verilator-4.036.tgz $ tar -xzvf verilator-4.036.tgz $ cd verilator-4.036 $ ./configure $ make $ sudo make install
Verify that Verilator is on your path as follows:
$ cd $HOME $ which verilator $ verilator --version
PyMTL usespkg-config
to find the Verilator source files whenintegrating SystemVerilog blackbox. Installpkg-config
and verify that it is setup correctly as follows:
$ sudo apt-get install pkg-config $ pkg-config --print-variables verilator
Ifpkg-config
cannot find information about verilator, then you canalso explicitly set the following special environment variable:
$ export PYMTL_VERILATOR_INCLUDE_DIR="/usr/local/share/verilator/include"
About
Pymtl 3 (Mamba), an open-source Python-based hardware generation, simulation, and verification framework