Skip to main content

An open source, parameterized SystemVerilog hardware IP library

Project description

LibSV
PyPI https://github.com/bensampson5/libsv/actions/workflows/ci.yml/badge.svg Documentation Status

Welcome to LibSV! Click here to go to LibSV’s documentation.

LibSV is an open source, parameterized SystemVerilog digital hardware IP library. While similar libraries may already exist, LibSV is unique in that it takes advantage of open-source, state-of-the-art development best practices and tools from across the software and digital design community, including:

Getting Started

LibSV is very easy to use. First, install the libsv package from PyPI:

pip install libsv

We recommend using a Python virtual environment so that the installation is project-specific and isolated from the rest of your system.

Then add the site-packages/ folder, where LibSV was just installed, to your include path when building your project so that your design tools can find LibSV.

Finally, at the top of your design file where you want to use LibSV modules, for each module you want to use, add:

`include "libsv/<path>/<to>/<module>.sv"

Running Testbenches

Running the LibSV testbenches require Cocotb, Verilator, and a number of other dependencies to be installed. Instead of trying to install everything manually on your machine, the easier and recommended way to run the LibSV testbenches is to use the pre-built LibSV Docker images on Docker Hub that have the complete set of LibSV developer tools already installed.

To use a LibSV Docker image, first you’ll need to install Docker, if you don’t already have it.

Next, pull the latest LibSV Docker image:

docker build --pull -f Dockerfile.dev \
  --build-arg UID=$(id -u) \
  --build-arg GID=$(id -g) \
  -t libsv .

Then, start a new Docker container using the LibSV image and mount the project folder to the container:

docker run --rm -it -v $(pwd):/code libsv

Finally, within the Docker container, run pytest:

pytest

This will run all the LibSV testbenches for the entire library (Warning: This may take a while!).

Instead, to list all the available LibSV testbenches, run:

pytest --co

Then, you can run an individual or subset of testbenches using the -k flag which will only run tests which match the given substring expression:

pytest -k EXPRESSION

Each testbench generates an associated .fst waveform file that is written to the build/ directory and can be viewed using GTKWave.

Bugs/Feature Requests

Please use LibSV’s GitHub issue tracker to submit bugs or request features.

Contributing

Contributions are much welcomed and appreciated! Take a look at the Contributing page to get started.

License

Distributed under the terms of the MIT license, LibSV is free and open source software.

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

libsv-0.2.1.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

libsv-0.2.1-py3-none-any.whl (36.5 kB view details)

Uploaded Python 3

File details

Details for the file libsv-0.2.1.tar.gz.

File metadata

  • Download URL: libsv-0.2.1.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for libsv-0.2.1.tar.gz
Algorithm Hash digest
SHA256 548ece92712faac2919a897842a12436d106e9cebac3eb4038dcb127aeeb1445
MD5 305e2547c1ec4f824dbf5998adc01c82
BLAKE2b-256 17cb29805c22ce14f574f8276d81b5c208903d47c2a7fdf41e102f5a8f7f1936

See more details on using hashes here.

File details

Details for the file libsv-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: libsv-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 36.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for libsv-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 719efa616bc28c9304ab150d2fa64eaa2312aa791dd7e0c4879dae3102f13ab8
MD5 8c011a40f6962a41d8f689d0377b59ca
BLAKE2b-256 aeffaf025085ed4aa440a7b71d752ec41c27b1e5f201ef415833be5ead38b5c8

See more details on using hashes here.

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