GithubHelp home page GithubHelp logo

gmcad / smtcellucsd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ckchengucsd/smtcellucsd

0.0 0.0 0.0 1.06 MB

Cell Layout Generation for DTCO/STCO Exploration Toolkit

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

C++ 89.44% Python 9.48% Makefile 0.75% CMake 0.33%

smtcellucsd's Introduction

SMTCellUCSD

SMTCell is a Cell Layout Generation Toolkit for DTCO/STCO Exploration from VLSI Lab in University of California San Diego. Our goal is to enable technology exploration on FinFET, VFET and CFET with intuitive design rule encoding using Satisfiability Modulo Theories (SMT). Unlike our previous work, SMTCell is equipped with flexibility in Gear Ratio (GR), where metal pitch distance can be fully customized. We also provide functionaility to accelerate your design turnaround time with pre-partitioning. Accompnany publications can be found Gear-Ratio-Aware Standard Cell Layout Framework for DTCO Exploration.

(SMTCell currently is built around FinFET Technology.)

Main Flow

To run our codebase, we need a customized data file called .pinlayout that is converted from .cdl. This file comprised of basic cell design entities like pins, instances and nets. Additionally, you need to configure your own design by using config.json files. To understand what each parameter is doing, please refer to this document here.

We use a SMT solver to generate a solution for the given design. The solution is then converted to a .gdt file, which can be viewed using KLayout. The .gdt file can be converted to .gds file using GDT2GDS.

Setup Guide

Quick Setup Guide

With CMake(>3.18.0), you can easily compile our codebase. Please follow the steps below:

mkdir build && cd build
cmake ..
make # you should genSMTInputAGR and convSMTResult executables
cd ..

Our underlying SMT solver is Z3 Prover Version 4.8.5. Please follow the link, download and install the software. Alternatively, if you have Python installed, we recommend you to use pip for easy install. (Version 4.8.5 is highly recommended. Installing any other version of Z3 Prover may cause unexpected behavior.)

# [optinal] create a Python virtual environment using venv
python3 -m venv smtcell
# [optinal] activate the virtual environment
source smtcell/bin/activate
# install z3-solver using pip
pip install z3-solver
# sanity check
z3 --version # this should return Z3 version 4.8.5 - 64 bit

Now you are ready to go! Optionally, please consider installing the following tools and libraries for better experience.

Optional Tools and Libraries (Recommended)

SMTCell depends on open source tools and libraries. Please download and install the following software if you want to enjoy the complete functionality of SMTCell.

  • GDT2GDS for converting .gdt to .gds.
  • KLayout for viewing .gds/.lef files.
  • PROBE3.0 for custom PDK generation.

Quick Start

SMTCell contains three different flows. For generating

# inside the main directory
make SMTCell
# or Prepartition + main flow
make SMTCell_prepartition
# generate .gds/.lef and preview cells using Klayout
make viewSMTCell

Design Your Own Cell

For setting up the cell configuration and customize cell based on your own designs, please visit this documentation here.

Pre-Partitioning

While smaller cell designs (e.g. AND, INV, ...) can be quickly generated within minutes of runtime, larger cells like DFF can be siginificantly slower. This is due to the fact that with larger design space, the literal, clauses and formulas grow exponentially. To combat this problem, we provide options to reduce the solution space by using prepartition engine. More documentation can be found here.

Report an Issue

If you encounter any issue, please report it to us by creating an issue here.

Past Works and References (not in any particular order)

  • Park, Dong Won Dissertation: Logical Reasoning Techniques for Physical Layout in Deep Nanometer Technologies
  • Lee, Daeyeal Dissertation: Logical Reasoning Techniques for VLSI Applications
  • Ho, Chia-Tung Dissertation: Novel Computer Aided Design (CAD) Methodology for Emerging Technologies to Fight the Stagnation of Moore’s Law
  • D. Park, I. Kang, Y. Kim, S. Gao, B. Lin, and C.K. Cheng, "ROAD: Routability Analysis and Diagnosis Framework Based on SAT Techniques," ACM/IEEE Int. Symp. on Physical Design, pp. 65-72, 2019. [Paper] [Slides]
  • D. Park, D. Lee, I. Kang, S. Gao, B. Lin, C.K. Cheng, "SP&R: Simultaneous Placement and Routing Framework for Standard Cell Synthesis in Sub-7nm," IEEE Asia and South Pacific Design Automation, pp. 345-350, 2020. [Paper] [Slides]
  • C.K. Cheng, C. Ho, D. Lee, and D. Park, "A Routability-Driven Complimentary-FET (CFET) Standard Cell Synthesis Framework using SMT," ACM/IEEE Int. Conf. on Computer-Aided Design, pp. 1-8, 2020. [Paper]
  • D. Lee, C.T. Ho, I. Kang, S. Gao, B. Lin, and C.K. Cheng, "Many-Tier Vertical Gate-All-Around Nanowire FET Standard Cell Synthesis for Advanced Technology Nodes," IEEE Journal of Exploratory Solid-State Computational Devices and Circuits, 2021, Open Access. [Paper]
  • C.K. Cheng, C.T. Ho, D. Lee, and B. Lin, "Multi-row Complementary-FET (CFET) Standard Cell Synthesis Framework using Satisfiability Modulo Theories (SMT)," IEEE Journal of Exploratory Solid-State Computational Devices and Circuits, 2021, Open Access. [Paper]
  • S. Choi, J. Jung, A. B. Kahng, M. Kim, C.-H. Park, B. Pramanik, and D. Yoon, "PROBE3.0: A Systematic Framework for Design-Technology Pathfinding with Improved Design Enablement," IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2023, Open Access. [Paper]
  • The PROBE3.0 Framework. [GitHub]

Acknowledgement

Our work here is built upon previous works done by authors/researchers: Daeyeal Lee, Dong Won Park, Chia Tung Ho, and Minsoo Kim Et al. Also we would like to thank our collaborators and contributors: Prof. Andrew B. Kahng, Prof. Bill Lin, Dooseok Yoon, Zichen Zhou, and Nihal Nazeem.

smtcellucsd's People

Contributors

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