Back to CSD home page or CSD Project page.

Project J2-7258

Title of proposed project: Architectural synthesis of computer systems with testability issues
Major field of science: Technical Science
Research area: Computer Structures, Systems, and Networks
Duration of project: 3 years (1995-97)
Total work load in hours: 3.636
Principal investigator: Dr. Jurij Silc
Project summary: In the research project we will focus on the following topics: how to consider all the relevant factors, costs, constraints, and objectives during the architectural synthesis; how to decide for a given application the number and types of processors to be included in the system; how to decide the interconnection between the selected processors; how to use the designed system effectively to perform the application task; how to map and schedule the subtasks onto the processors; and how to incorporate testability considerations in the architectural synthesis.

Scientific background and purpose of the research

I. The need for design automation on higher abstraction levels
In the computer system design, automated synthesis techniques should be employed at all stages of the design process. In this way, design cycles would be significantly reduced, and several different design styles can be generated and evaluated quickly. In addition, automation may out-perform average human designers in generating high quality designs. However, due to their complexity, the present day computer systems are very difficult to design by handcrafting. As the complexity of the systems increase, so will the need for design automation on more abstract levels where functionality and tradeoffs are easier to understand.

II. Levels of abstraction
The synthesis task is to take a specification of the behavior required of a system and a set of goals and constraints to be satisfied, and to find a structure that implements the behavior while satisfying the goals and constraints. Just as design is described at various levels of detail, so synthesis can take place at various levels of abstraction. At the bottom of this hierarchy is the device level, where the focus is on the internal structure and behavior of the devices (e.g. transistors). Above this level is the circuit level, which views the system in terms of the individual devices. Next comes the logic level, where the system is described as a network of logic elements (e.g. gates, flip-flops) and the behavior is specified by logic equations. When the system is viewed as a set of interconnected storage elements and functional blocks (e.g. registers, ALUs, Muxes, bus) we have the register-transfer level (RTL). In this case the behavior is described as a series of data transfers and transformations between storage elements. Above this level is the algorithmic level, where the focus is on the computations performed by an individual processor, i.e. on the way that sequences of inputs are mapped to sequences of outputs. Finally, at the top of this hierarchy, is the system level. Here, systems are described as interconnected sets of processors, memories, and switches.

III. Architectural synthesis with testability issues
The synthesis on the system level is called architectural synthesis. System-level issues relate to the number and configuration of system-level components (processors, memories, switches), rather than to how those individual pieces are designed. For example, the following are also system-level issues: trading off the complexity between control and data paths, partitioning the control, breaking a system into interacting asynchronous processes, breaking a memory array into separate modules, collecting a set of registers into register file, and changing the bitwidth of the datapath in order to increase/decrease parallelism. To date, architectural synthesis aids are not yet commercially available but the situation is expected to change in the next years opening a flourishing research and development area. Some behaviour synthesis efforts has been reported in working prototypes which may be currently in the transfer phase to the industry. The following topics of current research in high level synthesis will be studied in our proposed basic research project:
1.) how to consider all the relevant factors, costs, constraints, and objectives during the architectural synthesis,
2.) how to decide the number and types of processors to be included in the system,
3.) how to decide the interconnection between the selected processors,
4.) how to use the designed system effectively to perform a given application task,
5.) how to map and schedule the subtasks onto the processors, and
6.) how to incorporate testability considerations in the architectural synthesis.

Present state of knowledge in the proposed research field

I. State of the art in the high-level synthesis
The roots of high-level synthesis can be traced back to the 1960s. During the 1970s most of the effort went into automating tasks at lower levels of the design hierarchy, such as layout. In addition, great progress was made in the development of techniques and algorithms. In the 1980s work on high-level synthesis started to spread from the academic community to industry. Nowadays, high-level synthesis systems are producing manufacturable chip designs for applications such as signal processing, pipelined processors, and interfaces. It is expected that architectural synthesis aids will become commercially available as a result of the flourishing research and development in this area of the high-level synthesis (Lagnese and Thomas, 1989; Gajski et al., 1994). The modern synthesis approach can be described as follows. The structural description of a system is a specification of a set of components and their interconnections. More recently, however, behavioral descriptions of systems are used. Such a description specifies what the system needs to do, i.e. the way that each of the components interacts with its environment. High-level synthesis transforms behavioral description to the structural one. A typical way of describing behavior is to write a program in an ordinary computer language or in a special hardware description language (e.g. VHDL). The first step in high-level synthesis is usually the compilation of the hardware description language into an internal representation. Most approaches use flow graphs to represent both the data flow and the control flow implied by the specification. Before proceeding to the second step it is desirable to do some initial optimization of the flow graph, such as a dead code elimination, constant propagation, common subexpression elimination, and loop unrolling. The second step of the high-level synthesis, which is the core of transforming behavior into structure, includes operation scheduling and hardware allocation. These two tasks have been studied extensively and a variety of algorithms have been published by Silc and Robic, 1993; Silc, 1994a; and Silc, 1994b. Overviews of the different schools of thought have been given by McFarland et al., 1990; and Gajski et al., 1993. The scheduling and allocation are closely interrelated. In order to have an optimal design, both tasks should be performed simultaneously. However, due to the time complexity, many systems perform them separately or introduce iteration loops between the two subtasks. Scheduling involves assigning the operation to control steps which are the fundamental sequencing units in synchronous systems. Allocation involves assigning the operations and values to hardware, i.e., providing storage, function units, and communication paths, and specifying their usage. To minimize them together is usually too complex, so in many high-level synthesis systems they are minimized separately. Therefore, allocation is usually further divided into three subtasks -- variable binding, operation assignment, and data transfer binding. Variable binding refers to the allocation of registers to data, i.e., values that are generated in one control step and used in another must be assigned to registers. Some systems have a one-to-one correspondence between variables and registers, while others allow register sharing for those variables which have disjoint lifetimes. Operation assignment binds operations (e.g., addition) to function units (e.g., an adder or an ALU). Of course, operations can share functional units only if they are mutually exclusive, that is, they are assigned to different control steps. The problem is then to form the minimum number of groups consisting of mutually exclusive operations since this will minimize the number of function units. Data transfer bindings represent the allocation of connections (e.g., busses, multiplexers) between hardware components (i.e., registers and function units) to create the necessary information paths as required by the specification and the schedule. Connections consist of busses and/or multiplexers. Busses offer the advantage of requiring less wiring, but they may be slower than multiplexers. A combination of both is often the best solution. Once the schedule and allocation have been accomplished, it is necessary to synthesize a controller (hardwired or microcoded) that will drive allocated resources as required by the schedule. Finally, the design has to be converted into real hardware. Lower level tools such as logic synthesis and layout synthesis complete the design. While the high level synthesis is naturally a top-down process, testing and conventional design-for-testability (DFT) techniques are mainly bottom-up activities. DFT rules are typically applied after the RTL structure of a circuit has been defined. To bridge the gap between the state-of-the-art in design synthesis and in test synthesis, high level DFT principles are now intensively investigated. The research is oriented toward multi-criterion decision analysis of design controllability/observability, minimization of self-loops, and integration of off-line and on-line self-testing structures.

II. Future of high-level synthesis
There are still many unanswered questions related to such issues as specification, input/output, designer intervention, complex timing constraints, and the relation of synthesis to the overall design and fabrication process. There is an acute need for theoretical formulation of high-level synthesis problems, development of canonical forms, and optimization algorithms for different application architectures (Gajski et al., 1994). In order to move upwards effectively, we need to build other description languages on top of the popular VHDL. Additional work is needed on more general representations of algorithms and design styles for high-level synthesis. Research is also needed for taxonomize target architectures and provide modeling guidelines for different abstraction levels for each target architecture. More comparative work is needed to establish good quality-measures and good estimation algorithms for quality-measures that can quickly reduce the search through the design space. Since most algorithms make oversimplified assumptions regarding target architectures, more work is needed on algorithms for more realistic design models. There is a lack of standard component sets for high-level synthesis and algorithms for technology mapping between arbitrary component sets. Technology mapping should be extended to higher-level system components, which in turn will require proper formalization of component descriptions. The success of high-level synthesis depends on a good support framework, including databases, environments and graphical front-end, to sustain system design at higher levels. Research on databases is sporadic and work on environments is almost nonexistent. Initial results in high-level DFT that have been reported recently indicate that algorithms that focus on single design issues (i.e., bracking or reducing self-loops) are relatively simple (Steensma et al., 1993; Eschermann, 1993; Mujumdar et al., 1994). However, much more effort will be required for multi-criterion decision analysis of design controllability/observability and incorporating of self-testing structure. An interesting issue is also the relationship between 1149.* DFT standards that are currently under development and the high-level DFT techniques in order to effectively use the advantages of both sides. These are some of the areas where much work and development are needed in order to make high-level synthesis practical.

S.Raman, L.M.Patnaik, J.Silc, and M.Spegel. Parallel Implementation of VLSI Circuit Simulation. Informatica 15 (1991)
B.Robic, P.Kolbezen, and J.Silc. Area optimization of dataflow-graph mappings. Parallel Computing 18 (1992)
J.Silc, B.Robic. Program partitioning for a control/data driven computer. J. Computing and Information Technology 1 (1993)
B.Robic, J.Silc. High-performance computing on a honeycomb architecture. Lecture Notes in Computer Science 734 (1993)
F.Novak, N.Sutanovac, R.Trobec. Built-in self testing of communications systems using ASIC technology. Microprocessors and Microsystems 17 (1993)
F.Novak, I.Mozetic, M.Santo-Zarnik, A.Biasizzo. Enhancing design-for-test for active analog filters using CLP(R). Analog Integrated Circuits and Signal Processing 4 (1993) also in J. of Electronic Testing: Theory and Applications 4 (1993)
J.Silc. Scheduling strategies in high-level synthesis. Informatica 18 (1994)
J.Silc. Scheduling and allocation in high-level synthesis. Operations Research '93 (Physica-Verlag, 1994)
E.D.Lagnese, D.E.Thomas. Architectural partitioning for system level design. Proc. 26th DAC (1989)
M.C.McFarland et al. The high-level synthesis of digital systems. Proc. IEEE 78 (1990)
D.D.Gajski et al. High-level synthesis: Introduction to chip and system design. (Kluwer Academic Publishers, 1993)
J.Steensma, W.Geurts, F.Catthoor, H. De Man. Testability Analysis in High Level Data Path Synthesis. J. of Electronic Testing: Theory and Applications 4 (1993)
B.Eschermann. Enhancing On-Line Testability During Synthesis. J. of Electronic Testing: Theory and Applications 4 (1993)
D.D.Gajski et al. System level methodology and technology (Tutorial). Proc. Europ. Design and Test Conf. (1994)
A.Mujumdar, R.Jain, K.Saluja. Incorporating Testability Considerations in High-Level Synthesis. J. of Electronic Testing: Theory and Applications 5 (1994)

Hypothesis presentation

It is the fact that very little has been done to provide architectural synthesis aids. However, it is expected that automated synthesis techniques, when developed and applied at the system level, can:

Significance of the results for science development

The significance of the results is that, given the behavioral description of an application, we will have the ability of generating, evaluating and selecting candidate computer system designs at the system level. Here, several far-reaching decisions have to be made regarding the number and types of processors, interconnection structure, mapping and scheduling the subtasks, and systematic introduction of testability into the system.

Significance of the results for application

Since the present day computer systems become more and more difficult to design by using ad hoc techniques, the techniques of the architectural synthesis are more and more needed, as they promise shorter design cycles and offer several design styles for a given application. A good automated architectural synthesis (together with syntheses on lower levels) may out-perform average human designers in generating high quality designs.

Detailed description of experimental methods and procedures

The first period of the project will deal primarily with the relevant factors, costs, constraints, and objectives of the architectural synthesis. Clarification and sistematization of these issues is neccessary from the methodological standpoint of view since architectural synthesis is a new research field. These issues will subsequently be used to conduct search methods in the architectural design space. Several (heuristic) search methods will be evaluated. Also, the design space will be defined by specifying, for each architecture, the attributes such as the number and types of processors, the interconnection topology, amenability for supporting the application of a given type and the introduction of the testability, etc. The core of the synthesis consists of the partitioning, scheduling, and allocation of the subtasks to the processors of the selected system architecture. Being NP-complete, the problems are usually tackled by heuristic methods. Several of these methods will be evaluated and their applicability will be determined for a given architecture and application type. The objective is to use the designed system effectively to perform a given application task. Current trends in incorporating testability considerations in high level synthesis will be studied and papers and reports of applications will be surveyed. Emphasis will be given to the problem of effective cooperation of high level DFT techniques and the conventional bottom-up DFT solutions defined by the emerging IEEE 1149.* standards. For this purpose, test propagation through modules and circuits for hierarchical test generation, based on ambiguity set algebra, will be studied. Case studies will be performed on currenty available design tools (Alliance, Ocean) possibly upgraded by some public domain architectural synthesis tool.

Timescale

Research equipment

Back to CSD home page or CSD Project page.