Jump to content

Draft:PyOpus

From Wikipedia, the free encyclopedia
  • Comment: This just documents the existence of the library and describes its features- instead, it should summarize what independent reliable sources with significant coverage choose on their own to say about this library and its importance/significance/influence, showing how it meets the special Wikipedia definition of notability. 331dot (talk) 09:02, 8 May 2023 (UTC)

Original author(s)Árpád Bürmen
Developer(s)Árpád Bürmen, Jernej Olenšek, Janez Puhan, Gregor Cijan
Initial release2011-10-15 (2011-10-15)
Stable release
0.9
Repositorypypi.org/project/PyOPUS/
Written inPython, C
Operating systemCross-platform
TypeOpen source software
Websitefides.fe.uni-lj.si/pyopus/
Pyopus GUI with Miller OpAmp optimization results

PyOPUS /pɔːpus/) is a library for the Python programming language, adding support for simulation-based optimizations. Primarily, PyOPUS served as a tool for analog-circuit optimization, but its usage can extend to arbitrary systems [1] [2]. The library offers an API, graphical user interface, and implementation of numerical and optimization algorithms. PyOPUS library was developed and is being maintained at University of Ljubljana, Faculty of Electrical Engineering, EDA Group by Árpád Bürmen.

History

[edit]

The development of PyOpus library started in 2008. Initially it was thought of as a flexible tool for simulator management and circuit optimization [3]. The first version was written for Python2. Since version 0.9 the library has switched to Python3. Version 0.9 added support for schematic entry of circuits via KiCAD. In version 0.10 a graphical user interface for setting up optimization tasks was added. Among other, the interface is used for teaching circuit optimization and for student projects at the Faculty of Electrical Engineering, University of Ljubljana.

Features

[edit]

Optimization algorithms

[edit]

In PyOPUS, several optimization algorithms are implemented, Coordinate Search, Hooke-Jeeves, Nelder-Mead Simplex, Successive Approximation Simplex, PSADE (global), MADS, among others. Several plugins for customizing the provided optimization algorithms are available. Those are triggered at every evaluation and have full access to the internal structures of the optimization algorithm.

Bechmarking

[edit]

Support for optimization algorithm development and benchmarking includes built-in test functions and benchmarking sets developed by Moré-Garbow-Hillstrom, Lukšan-Vlček, Karmitsa, Moré-Wild, global optimization problems by Yao, Hedar, and Yang, problems used in the development of MADS algorithms, and an interface to problems in the CUTEr/CUTEst collection. Relative performance of optimization algorithms can also be visualised as performance profiles.

Circuit simulation

[edit]

The simulator module is equipped with the necessary capabilities to execute circuit simulations using the SPICE OPUS, HSPICE, and SPECTRE simulators [4]. The module supports OP, DC, AC, TRAN, NOISE, and TF analysis, and can collect device properties like Vdsat. The interface of the simulator module makes it simple to add support for new simulators.

Postprocessing

[edit]

PyOpus includes a library of post-processing functions that can extract various performance measures, such as gain, bandwidth, rise time, and slew-rate, from simulation results. These performance metrics can be used to develop a customized cost function that can guide the optimization algorithms towards more efficient circuits.

Higher-level analysis

[edit]

PyOPUS provides higher level of abstraction tools for sensitivity analysis, parameter screening, worst case performance analysis, worst case distance analysis (deterministic approximation of parametric yield), and Monte Carlo analysis (statistical approximation of parametric yield). Designs can be sized efficiently across a large number of corners. PyOPUS automates the procedure for finding a circuit that exhibits the desired parametric yield.

Parallel computing

[edit]

Computation speed-up is possible through the use of MPI library for parallel computing. To take advantage of multiple processor cores or a cluster of computers, VirtualMachine object is provided for simple access to the underlying MPI library. Parallelism can be implemented at different levels within the program, including parallel performance evaluation across multiple corners, parallel optimization algorithms, and the ability to solve multiple problems concurrently.

Plotting

[edit]

A plotting mechanism based on MatPlotLib and PyQt is provided. Plots can be exported to vector and raster formats. Visualisation during the optimization run is also supported.

Graphical user interface

[edit]

A graphical user interface (GUI) is available for setting up and running optimizations on the local machine or a cluster of computers. The GUI provides extensive facilities for analyzing and visualizing the results of optimization runs.

References

[edit]
  1. ^ B. Zhang et al., ‘90% yield production of polymer nano-memristor for in-memory computing’, Nature Communications, vol. 12, no. 1, Art. no. 1, Mar. 2021, doi: 10.1038/s41467-021-22243-8.
  2. ^ Z. Zhang, Z. Ge, Y. Wei, X. Cheng, G. Xie, and G. Liu, ‘1S-1R array: Pure-memristor circuit for binary neural networks’, Microelectronic Engineering, vol. 254, p. 111697, Feb. 2022, doi: 10.1016/j.mee.2021.111697.
  3. ^ www.spiceopus.si
  4. ^ J. Puhan, D. Raič, T. Tuma, and Á. Bűrmen, ‘Break-before-Make CMOS Inverter for Power-Efficient Delay Implementation’, The Scientific World Journal, vol. 2014, p. e349131, Nov. 2014, doi: 10.1155/2014/349131.