Automated Circuit Design

Analog circuits are of great importance in electronic system design since the world is fundamentally analog in nature. While the amount of digital design activity far outpaces that of analog design, most digital systems require analog modules for interfacing to the external world. Techniques for analog circuit design automation began appearing about two decades ago, and efforts using techniques from evolutionary computation have appeared over the last few years. These include the use of genetic algorithms (GAs) to select filter component sizes, to select filter topologies, and to design operational amplifers using a small set of topologies. Various analog filter design problems have been solved using genetic programming.

In space applications, the automated design of analog circuitry could hold many benefits, especially for controller hardware. For example, in problems where actuator outputs need to be rapidly modulated in response to sensor feedback, analog circuits have some clear advantages over digital circuits. Specifically, digital control circuits necessitate a costly bandwidth-limiting analog to digital conversion (ADC) of the sensor signal and then a reverse conversion (DAC) from the processed digital signal to the analog actuator control output. These transformations lose information and introduce latency. In addition, the high frequency component of the sensor signal that is crucial to usefully controlling the actuators in many tasks is lost in the analog to digital conversion.

We have developed a method for the automated synthesis of electronic circuits using a linear genome representation of circuit elements and the connections between them, a relatively simple unfolding technique, and a genetic algorithm (GA). The method differs from most other GA-based circuit-synthesis methods in that the topology of a circuit, the number of its components, and the types and values of its components (e.g., inductances, capacitances, and resistances) are all made to evolve by use of the GA. The linear genome representation is a list of byte codes. The unfolding process is essentially an algorithm in which the byte codes are interpreted to construct a mathematical model of a circuit. In each step of the process, the algorithm starts at one node of the circuit (called the "active node"), proceeds to another node, and connects the two nodes with a component, as instructed by a byte code.

The role of the GA in the synthesis of a circuit is to govern the evolution of both number of byte codes in the list and the specific bytes in each byte code. The GA operates on a population of lists of byte codes, introducing the byte equivalent of mutations. For each member of the population, the unfolding process is carried out, and the electrical performance of the circuit thus synthesized is simulated numerically by the SPICE circuit simulation computer program. The fitness of that member of the population is quantified by a measure of the difference between the desired circuit output and the actual output according to the simulation. For the sake of speed, the GA is implemented in a master/slave parallel-processing scheme in which a controlling computer generates the members of the population and assigns each member to one of a number of other computers that perform the unfolding process, the simulation, and the evaluation of fitness.

An analog circuit is encoded into a linear sequence of byte codes, which are translated into a list of circuit design instructions used to construct the circuit. This circuit is then translated into a SPICE netlist and then evaluated by the SPICE simulator.

We have also utilized a coevolutionary mechanism for automated circuit design and have investigated the effectiveness of this approach against several other fitness schedules. Our results suggest that solution quality is highest with static and coevolving fitness schedules, as compared to the either fixed or adaptive schedules.

The circuit schematic for an evolved 85 dB amplifier.