Giter VIP home page Giter VIP logo

lsoracle's Introduction

Getting Started with LSOracle

Build Status Documentation Status

Introduction

The Logic Synthesis oracle is a framework developed on the top of EPFL logic synthesis libraries to unlock efficient logic manipulation by using different logic optimizers.To do so, the flow splits a design into different partitions and selects different optimizers for different logics attributes. Currently, it supports AIG, MIG, XAG, and XMG based optimization.

introductory video for the LSOracle tool

Installation:

LSOracle can be built on Linux and Mac OS. Compilation requires CMake 3.12 or newer and gcc 9 or newer. Additional dependencies for the master branch are Boost Program_options 1.48.0 or newer and readline; dependencies for feature branches may vary.

Linux

git clone --recursive https://github.com/LNIS-Projects/LSOracle.git
cd LSOracle
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DYOSYS_PLUGIN=ON -DYOSYS_INCLUDE_DIR=/path/to/yosys
make

Mac OS

Mac installation is similar to Linux. We recommend using Homebrew to install any missing dependencies.

git clone https://github.com/LNIS-Projects/LSOracle.git
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DYOSYS_PLUGIN=ON -DYOSYS_INCLUDE_DIR=/path/to/yosys
gmake

Docker

LSOracle is available as a docker image on Dockerhub.

Usage

a video tutorial for LSOracle

build/core/lsoracle               # run the tool
read my_file.blif                 # read a file in either blif or AIG format (determined by file extension)
oracle                            # partitions network and optimizes each partition with either AIG or MIG optimization recipes
write_verilog my_output.v         # outputs the optimized network in Verilog format

Help

help				  # Gives a list of commands
[command] -h			  # Gives more information about the command.

Full Documentation

The LSOracle documentation is available here. An update is underway. In the interim, a usage guide is available here, it is oriented toward users targeting FPGAs, but much of the information is applicable to all users.

Using LSOracle as a Yosys Plugin

LSOracle includes a plugin for Yosys. The plugin is built in build/yosys-plugin/oracle.so and may be copied into the share/plugin directory in the yosys build and used with the flag -m oracle, or can be specified by full path -m LSOracle/build/yosys-plugin/oracle.so when calling Yosys.

Publications and Related Repositories

This repository contains a ML-based tool to predict post-PnR critical maps using pre-mapping features. Using this tool, we were able to improve ADP by up to 15.53% and PDP by up to 18.56% compared to the generic reference flow. For a detailed explanation of this work, please refer to the paper "Read your Circuit: Leveraging Word Embedding to Guide Logic Optimization", published in ASP-DAC 2021. This work is to be integrated with LSOracle when we implement robust TCL and DB infrastructures.

This repository contains a modified version of ABC, as well as the Python code used in the paper "SLAP: A Supervised Learning Approach for Priority Cuts Technology Mapping", published in DAC 2021. In that paper, we used a ML model to filter cuts for ASIC technology mapping and obtained a 10% improvement in delay over the default ABC heuristic for cut pruning. As we needed to modify ABC to interface with our Python structure, we placed it in its own repository. We plan to apply the same approach to the EPFL native standard cell mapper at a later date. In the interim, it could be implemented in Yosys with minimal effort.

lsoracle's People

Contributors

yashton avatar maustin8 avatar msoeken avatar srtemp avatar wlneto avatar lnis-projects avatar whaaswijk avatar ravenslofty avatar tangxifan avatar ace-ma avatar hriener avatar rovinski avatar normandalexandre avatar vvbandeira avatar wickedb avatar

Watchers

 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.