Skip to content

Projects

Viper projects organize the development of a related set of circuits, most commonly for a specific chip tape-out or a set of standard IP. They allow the configuration of a project work area to be declared in a project.toml configuration file. Then some of this configuration is made available as environment variables.

Advantage:

  • multi-process: Each project can support multiple libraries with each library defining its own process
  • declarative configuration: the project configuration is defined in a pyproject.toml or viper.toml file located in the root folder of the project repo.

Directory Structure

Each project is created in a folder named after the project in the project root directory. This is set using the "default_project_root" setting and defaults to the parent directory of the project.

Example Directory tree

An example directory structure for a "bandgaps" project:

bandgaps
├── bandgap_sky130_01     # A library in the Skywater sky130 process
│   ├── controller
│   │   ├── **/*.css
│   ├── views
│   ├── model
│   ├── index.js
├── bandgap_mcu180_01    # A library in the GF MCU180 process
│   ├── css
│   │   ├── **/*.css
│   ├── images
│   ├── js
│   ├── index.html
├── pyproject.toml
└── .gitignore

Project Configuration

The project's configuration is defined in a "pyproject.toml" or "viper.toml" in the root directory of the repo.

Example Config File

This example is for the same bandgap project.

name = "bandgaps"
version = "0.1.0"
authors = [
   {name="Curtis Mayberry", email="Curtisma3@gmail.com"},
   {name="Yulin Deng", email=""},
   {name="Thomas Pluck", email=""},
]
readme = "README.md"
license = {file="LICENSE"}
description = "A bandgap circuit in the Skywater SKY130 process"
keywords = ["hardware", "analog"]
requires-python = ">=3.8"
classifiers = [
    "Topic :: System :: Hardware",
    "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: POSIX :: Linux",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
]

[project.urls]
"Home" = "https://github.com/cascode-labs/bandgapReferenceCircuit"
"Documentation" = "https://github.com/cascode-labs/bandgapReferenceCircuit"
"Source" = "https://github.com/cascode-labs/bandgapReferenceCircuit"

[tool.viper.process]
foundry = "Skywater"
process = "SKY130"