Skip to content

lnis-uofu/LSOracle

master
Switch branches/tags
Code

Latest commit

* external_partion fixed

* Update external_partition.hpp

* Update utility.cpp

Co-authored-by: ALEXANDRE NORMAND <u6041590@lnissrv4.eng.utah.edu>
febd152

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.