{"id":13399046,"url":"https://github.com/magical-eda/MAGICAL","last_synced_at":"2025-03-14T03:31:04.928Z","repository":{"id":47155009,"uuid":"174222055","full_name":"magical-eda/MAGICAL","owner":"magical-eda","description":"Machine Generated Analog IC Layout","archived":false,"fork":false,"pushed_at":"2024-04-24T20:14:21.000Z","size":22406,"stargazers_count":208,"open_issues_count":17,"forks_count":51,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-07-31T19:17:55.950Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magical-eda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-06T21:12:55.000Z","updated_at":"2024-07-13T08:06:56.000Z","dependencies_parsed_at":"2022-07-22T22:32:14.032Z","dependency_job_id":null,"html_url":"https://github.com/magical-eda/MAGICAL","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magical-eda%2FMAGICAL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magical-eda%2FMAGICAL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magical-eda%2FMAGICAL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magical-eda%2FMAGICAL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magical-eda","download_url":"https://codeload.github.com/magical-eda/MAGICAL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221432682,"owners_count":16820058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T19:00:33.707Z","updated_at":"2024-10-25T14:32:22.338Z","avatar_url":"https://github.com/magical-eda.png","language":"C++","funding_links":[],"categories":["Projects (sorted by year)","Layout Compilers"],"sub_categories":["2019"],"readme":"# MAGICAL #\n\nMAGICAL: Machine Generated Analog IC Layout\n\nThis 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.\n\nThis project is currently still under active development.\n\n# Dependency #\n\n- Python 3.7 and additional packages\n    - Refer to [Dockerfile](https://github.com/magical-eda/MAGICAL/blob/docker/Dockerfile).\n\n- [Boost](https://www.boost.org)\n    - Need to install and visible for linking. Required version at least 1.62.\n\n- [Flex](https://github.com/westes/flex)\n    - Need to install, required by Limbo package\n\n- [Zlib](https://www.zlib.net)\n    - Required by Limbo package\n\n- [Limbo](https://github.com/limbo018/Limbo)\n    - Required latest\n\n- [LPSolve 5.5](http://lpsolve.sourceforge.net/5.5/)\n    - Required version 5.5\n\n- [Lemon 1.3.1](https://lemon.cs.elte.hu/trac/lemon)\n    - Required version 1.3.1\n\n\n# How to clone #\n\nTo clone the repository and submodules, go to the path to download the repository. \n```\n# clone the repository \ngit clone https://github.com/magical-eda/MAGICAL.git\ngit submodule init\ngit submodule update\n```\n\n# How to build #\n\nTwo 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.\n\n## Build with Docker\n\nYou can use the Docker container to avoid building all the dependencies yourself. \n1. Install Docker on [Linux](https://docs.docker.com/install/).\n2. Navigate to the repository. \n    ```\n    cd MAGICAL\n    ```\n3. Get the docker container with either of the following options. \n    - Option 1 (Recommended): pull from the cloud  [jayl940712/magical](https://hub.docker.com/r/jayl940712/magical). \n    ```\n    docker pull jayl940712/magical:latest\n    ```\n    - Option 2: build the container. \n    ```\n    docker build . --file Dockerfile --tag magical:latest\n    ```\n4. Run the docker container\n    ```\n    docker run -it -v $(pwd):/MAGICAL jayl940712/magical:latest bash\n    ```\n    Or if you used option 2 to build the container\n    ```\n    docker run -it -v $(pwd):/MAGICAL magical:latest bash\n    ```\n# How to run #\n\nBenchmark circuit examples are under examples/\n\nAll technology related parameters including benchmark circuit sizing are samples and not related to any proprietary PDK information.\n\nBenchmark circuits currently includes:\n1 adc, 1 comparator, 3 ota\n\nTo run the benchmark circuits\n```\ncd /MAGICAL/examples/BENCH/ (ex. adc1)\nsource run.sh\n```\n\nThe output layout gdsii files: BENCH/TOP_CIRCUIT.route.gds (ex. adc1/xxx.route.gds)\n\nNote: currently adc2 have routing issues.\n\n# Custom layout constraint inputs #\n\nThe 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. \n\nA 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.\n\nSample symmetry device constraint file:\nexamples/adc1/CTDSM_TOP.sym\n\nSample symmetry net constraint file:\nexamples/adc1/CTDSM_TOP.symnet\n\n## Device symmetry constraints\n\nDevice 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.\n\n**Symmetry group**: A group of symmetry device pairs and self-symmetric devices that share the same symmetry axis.\n\n**Symmetry device pair**: Two devices that are reflection symmetric with respect to a symmetry axis (usually vertical).\n\n**Self-symmetry device**: A single device that is reflection symmetric with itself respect to a symmetry axis.\n\n## Net symmetry constraints\n\nSimilar to device symmetry constraints, we consider symmetry net pairs and self-symmetry net constraints. \n\n**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.\n\n**Self-symmetry net**: A single net that is reflection symmetric with itself respect to a symmetry axis.\n\n# License #\n[BSD 3-Clause](https://github.com/magical-eda/MAGICAL/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagical-eda%2FMAGICAL","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagical-eda%2FMAGICAL","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagical-eda%2FMAGICAL/lists"}