Skip to main content

A simulation-based design optimization library

Project description

PyOPUS is a library for simulation-based optimization of arbitrary systems. It was developed with circuit optimization in mind. The library is the basis for the PyOPUS GUI that makes it possible to setup design automation tasks with ease. In the GUI you can also view the the results and plot the waveforms generated by the simulator.

PyOPUS provides several optimization algorithms (Coordinate Search, Hooke-Jeeves, Nelder-Mead Simplex, Successive Approximation Simplex, PSADE (global), MADS, …). Optimization algorithms can be fitted with plugins that are triggered at every function evaluation and have full access to the internals of the optimization algorithm.

PyOPUS has a large library of optimization test functions that can be used for optimization algorithm development. The functions include benchmark sets by Moré-Garbow-Hillstrom, Lukšan-Vlček (nonsmooth problems), Karmitsa (nonsmooth problems), Moré-Wild, global optimization problems by Yao, Hedar, and Yang, problems used in the developement of MADS algorithms, and an interface to thousands of problems in the CUTEr/CUTEst collection. Benchmark results can be converted to data profiles that visualize the relative performance of optimization algorithms.

The pyopus.simulator module currently supports SPICE OPUS, HSPICE, and SPECTRE (supports OP, DC, AC, TRAN, and NOISE analyses, as well as, collecting device properties like Vdsat). The interface is simple can be easily extended to support any simulator.

PyOPUS provides an extensible library of postprocessing functions which enable you to easily extract performance measures like gain, bandwidth, rise time, slew-rate, etc. from simulation results. The collected performance measures can be further post-processed to obtain a user-defined cost function which can be used for guiding the optimization algorithms toward better circuits.

At a higher elvel of abstraction PyOPUS provides 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 fully automates the procedure for finding a circuit that exhibits the desired parametric yield. Most of these procedures can take advantage of parallel computing which significantly speeds up the process.

Parallel computing is supported through the use of the MPI library. A cluster of computers is represented by a VirtualMachine object which provides a simple interface to the underlying MPI library. Parallel programs can be written with the help of a simple cooperative multitasking OS. This OS can outsource function evaluations to computing nodes, but it can also perform all evaluations on a single processor. Writing parallel programs follows the UNIX philosophy. A function can be run remotely with the Spawn OS call. One or more remote functions can be waited on with the Join OS call. The OS is capable of running a parallel program on a single computing node using cooperative multitasking or on a set of multiple computing nodes using a VirtualMachine object. Parallelism can be introduced on multiple levels of the program (i.e. parallel performance evaluation across multiple corners, parallel optimization algorithms, solving multiple worst case performance problems in parallel, …).

PyOPUS provides a plotting mechanism based on MatPlotLib and wxPython with an interface and capabilities similar to those available in MATLAB. The plots are handled by a separate thread so you can write your programs just like in MATLAB. Professional quality plots can be easily exported to a large number of raster and vector formats for inclusion in your documents. The plotting capability is used in the pyopus.visual module that enables the programmer to visualize the simulation results after an optimization run or even during an optimization run.

Project details


Release history Release notifications | RSS feed

This version

0.9

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyOPUS-0.9.tar.gz (5.7 MB view details)

Uploaded Source

Built Distributions

PyOPUS-0.9-cp35-cp35m-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.5mWindows x86-64

PyOPUS-0.9-cp35-cp35m-win32.whl (1.6 MB view details)

Uploaded CPython 3.5mWindows x86

File details

Details for the file PyOPUS-0.9.tar.gz.

File metadata

  • Download URL: PyOPUS-0.9.tar.gz
  • Upload date:
  • Size: 5.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.8.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.3.0 requests-toolbelt/0.8.0 clint/0.5.1 CPython/3.5.3 Linux/4.9.0-6-amd64

File hashes

Hashes for PyOPUS-0.9.tar.gz
Algorithm Hash digest
SHA256 198fd1c41c3dee10068fe3ac6d35e0f5ef3e0387f4b86014a4a8b1429e23c930
MD5 92c196a86c1311415a90507d935f28ea
BLAKE2b-256 59d05e785e16b8b57821d64a8d5d9aba6e7f4190063e10ccf877cdb7084b509b

See more details on using hashes here.

File details

Details for the file PyOPUS-0.9-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: PyOPUS-0.9-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.8.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.3.0 requests-toolbelt/0.8.0 clint/0.5.1 CPython/3.5.3 Linux/4.9.0-6-amd64

File hashes

Hashes for PyOPUS-0.9-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 fe982e1cccc50795bd6e58215630e4f28edf54667fa88433ef37750b212f51a9
MD5 79384fa2663c6d0d593b704a6f89139d
BLAKE2b-256 e0ee30040aa51792edf0c56ca294a360df15a63fed80c1554b94824e21f96ae2

See more details on using hashes here.

File details

Details for the file PyOPUS-0.9-cp35-cp35m-win32.whl.

File metadata

  • Download URL: PyOPUS-0.9-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.8.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.3.0 requests-toolbelt/0.8.0 clint/0.5.1 CPython/3.5.3 Linux/4.9.0-6-amd64

File hashes

Hashes for PyOPUS-0.9-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 110dda1d871b8fc929a3e5cd6aa0e904e363d66306067ce4819f529d828c6609
MD5 29c1a543b29feebbbfec53589dc29b2b
BLAKE2b-256 e740552b6d1a247ab7ac7fef6de364e929d5b69117529be3cdad330fdb607e50

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page