Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/magical-eda/MAGICAL
Machine Generated Analog IC Layout
https://github.com/magical-eda/MAGICAL
Last synced: 14 days ago
JSON representation
Machine Generated Analog IC Layout
- Host: GitHub
- URL: https://github.com/magical-eda/MAGICAL
- Owner: magical-eda
- License: bsd-3-clause
- Created: 2019-03-06T21:12:55.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-04-24T20:14:21.000Z (7 months ago)
- Last Synced: 2024-07-31T19:17:55.950Z (3 months ago)
- Language: C++
- Size: 21.4 MB
- Stars: 208
- Watchers: 14
- Forks: 51
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-opensource-hardware - magical
README
# 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
- Refer to [Dockerfile](https://github.com/magical-eda/MAGICAL/blob/docker/Dockerfile).- [Boost](https://www.boost.org)
- Need to install and visible for linking. Required version at least 1.62.- [Flex](https://github.com/westes/flex)
- Need to install, required by Limbo package- [Zlib](https://www.zlib.net)
- Required by Limbo package- [Limbo](https://github.com/limbo018/Limbo)
- Required latest- [LPSolve 5.5](http://lpsolve.sourceforge.net/5.5/)
- Required version 5.5- [Lemon 1.3.1](https://lemon.cs.elte.hu/trac/lemon)
- 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](https://hub.docker.com). 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](https://docs.docker.com/install/).
2. Navigate to the repository.
```
cd MAGICAL
```
3. Get the docker container with either of the following options.
- Option 1 (Recommended): pull from the cloud [jayl940712/magical](https://hub.docker.com/r/jayl940712/magical).
```
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 otaTo 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.symSample 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](https://github.com/magical-eda/MAGICAL/blob/master/LICENSE)