Coder Social home page Coder Social logo

krzhu / magical Goto Github PK

View Code? Open in Web Editor NEW

This project forked from magical-eda/magical

1.0 0.0 0.0 21.89 MB

Machine Generated Analog IC Layout

License: BSD 3-Clause "New" or "Revised" License

Shell 0.04% C++ 57.63% Python 38.51% C 0.25% CMake 1.65% Cython 0.75% Dockerfile 1.16%

magical's Introduction

MAGICAL

MAGICAL: Machine Generated Analog IC Layout

This is the top-level MAGICAL flow repository. In MAGICAL, we maintain seperate components, such as constraint generation, placement and routing, in different repository. And we integrate each component through top-level python flow.

This project is currently still under active development.

Dependency

  • Python 3.7 and additional packages

  • Boost

    • Need to install and visible for linking. Required version at least 1.62.
  • Flex

    • Need to install, required by Limbo package
  • Zlib

    • Required by Limbo package
  • Limbo

    • Required latest
  • LPSolve 5.5

    • Required version 5.5
  • Lemon 1.3.1

    • Required version 1.3.1

How to clone

To clone the repository and submodules, go to the path to download the repository.

# clone the repository 
git clone https://github.com/magical-eda/MAGICAL.git
git submodule init
git submodule update

How to build

Two options are provided for building: with and without Docker. You can also build from source (NOT RECOMMENDED) resolving the required dependancies first.

Build with Docker

You can use the Docker container to avoid building all the dependencies yourself.

  1. Install Docker on Linux.
  2. Navigate to the repository.
    cd MAGICAL
    
  3. Get the docker container with either of the following options.
    docker pull jayl940712/magical:latest
    
    • Option 2: build the container.
    docker build . --file Dockerfile --tag magical:latest
    
  4. Run the docker container
    docker run -it -v $(pwd):/MAGICAL jayl940712/magical:latest bash
    
    Or if you used option 2 to build the container
    docker run -it -v $(pwd):/MAGICAL magical:latest bash
    

How to run

Benchmark circuit examples are under examples/

All technology related parameters including benchmark circuit sizing are samples and not related to any proprietary PDK information.

Benchmark circuits currently includes: 1 adc, 1 comparator, 3 ota

To run the benchmark circuits

cd /MAGICAL/examples/BENCH/ (ex. adc1)
source run.sh

The output layout gdsii files: BENCH/TOP_CIRCUIT.route.gds (ex. adc1/xxx.route.gds)

Note: currently adc2 have routing issues.

Custom layout constraint inputs

The automatic symmetry constraint generation is currently embedded into the flow. To ensure circuit functionality it is ideal that designers provide constraints to guide the placement and routing.

A sample device and net symmetry constraint is given for adc1. These files should also be the output for the current automatic symmetry constraint generation flow.

Sample symmetry device constraint file: examples/adc1/CTDSM_TOP.sym

Sample symmetry net constraint file: examples/adc1/CTDSM_TOP.symnet

Device symmetry constraints

Device symmetry constraints greatly affect the placement solution and output layout quality. Currently we only consider symmetry groups, symmetry device pairs and self-symmetric device constraints.

Symmetry group: A group of symmetry device pairs and self-symmetric devices that share the same symmetry axis.

Symmetry device pair: Two devices that are reflection symmetric with respect to a symmetry axis (usually vertical).

Self-symmetry device: A single device that is reflection symmetric with itself respect to a symmetry axis.

Net symmetry constraints

Similar to device symmetry constraints, we consider symmetry net pairs and self-symmetry net constraints.

Symmetry net pair: Two nets that are reflection symmetric with respect to a symmetry axis (usually vertical). For a valid constraint, the corresponding pins of the two nets must be reflective symmetric with a axix.

Self-symmetry net: A single net that is reflection symmetric with itself respect to a symmetry axis.

License

BSD 3-Clause

magical's People

Contributors

krzhu avatar jayl940712 avatar limbo018 avatar baloneymath avatar hecatephy avatar

Stargazers

YifanShoe 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.