PyOpus - a Python library for design automation

From F-Si wiki
Jump to navigation Jump to search
  • Speaker(s): Árpád Bűrmen (University of Ljubljana, Faculty of Electrical Engineering)
  • email: arpad.buermen [at] fe.uni-lj.si


Downloads

  • Slides (TODO)

Abstract

PyOpus, a Python-based design automation library, offers a versatile toolkit for engineers and researchers. At its core, PyOpus seamlessly integrates with popular circuit simulators like Ngspice, Xyce, SpiceOpus, Spectre, and HSPICE, providing a unified interface to common circuit analyses such as OP, DC, AC, TF, TRAN, and NOISE, while its measurement module enables comprehensive postprocessing for extracting performance metrics across various operating conditions and process variations.

In the realm of optimization, PyOpus boasts a range of derivative-free algorithms, some of which are capable of exploiting distributed memory parallel computing via the MPI library for enhanced performance. Moving up the ladder, PyOpus offers a suite of circuit design algorithms - from circuit sizing and Monte Carlo analysis to worst case analysis and design for yield - accompanied by a work-in-progress graphical user interface (GUI) for intuitive task configuration.

Recognizing the computational demands, PyOpus provides a parallelization module supported by the MPI library, used by evaluation, optimization, and design library modules. The library also offers a flexible netlister module for KiCad. The netlister makes it possible to use KiCad's eeschema as a schematic entry for the circuits that are later processed by PyOpus.

Over the years, PyOpus has served as a vital tool for research, driving advancements in optimization algorithms, analog circuit topology synthesis, parameter extraction, and facilitating education in design automation techniques.

Software

General information

Roadmap

  • Support advanced design tasks in GUI (sensitivity, Monte-Carlo, worst-case, worst-case distance, yield targeting)
  • Gradient-based algorithms for worst-case and worst-case distance analysis
  • Support correlated random parameters in GUI
  • Support logarithmic parameter scaling in GUI
  • Add parameter extraction interface to GUI