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.
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.