Giter Site home page Giter Site logo

pin-assignment's Introduction

EE201A - Winter 2017 Course Project
Automated Inter-Chip Pin Assignment
Author: Vishesh Dokania <[email protected]>
src: Cheng Guo <[email protected]>

-----------------------------------------------------------

FIRST: Use the Bash shell for the project. 
This is to maintain uniformity of runtimes using the 'time' command

$ bash
$ source /w/class/ee201a/ee201ata/bash_ee201a_setup

-----------------------------------------------------------
What's in the directory tree?
-----------------------------------------------------------

src/				--	All C++ source code needed to build your PinAssign tool should go here. 
						You are provided with some starter code to help in correct I/O file 
						handling, basic traversal and maintaining the global flow.

benchmarks/			--	Input designs for your flow. Contain global designs, macros and 3 sets 
						of input rules. Don't modify anything here.

innovus/			--	All Innovus runs will be handled here. Contains a template Tcl script 
						that is copied and customized for each run. You don't need to touch anything here.

library/			--	Nangate 45nm Standard Cell Library files. We only need the technology LEF 
						defining metal layers, vias, etc.

Python scripts		--	Read these before using them! They are used for importing to OA database, 
						running PinAssign and Innovus and automating the entire flow. The most 
						important file you should start with is run_all.py.
					--	Note that you are ONLY allowed to customize run_pinassign_and_innovus.py. 
						All other scripts must be left untouched, except when running a subset of
						input designs from run_all.py

SConstruct			--	This is a special Python script used by the SCons tool to build your PinAssign 
						source code. This is an easier alternative to Makefiles. All you need to modify
						here is the list of src files. For info on SCons, visit www.scons.org.

-----------------------------------------------------------
Building your Source Code and running the flow
-----------------------------------------------------------

From the top directory, simply type:
$ scons

This will compile the sources at src/ and produce an executable called PinAssign. To build faster using multiple threads:
$ scons -j<NUMBER_OF_THREADS>
I recommend not using more than 2 to be fair to other users on the machine.

Once your PinAssign executable is created, simply run the flow using the run_all script:
$ ./run_all.py

To clean your PinAssign build (including .o files):
$ scons -c

-----------------------------------------------------------
Outputs
-----------------------------------------------------------

All logs will be created in the logs/ subdirectory, grouped by design
All outputs will be created in the outputs/ subdirectory, grouped by design

To view output GDS files, use the Mentor Graphics Calibre GUI:
$ calibrewb <GDS_FILE>

The layer numbers on the right panel map to the layer.map file inside the innovus/ subdirectory
Each layer can be turned on or off using the mouse.

-----------------------------------------------------------
Credits
-----------------------------------------------------------
[1] Some source code and flow material adopted from:
	"SnakeRouter: A Lightweight Standard Cell Router"
	Originally written for EE 201A, Fall 2013 Quarter
	Authors: Mark Gottscho <[email protected]> and Yasmine Badr <[email protected]>
[2] Innovus flow and benchmarks adopted from:
	Saptadeep Pal <[email protected]> 

pin-assignment's People

Contributors

glomguo avatar pedrovazquezs avatar

Stargazers

 avatar

Watchers

James Cloos 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.