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"