Giter Site home page Giter Site logo

cicconf's Introduction

Custom IC Creator Configuration tool

An integrated circuit (IC) will be a combination of multiple IPs. Each IP usually have different analog designer, but often the IPs depend on each other.

For each IP one must have version control, and revision control (tags), which is handled nicely by git as long as the files are not too large (or binary)

For the IC, though, one must have the ability to use a specific revision (tag) of an IP, but allow the IP development to continue. As such, it's not feasible to have everything in one repo.

In addition to IPs, it's common to have a toolset of scripts, and those also need to be in the correct revision. In the beginning of a development the tools and IPs might be to a main branch, but at tapeout, it's important to lock the revision, so it's easy to go back to a old IC and run new simulations.

I needed a configuration tool, one that can pick the IPs, and get the right versions from git repositories.

Disclamer: I have not spent much time searching whether there is a tool that fits my purpose, but cicconf was quick to write, and I get something that matches exactly what I want. One alternative is git submodules, but I find that more of a hassle.

Getting Started

Clone the repository, and do

cd cicconf
python3 -m pip install --user -e .

Idea

cicconf will search the current directory for a config.yaml file. An example config.yaml

 options:
  template:
      ip: tech_sky130B/cicconf/ip_template.yaml
  project: rply
  technology: sky130nm
cpdk:
  remote: [email protected]:wulffern/cpdk.git
  revision: main
tech_sky130B:
  remote: [email protected]:wulffern/tech_sky130B.git
  revision: main

The option section has some custom fields to tell cicconf how new IPs should be named. The ip_template contains the instructions for creating an IP, for example ip_template.yaml

The rest follows a simple pattern

<folder>:
 remote: <git url>
 revision: <git branch|tag|hash>

Running

Construct a config.yaml of your desire (see config.yaml for a more extensive example). Then run

cicconf clone

Usage

For latest command, check cicconf --help

Usage: cicconf [OPTIONS] COMMAND [ARGS]...

Options:
 --help  Show this message and exit.

Commands:
 clone   Clone repositories in config file
 newip   Create a new IP with name <project>_<name>_<technology> The...
 status  Report the status of each of the configured IPs
 update  Update all ips to correct branch according to config file

cicconf's People

Contributors

wulffern avatar

Stargazers

Thomas Dexter avatar  avatar

Watchers

 avatar Kostas Georgiou avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.