All Projects → sjain-stanford → deep-route

sjain-stanford / deep-route

Licence: MIT license
Training a deep FCN network in PyTorch to route circuit layouts

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to deep-route

RouteNow
RouteNow is a small fast library ⚡ that will help you in developing a SinglePage Application without any dependencies like jQuery, AngularJs, vue.js or any of those bulky frameworks.
Stars: ✭ 17 (-69.09%)
Mutual labels:  routing
semantic segmentation
Semantically segment the road in the given image.
Stars: ✭ 91 (+65.45%)
Mutual labels:  fully-convolutional-networks
r2
A minimalist HTTP request routing helper for Go.
Stars: ✭ 32 (-41.82%)
Mutual labels:  routing
JWT-user-auth-API-bolilerplate
Boilerplate for backend API user authentication with JWT
Stars: ✭ 13 (-76.36%)
Mutual labels:  routing
routing-py
🌎 Python library to access all public routing, isochrones and matrix APIs in a consistent manner.
Stars: ✭ 106 (+92.73%)
Mutual labels:  routing
STCRouter
基于标准URL的iOS路由系统,可实现业务模块组件化,控制器之间零耦合,可实现黑白名单控制,可进行native降级到hybrid。
Stars: ✭ 19 (-65.45%)
Mutual labels:  routing
neteng-roadmap
Network Engineering at Scale Roadmap/Landscape
Stars: ✭ 53 (-3.64%)
Mutual labels:  routing
FCNN-example
This is a fully convolutional neural net exercise to detect houses from aerial images.
Stars: ✭ 28 (-49.09%)
Mutual labels:  fully-convolutional-networks
nuxt-i18n-routing
Localized routing with Nuxt.js
Stars: ✭ 32 (-41.82%)
Mutual labels:  routing
go-reverse-proxy
Reverse proxy with simple routing configuration and override behaviour
Stars: ✭ 21 (-61.82%)
Mutual labels:  routing
optimization
Routing optimization module module for Itinero.
Stars: ✭ 47 (-14.55%)
Mutual labels:  routing
framework
Cygnite PHP Framework- A Modern Toolkit For Web Developers
Stars: ✭ 43 (-21.82%)
Mutual labels:  routing
urltree
Named URL data structure with support for URL building.
Stars: ✭ 36 (-34.55%)
Mutual labels:  routing
flow-router
🚦 Carefully extended flow-router for Meteor
Stars: ✭ 191 (+247.27%)
Mutual labels:  routing
CRRouter
A simple and powerful router
Stars: ✭ 54 (-1.82%)
Mutual labels:  routing
gweatherrouting
Sailing weather routing made easy
Stars: ✭ 15 (-72.73%)
Mutual labels:  routing
NodeServer
Compare node.js servers
Stars: ✭ 35 (-36.36%)
Mutual labels:  routing
LIGHT-SERNET
Light-SERNet: A lightweight fully convolutional neural network for speech emotion recognition
Stars: ✭ 20 (-63.64%)
Mutual labels:  fully-convolutional-networks
static-router
Simple static router for Nette Framework
Stars: ✭ 24 (-56.36%)
Mutual labels:  routing
router
Bidirectional Ring router. REST oriented. Rails inspired.
Stars: ✭ 78 (+41.82%)
Mutual labels:  routing

Deep-Route

This repository contains PyTorch implementation (pretrained weights provided) and dataset generation code for the paper

Training a Fully Convolutional Neural Network to Route Integrated Circuits
Sambhav R. Jain, Kye Okabe
arXiv-cs.CV (Computer Vision and Pattern Recognition) 2017

We design and train a deep, fully convolutional neural network that learns to route a circuit layout net with appropriate choice of metal tracks and wire class combinations. Inputs to the network are the encoded layouts containing spatial location of pins to be routed. After 15 fully convolutional stages followed by a score comparator, the network outputs 8 layout layers (corresponding to 4 route layers, 3 via layers and an identity-mapped pin layer) which are then decoded to obtain the routed layouts.

Proposed FCN Model

Training samples (left: data, right: labels) from the generated dataset

Install (Linux)

  1. Fork this GitHub repository
  2. Setup virtualenv and install dependencies
    • ./setup_virtualenv.sh
  3. Install PyTorch
    • ./setup_pytorch.sh
  4. Activate virtualenv, start Jupyter notebook
    • ./start_jupyter_env.sh

Generate Dataset

Run the script ./datagen/gen_data.py to generate training data of shape (N, 1, H, W) and labels of shape (N, 8, H, W) stored using HDF5 (h5py). Default parameters used for the paper are H = W = 32, and pin_range = (2, 6), but feel free to modify as desired. Generating 50,000 image dataset should take < 1 minute.

python ./datagen/gen_data.py
>> Enter the number of images to be generated: 50000
mv ./data/layout_data.hdf5 ./model/data/train_50k_32pix.hdf5

python ./datagen/gen_data.py
>> Enter the number of images to be generated: 10000
mv ./data/layout_data.hdf5 ./model/data/val_10k_32pix.hdf5

Train FCN Network (in PyTorch)

Switch to ./model/ dir and run the script ./train_fcn_pytorch.py to train the FCN model with default options, or use the switch --help to display a list of options and their defaults.

cd ./model/
python ./train_fcn_pytorch.py --help
usage: train_fcn_pytorch.py [-h] [--data PATH] [--batch_size N]
                            [--num_workers N] [--num_epochs N] [--use_gpu]
                            [--pretrained] [--lr LR] [--adapt_lr] [--reg REG]
                            [--print-freq N]

Deep-Route: Training a deep FCN network to route circuit layouts.

optional arguments:
  -h, --help       show this help message and exit
  --data PATH      path to dataset (default: ./data/)
  --batch_size N   mini-batch size (default: 100)
  --num_workers N  number of data loading workers (default: 4)
  --num_epochs N   number of total epochs to run (default: 200)
  --use_gpu        use GPU if available
  --pretrained     use pre-trained model
  --lr LR          initial learning rate (default: 5e-4)
  --adapt_lr       use learning rate schedule
  --reg REG        regularization strength (default: 1e-5)
  --print-freq N   print frequency (default: 10)

To run on GPU, provide switch --use_gpu. Best model parameters (based on F-1 score on validation set) are saved to ./model/training/ dir every epoch, along with loss and training curves. If the switch --pretrained is provided, model is pre-loaded with saved parameters before training. Pretrained weights (for batch size 10 and 100) are made available here. With --adapt_lr, a learning rate decay factor of 10 is applied every 30 epochs.

Cite

If you find this work useful in your research, please cite:

@article{jain2017route,
  title={Training a Fully Convolutional Neural Network to Route Integrated Circuits},
  author={Jain, Sambhav R and Okabe, Kye},
  journal={arXiv preprint arXiv:1706.08948},
  year={2017}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].