Go to file
Xinming Wei 214bb70b4e
Update README.md
2022-01-05 18:00:48 +08:00
demo update sample config 2022-01-05 17:55:42 +08:00
image update image 2021-12-21 16:30:19 +08:00
ops fix bugs 2022-01-05 16:17:53 +08:00
.gitignore support multi-flow 2022-01-04 12:08:06 +08:00
README.md Update README.md 2022-01-05 18:00:48 +08:00
__init__.py add initial version 2020-08-01 21:04:50 +08:00
config.py support cadence15 2022-01-05 13:42:35 +08:00
designcfg.py support multi-flow 2022-01-04 12:08:06 +08:00
engine.py fix bugs 2022-01-05 16:17:53 +08:00
flow.py support cadence15 2022-01-05 13:42:35 +08:00
run.py support multi-flow 2022-01-04 12:08:06 +08:00
util.py support input config 2021-12-18 20:05:33 +08:00

README.md

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)

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.

A demo configuration demo/config.sample.ini is provided, where your can find detailed description of user-defined options from the comments. Here's an example of a single flow:

[flow_No.1]
# Design settings
design_name = your_design_topmodule_name
is_Chisel_design = True
rtl_input = /Path/to/verilog/file
Chisel_input = /Path/to/Chisel/project/
result_dir = /Path/to/result/dir/
clk_name = clk
delay = 1000

# Library settings
lib_name = your_lib_name
lef_input = /Path/to/library/foo.lef
liberty_input = /Path/to/library/bar.lib

# External toolkit settings
cadence_version = 19
dreamplace_bin_path = /Path/to/DREAMPlace/install/dreamplace/Placer.py
yosys_bin_path = /Path/to/yosys/build/

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

You can then run your design 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

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},
}