Design space exploration (DSE) is the process of examining alternate implementations of a system at different points in the ranges of performance, cost, memory usage, power usage, time to market, and other metrics.
This paper is an encyclopedic compendium and summary of current techniques in use, and available, for DSE. The organization of the topics is excellent: establish and discuss the metrics that serve to evaluate a single design; establish methods that can be used to move a design around in the design space; discuss the representation of the design space; and describe design frameworks, tradeoffs, and benchmarks.
Systems are becoming more complex throughout the design hierarchy, from submicron effects at the device level, to the integration of heterogeneous processor architectures at the top level of the system. Working on such systems is becoming more challenging. The design methods are very complex, and so are the systems on which we would like to use them.
Since we all know and acknowledge that the design of complex systems is itself a problem that is at once challenging and intractable, automating any aspect of it is also challenging and (it turns out) intractable. If design and optimization are difficult problems, they become much more difficult when attempted using automation on complex, multidimensional problems with incommensurable coordinate units.
This paper is very well written, but is difficult reading nonetheless, rather like perusing a laundry list or telephone directory. The information is a valuable list/directory for the system designer.
One of the features of the paper is its annotated compilation of the software systems already available commercially or in academia, summarized in tables that present and assess the systems. The paper includes an extensive set of references, including links to the full text of many references that are online. This paper is a valuable contribution to the field.