# Evolutionary System Design with Answer Set Programming
## 1 Introduction  
Application-specific computer systems are the backbone of any smart product today; such computers are usually referred to as embedded systems, as they are embedded in a larger product. In fact, in this context, the number of embedded systems exceeds the number of general-purpose computers by several orders of magnitude. Because of their integration into larger products and their close interaction with their physical environment, embedded systems must meet stringent design constraints, including size/volume, timing, power, energy, etc. In addition, the design of an embedded system must meet extremely tight time-to-market requirements. All of this continues to be true for embedded systems, which are becoming increasingly more complex. This growth in complexity is due to both more sophisticated applications and more sophisticated computing platforms. In summary, the design of embedded systems is a complex task that must be approached in a process that is as automated as possible. As a consequence, implementations of embedded systems are derived from their specifications. This step is called synthesis and involves a vast number of individual but often interdependent design decisions. These decisions include: (a) the selection of processors, hardware accelerators, memories, and communication infrastructures; (b) the distribution of functions to computational cores, distribution of variables to memories, and the routing of memory transactions through the communication infrastructure; and (c) the scheduling of computations, memory accesses, and memory transactions. Finding a feasible solution for all dependent design decisions is a hard problem in itself; however, in addition, the final product must also be optimized, which leads to a multi-objective combinatorial optimization problem. This step in the design process is called designspace exploration (DSE), which involves the identification of optimal solutions or at least promising candidates. In the past, we have shown that answer set programming modulo theories [1], or AMT for short, outperform other approaches for DSE in communication-intensive embedded systems [2]. The general idea is to use plain ASP for conflict detection and resolution and for routing; furthermore, difference constraints are used for scheduling. However, its applicability is still limited to relatively small systems. In this paper, we explore how the knowledge of a previous version of an embedded system can be used in an AMT-based DSE to find good design candidates faster, thus extending the applicability of this approach. Our approach is motivated by the observation that hardly any complex system is designed from scratch but is instead derived and extended from a previous version. In the literature, this is referred to as product generation engineering (PGE; [3]). Even in the case of new product developments from scratch, numerous variants are often derived from a reference configuration, thus forming an entire product line; both scenarios can be regarded as evolutionary system design (ESD). As a consequence, ESD leads to design approaches where new product variants or generations are derived from existing products. To keep the time-to-market low, the best strategy is often to leave parts that are needed in several versions of the system unchanged, i.e., to make identical design decisions as often as possible. To achieve the goal of retaining design decisions as much as possible, the similarity between different system implementations must be formally defined, even when specifications have been (slightly) changed. In a previous work, we have explored this issue and shown how to use an initially proposed similarity measure in an ad hoc AMT-based DSE [4]. Based on the first promising findings, we now systematically explore this topic in greater depth with a particular focus on the impact of alternative ASP techniques.