Passive Device Artwork Generator, Modeling & Optimization
Conure is a versatile toolkit for designing, simulating, modeling, and optimizing RFCMOS integrated inductors. It seamlessly integrates artwork generation, EM simulation, surrogate modeling with Artificial Neural Networks (ANN), and multi-objective optimization using NSGA-II. Currently, it supports the Cadence EMX simulator, with plans to add OpenEMS.
- Generate inductor layouts from JSON templates.
- Customizable via stacking, line widths, spacing, and dummy fills.
- Create, stack, and fill vias across layers with precise control.
- Automatically generate guard rings with substrate contacts and dummy fills (checkered pattern).
- Train and evaluate neural networks to predict inductance (L) and quality factor (Q).
- Hyperparameter tuning for optimal performance.
- Optimize inductors for target performance using the NSGA-II algorithm.
- Visualize Pareto fronts for trade-off analysis.
- Run EM simulations with Cadence EMX.
- Configurable via JSON.
Conure includes an interactive UiX (User Interaction eXperience) tool combining a Flask backend and a React (Vite) frontend for streamlined artwork description editing and live previews.
./start.sh
Launchesstart_uix.shin the background as a daemon, capturing output inuix.log../start_uix.sh- Loads environment variables from
.env(if present). - Defaults: Backend port 5000 (
VITE_BACKEND_PORT), Frontend port 5173 (FRONTEND_PORT). - Starts the Flask backend (
uix/backend) and the React (Vite) frontend (uix/frontend). - Writes PIDs to
uix.lockin the project root. - Displays running ports and PIDs.
- Loads environment variables from
./stop.sh
Stops UiX by runningstop_uix.sh(logging tostop_uix.log). Ensurestop_uix.shis present and executable.
- Logs:
uix.logβ Captures both backend and frontend startup output.stop_uix.logβ Captures UiX shutdown output.
- Lockfile:
uix.lockβ Stores process names and PIDs. The start script detects existing processes to prevent multiple instances.
- Clone the repository:
$ git clone https://github.com/<your-org>/conure.git $ cd conure
- Create a Python virtual environment and install dependencies:
$ ./setup_venv.sh $ source .venv/bin/activate - Ensure Cadence EMX is installed and configured if you plan to run EM simulations.
Note: Replace OUTPUT_DIR and SWEEP_OUTPUT (in uppercase) with your own desired output directory paths when running the commands.
$ python artwork_generator.py \ --artwork artwork_library/Inductors/Coplanar/Inductor_Coplanar_5.json \ --output OUTPUT_DIR \ --name my_artwork \ --layout \ --svg$ python simulator.py \ --gds OUTPUT_DIR/my_artwork.gds \ --config simulator/config.json \ --sim emx \ --artwork artwork_library/Inductors/Coplanar/Inductor_Coplanar_5.json \ --output OUTPUT_DIR \ --name my_artwork$ python sweep.py \ --artwork artwork_library/Inductors/Coplanar/Inductor_Coplanar_5.json \ --sweep sweep.json \ --output SWEEP_OUTPUT \ --layout \ --simulate \ --config simulator/config.json \ --sim emxContributions are welcome! Please fork the repo, create a feature branch, and submit a pull request. For major changes, open an issue first to discuss your ideas.
- Fork the repository
- Create a branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -am 'Add new feature' - Push to the branch:
git push origin feature/my-feature - Open a Pull Request
- Habibur Rahman β University of Oslo, Norway
- Adrian Llop Recha β University of Oslo, Norway
- Stefano Fasciani β University of Oslo, Norway
- PΓ₯l Gunnar Hogganvik β University of Oslo, Norway
- Kristian KjelgΓ₯rd β University of Oslo, Norway
- Dag Wisland β University of Oslo, Norway
If you use Conure in your research, please cite:
H. Rahman, A. L. Recha, S. Fasciani, P. G. Hogganvik, K. G. KjelgΓ₯rd and D. T. Wisland, "Conure: Surrogate-based Artwork Generator for RFCMOS Integrated Inductors," in 2024 IEEE International Symposium on Circuits and Systems (ISCAS), Singapore, May 2024, pp. 1-5. doi: 10.1109/ISCAS58744.2024.10558598
This project is licensed under the MIT License. See LICENSE for details.







