A SPICE circuit optimiser, popularly known as ASCO, has found its way through an academic research project that intended to design low-voltage, low-power and high-performance analogue circuits for mobile communications. SPICE (simulation program with integrated circuit emphasis) is a general-purpose, open source analogue electronic circuit simulator.

The main task of ASCO is neither to suggest nor to create new circuit arrangements but to simplify the design process. It automatically verifies, fine-tunes and optimises the functionality of the circuit for temperature and voltage throughout the process.



ASCO has a set of in-built features due to which it is considered a great help for the designers in quest of designing a better circuit. Perhaps the most interesting is that, ASCO is simulator-independent. This means, it functions independent of the simulator it is working with. It thus provides out-of-the-box support for multiple simulators like ngspice, Qucs, LTspice, HSPICER, Spectre R and Eldo. That is not all, the future releases of ASCO are expected to include more simulators. Key features of the tool are described below.

(Note. If a simulator can be launched from the command line, can read the inputs from the text files, output the result in the ASCII format, it can be added to the list of the supported SPICE simulators. It flexibly works with tools like FastHenry.)

Number of variables. ASCO is hard-coded in ‘C’ and theoretically does not have a limit to the number of circuit variables that can be optimised. The only constraints that can be imposed are due to availability of the computer memory or the time required to generate a functional circuit.

Process-voltage-temperature (PVT) corners. Using the simulator functionality, ASCO can help determine the PVT corners for a designed circuit. The tests related to various design corners and Monte Carlo analysis are limited only by capabilities of the simulator and to the time it takes to complete the optimisation process.

Efficiency. Using the differential evolution (DE) process, the optimisation algorithm features a global optimisation. Till date, it has been used in various applications producing great results in acceptable amount of time. As suggested in an open literature, this optimiser can also be looped in with a local optimiser to gain the convergence speed.

Parallel or distributed computation. There is simultaneous evaluation of the proposed values over multiple computers in one network so as to save time. ASCO does not have any limitation to the number of computers used or the number of values evaluated at a time.

No recompilation needed. Optimisation of arbitrary netlist in different conditions does not require recompilation of the code within the supported SPICE simulators.

File format. All the output data and the log information related to optimisation are stored in the plain text format so as to guarantee their readability in future. This format also allows the data and the files to be used by other existing tools after the optimisation process.

ASCO is a free software tool and its codes are available under the GNU GPL licence.

Optimisation algorithms
ASCO has both global and local optimisation algorithms, which makes this tool easily acceptable with many simulation tools. But what are those algorithms? We already know that ASCO uses DE for global optimisation, but is ASCO also capable of local optimisation?

The answer is yes. ASCO has one global optimiser (DE) and two local optimisers (Hooke&Jeeves and Nelder-Mead). The configuration file contains parameters to tune the DE whereas the source code allows the tuning of local optimisers. Thus the two local optimisers can be selected only at the time of compilation by editing the file ‘asco.c’

DE generates new parameter vectors by adding the weighted difference vector between two population members to a third member. In situations where the resulting vector yields a lower objective function value than a predetermined population member, the newly generated vector replaces the vector it is compared to.

Distributed computation methods
Currently, ASCO supports the following three methods for parallel computation:
Send. Each process receives one vector at a time and returns the single cost back to the Master process before receiving any new vector.

Scatter. All the vectors are scattered among all the existing processes in the same generation, and all evaluations are performed before returning all the cost values back to the Master process, which is repeated in the next generation.

Scatter with load balancing. In situations where the power of the computer is evenly available to each process, the optimisation time decreases. This is either due to different machines or due to machines with different loads balancing the number of simulations according to the computational resources. However, in perfectly balanced situations, all the processes start and finish the optimisation at the same time.

ASCO is one of its kind but has plenty of competition when it comes to circuit optimisation. Although all those mentioned below are not optimisers, they do have in-built algorithms to support optimisation as a feature.


TINA. Though TINA is a design suite for circuit simulation and PCB design, it has in-built circuit optimisation capability apart from analysis, designing and real-time testing of digital, analogue, HDL, MCU and mixed electronics circuits. It has Berkely Spice and XSpice based SPICE simulator engines. It refines the result of a design procedure and tunes the already working circuits.

DELIGHT.SPICE. It is a computer-aided design (CAD) system and a SPICE circuit analysis program with interactive optimisation. It contains the recent and powerful optimisation algorithms along with a methodology for the designers for their intuition and man-machine interaction.

Utmost IV. It is used to generate accurate and compact models, macro models and Verilog-A models for RF and analogue applications. It simulates as well as optimises any combination of data, including the data values that have been extracted. It supports SPICE simulators HSPICE, SmartSpice, Spectre and Eldo. Utmost IV combines direct extraction and parameter optimisation techniques.

EvoSpice. It is a numerical optimiser for LTSpice IV. It maximises or minimises the circuit behaviour aspects (power dissipation, output amplitude, etc) by automatically selecting the component values. It uses rapid evolution instead of differential evolution and is hundred times faster as compared to the other systems.

A member of electro-tech-online says, “ASCO requires you to compile C code and therefore is a bit difficult to use whereas EvoSpice is available only as a limited free trial. Anyway, both can be used to automatically adjust component values in a simulation, to minimise or maximise some aspect of a circuit’s performance.”

Scope and audience
ASCO requires an experienced circuit designer to select the circuit topology and to find reasonable operating conditions. The fact is that it’s an experienced designer who can define the test benches and measurements to achieve the desired design objectives, define realistic design goals and evaluate the circuit of the proposed sizes to select the most suitable one.

One of the key requirements of using this tool is that, the experienced designer should be well versed with the operation of a SPICE simulator. The designer is expected to at least understand the consequences of each of the assumptions made during optimisation to carry out the optimisation process efficiently.

Surprisingly, despite being an optimiser for the popular simulation tools from SPICE, ASCO has not been much in use! There are some questions regarding the usage of this tool but no reviews to find out how useful this tool has been.

Download Latest software: click here

The author is a technical journalist at EFY. The article is based on the documents available at http://asco.sourceforge.net/


Please enter your comment!
Please enter your name here