posted on 2022-04-08, 10:53authored byMichael Tetteh, Douglas Mota Dias, Conor Ryan
The evolution of complex circuits remains a challenge for the Evolvable Hardware feld in spite much efort. There are two
major issues: the amount of testing required and the low evolvability of representation structures to handle complex circuitry,
at least partially due to the destructive efects of genetic operators. A 64-bit × 64-bit add-shift multiplier circuit modelled
at register-transfer level in SystemVerilog would require approximately 33,200 gates when synthesized using Yosys Open
SYnthesis Suite tool. This enormous gate count makes evolving such a circuit at the gate-level difcult. We use Grammatical
Evolution (GE) and SystemVerilog, a hardware description language (HDL), to evolve fully functional parameterized Adder,
Multiplier, Selective Parity and Up–Down Counter circuits at a more abstract level other than gate level—register transfer
level. Parameterized modules have the additional beneft of not requiring a re-run of evolutionary experiments if multiple
instances with diferent input sizes are required. For example, a 64-bit × 64-bit and 128-bit × 128-bit multipliers etc., can be
instantiated from a fully evolved functional and parameterized N-bit × N-bit multiplier. The Adder (6.4×), Multiplier (10.7×)
and Selective Parity (6.7×) circuits are substantially larger than the current state of the art for evolutionary approaches. We
are able to scale so dramatically because of the use of a HDL, which permits us to operate at a register-transfer level. Fur thermore, we adopt a well known technique for reducing testing from digital circuit design known as corner case testing.
Skilled circuit designers rely on this to avoid time-consuming exhaustive testing. We demonstrate a simple way to identify
and use corner cases for evolutionary testing and show that it enables the generation of massively complex circuits. All
circuits were successfully evolved without resorting to the use of any standard decomposition methods, due to our ability to
use programming constructs and operators available in SystemVerilog.