Giter Site home page Giter Site logo

autocraft's Introduction

AutoCRAFT: Layout Automation for Custom Circuits in Advanced FinFET Technologies

AutoCRAFT is a semi-automated custom layout framework to improve the productivity of analog and high-speed custom digital circuit layout implementation. AutoCRAFT has been developed and tested on x64 linux machines.

Modules Overview

AutoCRAFT
|---- Circuit
|     |---- Placement grid
|     |---- Routing grid
|     |---- Device mapping
|     |---- Primitive lib
|     |---- Region
|     |---- Cell
|     |     |---- Pin
|     |     |---- Obs (obstacle)
|     |---- Net
|     |     |---- Pin
|     |     |---- Via
|     |     |---- Wire
|     |     |---- TopoTree
|     |     |---- Routable
|     |---- Layer
|     |     |---- Metal layer
|     |     |---- Cut layer
|     |---- Cstr (Constraint)
|           |---- Placement cstr
|           |     |---- Net weighting
|           |     |---- Array
|           |     |---- Alignment (row/col)
|           |     |---- Cluster
|           |     |---- Disjoint (row/col)
|           |     |---- Edge distance (to left/right/top/bottom boundaries)
|           |     |---- Extension
|           |     |---- Row (odd/even)
|           |     |---- Symmetry
|           |     |---- Pre-placed cell
|           |---- Routing cstr
|                 |---- Symmetry
|                 |---- Path matching (developing)
|---- Placer
|     |---- SMT placer
|---- Router
|     |---- Global routing manager (deprecated)
|     |---- Detailed routing manager
|     |     |---- Path searching detailed router
|     |---- Post routing
|---- I/O
      |---- Parser
      |     |---- LEF primitive templates parser
      |     |---- Hspice netlist parser
      |     |---- Grid file parser
      |     |---- Constraint file parser
     

Dependencies

Installation

Recommended GCC version: >= 8.3.0 (Tested on 8.3.0)

mkdir -p cpp/build/ && cd cpp/build/
cmake .. -DPYTHON_EXECUTABLE=<path to python> -DPYTHON_LIBRARY=<path to python lib>
make

A binary executable autocraftE and a python library autocraft.cpython-3x-x86_64-linux-gnu.so will be generated after compilation. Copy the file to your python site-packages path by

cp autocraft.cpython-3x-x86_64-linux-gnu.so <your site-packages path>

or put it under the path with the files importing autocraft.

Usage

Using the Python interface is recommended. The binary executable autocraftE can still be used for debugging purpose. Run

autocraftE [OPTION...]
    --laygo_config=<file>       # laygo configuration (.yml)
    --tech_grid=<file>          # placement anf routing grids definition (.yml)
    --tech_map=<file>           # device-to-primitive mapping (.yml)
    --constraint=<file>         # constraint specification
    --lef=<files>               # primitive and via templates (.lef)
    --netlist=<file>            # spice netlist (.cir)
    --drc=<file>                # abstracted drc rules (.yml)
    --in_place=<file>           # placement input (optional)
    --out_place=<file>          # cells location after placement (optional)
    --out_gv=<file>             # gated verilog netlist output (optional)
    --out_tcl=<file>            # ICC2 Tcl commands output (optional)
    --threads=<int>             # number of CPU threads for placement (optional, not necessarily faster)
    --place_ar=<float>          # user-defined aspect ratio of the design area
    --place_ur=<float>          # user-defined utilization ratio of the design
    --place_ur_reg_name=<strs>  # utilization ratio for some regions (should be used together with --place_ur_reg_val)
    --place_ur_reg_val=<floats> # utilization ratio values for some regions
    --place_bbox=<ints>         # design bounding box
    --place_iter=<int>          # placemnt WL optimization iterations
-h, --help                      # print usage

Example: 
autocraftE --laygo_config=laygo_config.yaml \
           --tech_grid=dv5t_crg_fll_ana_obsd.grid.yaml \
           --tech_map=dv5t_crg_fll_ana_obsd.map.yaml \
           --constraint=dv5t_crg_fll_ana_obsd.constraint.yaml \
           --lef=dv5t_crg_fll_ana_obsd.template.lef,dv5t_crg_fll_ana_obsd.via.lef \
           --netlist=dv5t_crg_fll_ana_obsd.cir \
           --drc=layers.drc.yaml \
           --threads=1 \
           --place_ar=1.1 \
           --place_ur=0.4 \
           --place_ur_reg_name=region1 \
           --place_ur_reg_val=0.4 \
           --place_iter=2 \
           --out_gv=dv5t_crg_fll_ana_obsd.gv \
           --out_tcl=dv5t_crg_fll_ana_obsd_pnr.tcl

to execute the program

autocraft's People

Contributors

baloneymath avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

universewill

autocraft's Issues

AutoCRAFT build

I tried to build AutoCRAFT, but got the following message So I checked the src/io/ folder and still could not find write.cpp.
Can you tell me how to resolve this error?

========== Messeages ==================================

cmake .. -DPYTHON_EXECUTABLE=/home/simazaki/.pyenv/shims/python -DPYTHON_LIBRARY=. -DYAML_CPP_ROOT_DIR=/usr/local/yaml-cpp -DLEF_DIR=/usr/local/lef -DLIMBO_DIR=/usr/local/Limbo
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- pybind11:
CMake Deprecation Warning at pybind11/CMakeLists.txt:8 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.

Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.

-- pybind11 v2.11.0 dev1
CMake Warning (dev) at pybind11/tools/FindPythonLibsNew.cmake:98 (find_package):
Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
are removed. Run "cmake --help-policy CMP0148" for policy details. Use
the cmake_policy command to set the policy and suppress this warning.

Call Stack (most recent call first):
pybind11/tools/pybind11Tools.cmake:50 (find_package)
pybind11/tools/pybind11Common.cmake:180 (include)
pybind11/CMakeLists.txt:202 (include)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Found PythonInterp: /home/simazaki/.pyenv/shims/python (found suitable version "3.11.5", minimum required is "3.6")
-- Found PythonLibs: /home/simazaki/workspace/aipcb/AutoCRAFT/cpp/build
-- Performing Test HAS_FLTO
-- Performing Test HAS_FLTO - Success
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.6") found components: system graph
CMake Warning (dev) at CMakeLists.txt:28 (find_package):
Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
are removed. Run "cmake --help-policy CMP0148" for policy details. Use
the cmake_policy command to set the policy and suppress this warning.

This warning is for project developers. Use -Wno-dev to suppress it.

-- Found PythonLibs: /home/simazaki/workspace/aipcb/AutoCRAFT/cpp/build (found version "3.10.12")
-- yaml-cpp: /usr/local/yaml-cpp
-- z3:
-- spdlog:
-- phmap:
-- nanoflann:
-- limbo: /usr/local/Limbo
-- lef: /usr/local/lef
-- def:
-- lemon:
-- cxxopts:
-- zlib:
-- Using build type Release
-- Configuring done (1.1s)
CMake Error at CMakeLists.txt:208 (add_executable):
Cannot find source file:

src/io/writer.cpp

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm
.ccm .cxxm .c++m .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90
.f95 .f03 .hip .ispc

CMake Error at CMakeLists.txt:208 (add_executable):
No SOURCES given to target: autocraftE

CMake Error at pybind11/tools/pybind11Tools.cmake:177 (add_library):
No SOURCES given to target: autocraft
Call Stack (most recent call first):
CMakeLists.txt:213 (pybind11_add_module)

CMake Generate step failed. Build files cannot be regenerated correctly.

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.