karthik-r-rao / VLSI_Physical_Design_Tool

A simple tool to demonstrate the physical design steps of VLSI Design Flow.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VLSI Physical Design Tool

A simple tool built from scratch to demonstrate the physical design steps of VLSI Design Flow. The current version can successfully implement the steps of bi-partitioning and floorplanning. The placement and routing algorithms work decently well although some fixes are required for each of them, particularly the routing operation. This was done as a part of the course project of EC440: VLSI CAD at the National Institute of Technology, Karnataka. Refer the report for more details.

Packages required

  • networkx-->pip install networkx
  • matplotlib
  • numpy

Parse

The tool needs an ISCAS netlist as input. The parse and related programs create a networkx graph from the isc file. Run parse.py to get the graph.

Kernighan-Lin bi-partitioning

The Kernighan-Lin bi-partitioning algorithm is run on the input graph, and two optimal partitions are obtained. Run partition.py to get the partitions. The process is visualized below:

Floorplan

The Simulated Annealing method is applied to get a good floorplan for the two partitions. Run floorplan.py to get the floorplans. The process is visualized below:

Placement and Routing (in dev branch)

The Simulated Annealing heuristic and Lee's algorithm is applied for placement and routing respectively. However, the results are not that satisfactory as of now and the code needs many fixes.

About

A simple tool to demonstrate the physical design steps of VLSI Design Flow.

License:MIT License


Languages

Language:Python 100.0%