GithubHelp home page GithubHelp logo

idea-fasoc / fasoc Goto Github PK

View Code? Open in Web Editor NEW
52.0 9.0 13.0 3.16 MB

License: MIT License

Makefile 1.08% Python 44.89% Verilog 21.71% SystemVerilog 29.00% Tcl 0.18% Shell 0.26% Ruby 1.98% NASL 0.18% TypeScript 0.20% SourcePawn 0.44% Coq 0.01% Forth 0.06%

fasoc's Introduction

FASoC: Fully-Autonomous SoC Synthesis using Customizable Cell-Based Synthesizable Analog Circuits

The FASoC Program is focused on developing a complete system-on-chip (SoC) synthesis tool from user specification to GDSII. See more on our website.

FASoC tool can be operated in three modes, "Verilog", "Macro" and "Full" modes.

Verilog Generation Mode

The provided generators can generate fully synthesizable verilog products using the user input specification file. The generated verilog will be derived from pre-characterized modules. Future releases of the tool will also generate a human readable constraint guidance that will aid in maximizing post layout design performance.

Macro/Full Generation Mode

The macro generation mode will generate hard macros in addition to the verilog. These hard macros are synthesized and implemented versions of the verilog output using recommended constraints and physical guidance. This mode will require the commercial tools, access to the standard/cells, PDK and other tools. It will also require an automated flow (cadre flow) as well as several private files that are restricted due to NDA requirements.

Setup instructions

  1. Tool requirements:

    • General: Python 3.6/3.7 (packages getopt, math, numpy, os, re, shutil, subprocess, sys, smtplib, datetime, logging, matplotlib). Python versions below 3.6 are not supported.
    • Cadre Flow:
      • Synopsys Library Compiler (2018.06)
      • Synopsys Design Compiler (2018.06) (Cadence Genus v18.10 can also be used for LDO-GEN & PLL-GEN)
      • Quantus QRC extraction (15.23.000)
      • Cadence Innovus (v18.10)
      • Synopsys Primetime (2018.06)
      • Mentor Graphics Calibre (2019.3_25)
    • Synopsys HSPICE (2017.03-SP1)
    • Cadence Liberate (16.1.1.132)
    • Cadence Spectre (15.1.0)

    Newer versions of the tools are expected, but not guaranteed to work.

  2. Run the environment checker script to ensure all the tools are setup

    make check_env
  3. Ensure you have access to the required private repository for FASoC. Please contact [email protected] if you need access

  4. Ensure you have ssh keys setup for github. Instructions for generating and adding ssh keys can be found here.

  5. Clone the FASoC repository

    git clone [email protected]:idea-fasoc/fasoc.git
  6. Initialize the submodules

    cd fasoc
    git submodule update --init --recursive
  7. Setup the cadre flow to for your specific location. The "Macro/Full" modes currently requires TSMC65LP PDK and ARM standard cells. More instructions on how to setup this particular platform can be found in the Cadre Flow Guide

  8. Change directory to the generator of interest and follow instructions in the readme

Citation

If you find this tool useful in your research, we kindly request to cite our paper:

  • T. Ajayi et al., “An open-source framework for autonomous soc design with analog block generation,” in 2020 IFIP/IEEE 28th International Conference on Very Large Scale Integration (VLSI-SOC). IEEE, 2020.

  • @inproceedings{ajayi2020open,
    title={An open-source framework for autonomous SoC design with analog block generation},
    author={Ajayi, Tutu and Kamineni, Sumanth and Cherivirala, Yaswanth K and Fayazi, Morteza and Kwon, Kyumin and Saligane, Mehdi and Gupta, Shourya and Chen, Chien-Hen and Sylvester, Dennis and Blaauw, David and others},
    booktitle={2020 IFIP/IEEE 28th International Conference on Very Large Scale Integration (VLSI-SOC)},
    pages={141--146},
    year={2020},
    organization={IEEE}}

fasoc's People

Contributors

kmkwon avatar mortezafayazi avatar msaligane avatar sumanthkk avatar tajayi avatar ycherivirala avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fasoc's Issues

Naming Discrepancy Between GF180MCU OpenPDK Releases

Description

In the earlier releases of the PDK (e.g. 3af133706e554a740cfe60f21e773d9eaa41838c), the naming conventions are kept the same with the commercial release. However, in newer releases the names are modified to be consistent with the previous SKY130 OpenPDK.

Investigation

In release 3af133706e554a740cfe60f21e773d9eaa41838c (2022-11-08)

The names are consistent with that in the commercial PDK release

MOS transistors are: nmos_3p3, pmos_6p0, …
Metal Names are: Metal1, Metal2, …

In newer OpenPDK releases:

MOS transistors are: nfet_03v3, pfet_06v0
Metal Names are: M1, M2, …

Issue

This discrepancy causes some issue when tools from different worlds are used together:

  • LVS is problematic because the name differences. The transistor names need to be modified manually.
  • The OpenLane Docker image released with GFMPW-0 is nolonger working. I used the older version of the PDK to do digital synthesis.

Link

google doc

dcdc_gen

Is it some issue in the folder create part, as it will not create the simulation folder by itself

image

LDO_gen full mode issue

I was using calibre/2019.3_25 when "make gen_12lp_full" but it didn't generate ldo.pex.netlist which cause the post pex simulation not working. I changed to calibre/2020.3_38.22_aoj and solved the issue.

check_env.py small bugs

There are some small bugs on the check_env, I am getting errors for checking python version and other cadence tools. And there should be some check for the python libraries like numpy and so on. So just have that updated.

cdc_gen hspice not found

I have checked the private folder, and there is no hspice there, is that some linkage problem

image

adc_gen cell cannot find problem

When I run adc_gen tsmc65lp macro mode, and this is some error, and I have checked the folder, I have also attached the result in the picture

adc_gen_problem

Using lower case

Based on what we have discussed, we will use the lower case letters for our final outputs.
Memory:
So, would you please change "Power" to "power" and AspectRatio to "aspect_ratio" in the mem-gen output json file?
PLL:
would you please change "Fnom_min" to "fnom_min", "Fnom_max" to "Fnom_max" and "aspect ratio" to "aspect_ratio" in the pll-gen output json file?

correct-by-construction never defined?

The page @ https://fasoc.engin.umich.edu/ says;

automatically synthesize “correct-by-construction” Verilog descriptions

There doesn't seem to be any definition about what you mean by “correct-by-construction” nor how your guarantee that result? Since it seems to be a core principle, I would have expected it to be clearly described + defined somewhere?

Readme requirements unclear?

The README file says the following;

Requirements: Python 3.6/3.7 (packages getopt, math, numpy, os, re, shutil, subprocess, sys, smtplib, datetime, logging, matplotlib). Python 3 is not supported.

I assume that last sentence should be Python 2 is not supported?

platform extension

As I am currently struggling to update config files and generate new Aux-cell using other PDKs, I was wondering if the source of the "AUXCELL_GEN" tool is available somewhere.
image
Further, I was wondering how could I extend the platform from tsmc65lp to my own PDKs(like tsmc130). And I would appreciate any help.
Best regards.

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.