Giter Site home page Giter Site logo

cocoon's Introduction

Cocoon: An Infrastructure for Integrated EDA

Cocoon is an open-source infrastructure for integrated EDA with interoperability and interactivity. It contains a set of cross-tool interfaces and plays the role of EDA agent that can help IC designers choose EDA point tools to assemble a legal design flow and to produce ICs with a higher quality of results (QoR). It can also help EDA researchers and tool developer research new design methodology and cross-stage optimization. Below are key features of Cocoon:

  • Agile RTL-to-GDSII frontend and backend VLSI flow generation.
  • Completely user-defined tech library, component EDA tool and design constraints.
  • Multi-flow parallelism and automatic iterative circuit timing optimization.

Cocoon Architecture

avatar

Dependency

  • Python3
  • Genus or Yosys
  • Innovus
  • DREAMPlace (optional)
  • JDK 8+ and sbt (optional)

Setup

  • Clone this repo:
    git clone https://github.com/pku-dasys/cocoon.git
  • If you are going to use DREAMPlace and yosys in your flow, pull git submodules in the root directory. Then solve their own dependencies.
    git submodule init
    git submodule update
    Or alternatively, pull all the submodules when cloning the repo.
    git clone --recursive https://github.com/pku-dasys/cocoon.git
  • Build DREAMPlace (optional):
    cd ./thirdparty/DREAMPlace/
    mkdir build 
    cd build/ 
    cmake .. -DCMAKE_INSTALL_PREFIX=../install
    make 
    make install
  • Build yosys (optional):
    cd ./thirdparty/yosys/
    mkdir build
    cd build/
    make -f ../Makefile

Basic Usage

Once you have installed the previous required dependencies, you can run Cocoon from the command line using your customized configuration file in INI format.

Three demo configurations demo/config.sample1.ini, demo/config.sample2.ini, demo/config.sample3.ini are provided, where your can find detailed description of user-defined options from the comments. Here's an example of 2 parallel flows.

[gcd]
# Design settings
design_name = gcd
is_Chisel_design = False
rtl_input = ./gcd/gcd.v
Chisel_input = 
result_dir = ../results/
clk_name = clk
delay = 1000

# Library settings
lib_name = gscl45nm
lef_input = ./lib/gscl45nm.lef
liberty_input = ./lib/gscl45nm.lib

# Flow settings
flow = {'synth':'yosys', 'placement':'dreamplace', 'routing':'innovus'}
n_iter_IFT = 0
verbose = False
cadence_version = 19


[ALU(Chisel)]
# Design settings
design_name = AluTop
is_Chisel_design = True
rtl_input = 
Chisel_input = ./alu-chisel/
result_dir = ../results/
clk_name = clk
delay = 1000

# Library settings
lib_name = gscl45nm
lef_input = ./lib/gscl45nm.lef
liberty_input = ./lib/gscl45nm.lib

# Flow settings
flow = {'synth':'genus', 'placement':'innovus', 'routing':'innovus'}
n_iter_IFT = 0
verbose = False
cadence_version = 19

You can directly run with the sample configurations with the demo designs, gcd (Verilog) and ALU (Chisel), together with the open-source FreePDK45nm library we provide in ./demo/. For example:

cd cocoon/
python run.py ./demo/config.sample1.ini

With correctly customized configuration, you can run your own flow by executing:

cd cocoon/
python run.py /Path/to/your/config.ini

Ongoing work

  • Integrate more EDA tools
  • Efficient resource scheduling
  • Legality check (LVS, DRC, etc.) and post-simulation (e.g. timing, power)
  • Support design-space search and optimization

Related works

Publication

If you use cocoon in your research, please cite our WOSET'20 paper: Jiaxi Zhang, Tuo Dai, Zhengzheng Ma, Yibo Lin, Guojie Luo, "Cocoon: An Open Source Infrastructure for Integrated EDA with Interoperability and Interactivity", Workshop on Open-Source EDA Technology (WOSET), November 2020.

@article{zhang-cocoon-woset2020,
  title   = "{Cocoon: An Open Source Infrastructure for Integrated EDA with Interoperability and Interactivity}",
  author  = {Jiaxi Zhang and Tuo Dai and Zhengzheng Ma and Yibo Lin and Guojie Luo}
  journal = {Workshop on Open-Source EDA Technology (WOSET)},
  month   = {Nov},
  year    = {2020},
}

cocoon's People

Contributors

xinming-wei avatar pkuzjx avatar daitoto avatar luoguojie 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.