📣 Announcements
FALCON paper has been published at The Thirty-ninth Conference on Neural Information Processing Systems (NeurIPS) 2025! 🎉
FALCON (Fully Automated Layout-Constrained analOg circuit desigN) is a unified machine learning framework for end-to-end analog and RF circuit synthesis. Given a target performance specification, FALCON selects a suitable circuit topology and infers layout-constrained parameters through a modular, gradient-based optimization pipeline powered by graph neural networks (GNNs).
Repository Includes:
- Dataset of 1 million Cadence-simulated analog/mm-wave circuits across 20 topologies and 5 circuit families.
- ML Models for performance-driven topology selection (MLP), forward performance prediction (GNN), and parameter inference.
- Graph Representation pipeline converting Cadence netlists into rich, edge-centric graph structures.
- Layout-Aware Loss integrated into inverse design via analytical models capturing parasitic and area constraints.
FALCON achieves over 99% topology selection accuracy and sub-10% relative error in performance prediction, with layout-constrained design generation in under 1 second per instance. Its generalizability to unseen topologies and tight integration of schematic and layout objectives make it a practical foundation for fully automated, real-world analog circuit design.
We recommend using Conda to manage dependencies for FALCON.
Clone the repository and create the environment:
# Clone the repository
git clone https://github.com/AsalMehradfar/FALCON.git
cd FALCON
# Create the environment from the YAML file
conda env create -f falcon.yml
# Activate the environment
conda activate falconIf you make changes to the YAML or add packages later:
conda env update -f falcon.yml --pruneFALCON consists of a three-stage pipeline for analog circuit design:
- Stage 1: Topology Selection
- Stage 2: Performance Prediction
- Stage 3: Layout-Aware Parameter Inference
Each stage can be run independently once data is prepared.
If graphs.json is not available, first run:
python scripts/process_netlists.pyIf index splits are not available, run:
python scripts/generate_splits.pyTo generate the MLP and GNN inputs and save the required scalers:
python scripts/save_mlp_data.py
python scripts/save_gnn_data.pyTo train the models for each stage of the FALCON pipeline, run:
# Stage 1: Train the MLP for topology classification
python scripts/train_mlp.py
# Stage 2: Train the GNN for performance prediction
python scripts/train_gnn.py
# (Optional) Fine-tune the GNN on unseen topologies
python scripts/finetune_gnn.pyTo evaluate each stage of the FALCON pipeline, run:
# Stage 1 Evaluation: Topology selection accuracy
python evaluation/mlp_eval.py
# Stage 2 Evaluation: Forward performance prediction accuracy
python evaluation/gnn_forward_eval.py
# Stage 3 Evaluation: Inverse parameter inference with layout-aware optimization
python evaluation/gnn_backward_eval.pyAll scripts assume data is organized under
dataset/directory as expected.
If you use FALCON in a research paper, please cite our paper:
@inproceedings{Mehradfar2025FALCON,
title={{{FALCON}: An {ML} Framework for Fully Automated Layout-Constrained Analog Circuit Design}},
author={Asal Mehradfar and Xuzhe Zhao and Yilun Huang and Emir Ceyani and Yankai Yang and Shihao Han and Hamidreza Aghasi and Salman Avestimehr},
booktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems},
year={2025}
}If you have any questions, feel free to open a Discussion and ask your question. You can also email mehradfa@usc.edu (Asal Mehradfar).