PyOPUS documentation - table of contents¶
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 provides a simple way for setting up design automation tasks. In the GUI you can also view the the results and plot the waveforms generated by the simulator.
- 1.
pyopus.simulator
— Simulator support module- 1.1.
pyopus.simulator.base
— Base class for simulator objects - 1.2.
pyopus.simulator.spiceopus
— SPICE OPUS simulator support - 1.3.
pyopus.simulator.ngspice
— Ngspice simulator support - 1.4.
pyopus.simulator.xyce
— Xyce simulator support - 1.5.
pyopus.simulator.spectre
— Cadence Spectre simulator support - 1.6.
pyopus.simulator.hspice
— HSPICE simulator support - 1.7.
pyopus.simulator.rawfile
— Support for reading and writing SPICE OPUS raw files - 1.8.
pyopus.simulator.hspicefile
— Support for reading HSPICE result files
- 1.1.
- 2.
pyopus.evaluator
— Performance evaluation - 3.
pyopus.parallel
— Parallel processing support - 4.
pyopus.optimizer
— Optimization algorithms- 4.1.
pyopus.optimizer.base
— Base classes for optimization algorithms and plugins - 4.2.
pyopus.optimizer.cache
— Caching of function and constraint values, and annotations - 4.3.
pyopus.optimizer.optfilter
— Filter-based point acceptance - 4.4.
pyopus.optimizer.coordinate
— Box constrained coordinate search optimizer - 4.5.
pyopus.optimizer.hj
— Box constrained Hooke-Jeeves optimizer - 4.6.
pyopus.optimizer.nm
— Unconstrained Melder-Mead simplex optimizer - 4.7.
pyopus.optimizer.grnm
— Grid-restrained Nelder-Mead simplex optimizer - 4.8.
pyopus.optimizer.sanm
— Unconstrained successive approximation Nelder-Mead simplex optimizer - 4.9.
pyopus.optimizer.sdnm
— Unconstrained sufficient descent Nelder-Mead simplex optimizer - 4.10.
pyopus.optimizer.boxcomplex
— Box’s constrained simplex optimizer - 4.11.
pyopus.optimizer.de
— Box constrained differential evolution optimizer - 4.12.
pyopus.optimizer.psade
— Box constrained parallel SADE global optimizer - 4.13.
pyopus.optimizer.qpmads
— Mesh adaptive direct search with quadratic programming
- 4.1.
- 5.
pyopus.problems
— Test problems for optimizaion algorithms- 5.1.
pyopus.problems.cpi
— Common problem interface - 5.2.
pyopus.problems.glbc
— Global optimization test functions - 5.3.
pyopus.problems.cec13
— Problems from the IEEE CEC 2013 competition - 5.4.
pyopus.problems.mgh
— More-Garbow-Hillstrom set of test functions - 5.5.
pyopus.problems.mwbm
— More-Wild set of test functions for DFO, data profile generation - 5.6.
pyopus.problems.madsprob
— Mesh adaptive direct search test problems - 5.7.
pyopus.problems.lvns
— Lukšan-Vlček set of nonsmooth problems - 5.8.
pyopus.problems.lvu
— Lukšan-Vlček set of unconstrained problems - 5.9.
pyopus.problems.karmitsa
— Large scale nonsmooth test functions (Karmitsa set) - 5.10.
pyopus.problems.cuter
— Wrapper for accessing CUTEr problems - 5.11.
pyopus.problems.cutermgr
— CUTEr problem manager - 5.12.
pyopus.problems.cuteritf
— CUTEr problem binary interace source code
- 5.1.
- 6.
pyopus.design
— Design automation support- 6.1.
pyopus.design.sensitivity
— Finite difference sensitivity computation and parameter screening - 6.2.
pyopus.design.wc
— Worst case performance computation - 6.3.
pyopus.design.wcd
— Worst case distance computation - 6.4.
pyopus.design.mc
— Monte Carlo analysis - 6.5.
pyopus.design.cbd
— Sizing across corners - 6.6.
pyopus.design.yt
— Yield targeting (design for yield) - 6.7.
pyopus.design.sqlite
— Support for sqlite database
- 6.1.
- 7.
pyopus.plotter
— Threaded plotting support based on Matplotlib and PyQt5- 7.1.
pyopus.plotter.plotwidget
— PyQt5 canvas for displaying Matplotlib plots - 7.2.
pyopus.plotter.manager
— Manager for Matplotlib plot windows - 7.3.
pyopus.plotter.interface
— Functional interface to the plot window manager - 7.4.
pyopus.plotter.evalplotter
— A PyQt5 and Matplotlib based simulation results plotter - 7.5.
pyopus.plotter.optplugin
— An optimization algorithm plugin for visualization of simulation results
- 7.1.
- 8.
pyopus.netlister
— Netlisting support for EDA packages - 9.
pyopus.misc
— Misclellaneous functions - 10. PyOPUS Library Tutorials
- 10.1. Plotting facilities in PyOPUS
- 10.1.1. Opening plot windows
- 10.1.2. Adding axes and traces to plot windows
- 10.1.3. Creating subplots (multiple axes in a single plot window)
- 10.1.4. Manually specifying subplot size and position
- 10.1.5. Logarithmic plots
- 10.1.6. Scaling the axes
- 10.1.7. Polar plots and aspect ratio
- 10.1.8. Annotating plots
- 10.1.9. Saving a plot to a file
- 10.1.10. 3D plots
- 10.2. Using the virtual machine abstraction layer
- 10.3. Algorithm parallelization
- 10.3.1. Context switching in cooperative multitasking
- 10.3.2. Remote tasks (task outsourcing)
- 10.3.3. Dispatching a set of tasks and collecting the results
- 10.3.4. Dispatching an unknown number of tasks, collecting results with a results collector
- 10.3.5. Writing a custom dispatcher
- 10.3.6. Performing many differential evolution runs on a cluster of workstations
- 10.4. Simulators and result evaluation
- 10.4.1. SPICE OPUS simulator interface
- 10.4.2. HSPICE simulator interface
- 10.4.3. SPECTRE simulator interface
- 10.4.4. Using the performance evaluator
- 10.4.5. Plotting simulation results
- 10.4.6. Constructing an aggregate cost function
- 10.4.7. Optimizing a circuit
- 10.4.8. Plotting the circuit’s response during optimization
- 10.5. How to use KiCad with PyOPUS
- 10.5.1. Using the pyopus symbol library
- 10.5.2. Getting started with your first schematic
- 10.5.3. Customizing netlister behavior with component fields
- 10.5.4. Customizing netlister behavior with .json files
- 10.5.5. Customization example: netlisting MOS devices as subcircuits
- 10.5.6. Customization example: generating MOS mismatch parameters
- 10.6. Miller opamp design with PyOPUS
- 10.1. Plotting facilities in PyOPUS
- 11. PyOPUS design automation GUI
- 11.1. Introduction
- 11.2. Setting up a project
- 11.3. A simple circuit evaluation task
- 11.4. Viewing the results and postprocessing saved waveforms
- 11.5. Nominal design task
- 11.6. Running a task on multiple processors
- 11.7. Design across multiple corners
- 11.8. Inspecting a results database file from command line