From: AAAI-86 Proceedings. Copyright ©1986, AAAI (www.aaai.org). All rights reserved. Generating Tests by Exploiting Mark Harper MIT Artificial Designed Behavior Shirley Intelligence Laboratory 545 Technology Square Cambrzdge, MA 02139 (mhs@mit-htvax.arpa) Abstract One of the hardest pattern generation problems for a complex because it requires reasoning behavior can be extremely operations that behavior. in digital device. circuit design This is difficult about how to control complex. Knowledge the device was designed is test in part a device whose of the specific to perform can help solve this problem. The key observation is that a device’s designed behavior is often far more limited than the device’s potential behavior. This limitation translates into a reduction of the search necessary to achieve planning goals. We describe an implemented program based on this idea. When this to generate tests where illustrates both We represent graph, through the operations defined tion set defined to be complete. When reasoning specializing about how to manipulate complex systems (e.g. for test generation or diagnosis), system is designed to behave is an important to apply. This used in several knowing how the kind of knowledge paper demonstrates how this knowledge can be ways to produce an effective problem solver for one of the hardest problems in electronic design: generation for VLSI devices. Test generation encounters several traditional including conjunctive planning, and remains test pattern AI concerns, an important, un- solved problem: existing programs are notably unsuccessful large circuits. Human test programmers are more successful, part because ning engineered they use knowledge from many on in and a variety sources of reasoning techniques. Here we focus on one kind of knowledge - designed behavior - which they find important. At the core of our test generation one key observation: tions that ited than of inputs When signed a device’s a device is intended to carry its potential behavior. to a disk controller solutions behavior, system designed is a planner behavior, based This to planning problems can be found within this limitation can translate into a reduction Hypothesis: efficiently work that relies every exercised on what component while staying deof compo- we call the Designed-Behavior in the device within can be fully and the device’s designed This report describes research done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology and at GenRad Inc. Support for the laboratory’s Artificial Intelligence research on digital hardware troubleshooting is provided in part by the Digital Equipment Corporation, and in part by the Advanced Research Projects Agency of the Department of Defense under Office of Naval Research contract N00014-80-C-0505. 884 National Conference / ENGINEERING method is most interfaces, ating a behavior lieve the method of the building e.g. the instruc- The list of operations value, a testing against matches to create appropriate and section for devices characteristics of this problem strategy. Section 4 introduces examples throughout tails of our method. This whose and plan- command of distinct operations they the non-trivial effort of cre- of microprocessor 3 describes graphs solutions. circuits, we betests for many systems (e.g. processors, UART’s, graphics controllers, and the like). The next section gives an overview of the problem, is assumed goal, like loading the behavior graph. In the domain of digital is appropriate when generating blocks which with a behavior behavior interfaces are narrow in the number admit, since each operation requires the test generation consequences for representation a simple processor the paper, while section The method’s performance of several and reasoning which provides 5 contains the deon the processor is shown in section 6. Finally, a simple account of processor design is presented in section 7, which provides justification for the performance 2 achieved. on Artificial intelligence The Task We are interested in the task of test generation for VLSI com- ponents. This task is part of the quality control phase of circuit manufacturing where we verify that the physical circuit in fact Test generation takes a design produces the designed behavior. description for a circuit and produces a set of tests. Taken together the tests must specify sets of inputs and predicted outputs such that, puts AAAI-86 successful is shown tests fails how data is supposed to flow these graphs by simulation of by matching a certain neces- out, is often far more lim- For example, very few sequences correspond to valid commands. the search necessary to achieve planning goals. In testing, the goals involve manipulating individual nents. on i.e. the opera- operates with An example at the device’s for a processor. the search successfully generates is valid, and (quickly) of designed a structure that describes We generate the device. a register Introduction we can reduce it is not. cases. the space The planner 1 is true, sary to generate tests. Our program in situations where this assumption match when the inputs the predicted are applied values to the circuit (i.e. the circuit we can be confident the circuit was manufactured Tests are traditionally created by partitioning and all out- passes all tests) correctly. the design into components and generating a test for each component by (1) working out how to test the component as if it were alone, and (2) working out how to execute that test within the context larger circuit. The second problem is conjunctive planning, of the since it involves achieving multiple, potentially-interacting have to work out how to manipulate to cause a desired The classical pattern of activity approaches goals: the circuit’s (e.g. around primary a component. [Roth66]) use a combination of heuristic search and constraint propagation using representationsof the circuit’s structure and behavior. runtimes are excessive for anything cuits and simple state machines, we inputs gate-level Current other than combinational cirand we think this is a direct consequenceof the use of gate-level representations. More recent to hiresearch (e.g. [SinghG]) appl ies similar search techniques erarchical models of device structure and behavior, yet still does not take advantage of knowing the designed behavior. For com- plex circuits, the human experts any existing test generation than describes several limiting 3 ways remain much more successful program, and the next section - inspired by what the experts Figure In this section of the Problem we describe two domain and the effects and reasoning strategy. they 3.1 Designed Purposefully characteristics have on our choices designed bewhich essen- tially circuit are annotated or the notion contain expressions described in terms problem The point tained within of representation has been used in several unspecified, analog circuit we need to was sufficient worked. know what We require that purpose to aid in determining more the relative algorithms behavior of the behavior graph representation the set of graphs are many patterns information is, i.e. the tasks than sizes of solution spaces search. The sets contain graphs can provide interfaces. generated behavior. Hence, dicates that there this; the system the designer behavior how an opergraphs is this: conof activity a complete Because from them list of operations de- this list is complete, the represent all normal circuit failure to find a useful pattern of activity is no solution within the normal operations inof the circuit. is supposed to accomplish. Our program then uses this information to focus on solutions to testing problems. Figure 1 illustrates different test generation For efficiency, with variables in them, e.g. a READ cycle is of a symbolic address and symbolic data. fined for the circuit’s programs for reasoning about physical systems. In [DeKleer79], for example, the knowledge that a device had some purpose, even though traces. and the corresponding around every component in the circuit. “All our planner must do” is find the patterns of activity that are useful in testing. We Systems of purpose, simulation are parameterized, assume Teleology, states We explicitly represent the space of a circuit’s havior with the behavior graphs mentioned above, ations Domain of the sizes of sets of circuit do - of search. Characteristics 1: Relative that pos- Extreme 3.2 A second and Complexity dominating characteristic of this domain is the sible states of a circuit, i.e. the different ways of consistently assigning values to the circuit’s nodes. If the components com- extremely complex behavior of modern VLSI components. Algorithms which manage this complexity are essential. One way to prising the circuit are disconnected, then there is no constraint between their states, and the set of possible circuit states is the do this is to identify cross product of the sets of individual component states. Connecting the components together makes many potential states inconsistent, resulting in a smaller set of possible states. This is one that focuses closely involves the rest of the circuit, the space that a planner with perfect ability straints could search. Since local constraint to propagate con- propagation tech- The traditional build our problem ing at a different micro-planner useful abstractions2. partitioning of the problem on a single into component suggests that two parts, and another we might that usefully solver in two parts, each part potentially workabstraction level. And this is what we do: a is responsible for solving conjunctive goals around niques are incomplete in their ability to detect global conflicts, algorithms using these techniques search a somewhat larger space individual components, and a macro-planner is responsible for taking the output of the micro-planner and then controlling grosser and backtrack aspects of the circuit We must describe when inconsistencies are found. Within the space of consistent states space of behaviors the circuit was designed of the circuit lies the to perform. This is the space our test generator searches. The ratio of designed behavior to possible behavior depends upon the particular circuit, but the more specialized and complex the circuit, the smaller it tends to be. 1 ‘In the case of the MARK-2 processor, this ratio is on the order of 22”“. Naturally this number says nothing about how the spaces are searched nor about the frequency and distribution of solutions within the spaces. We haven’t yet done the performance measurements for some typical circuits that would yield these numbers. But, as suggested by the performance of our method on a microprogrammed processor, we expect our method to be a useful addition to the spectrum of techniques helpful for solving test generation problems. state, namely its data registers. the circuit structure and behavior two parts of our program. system models the circuit nents, roughly for these For simplicity’s sake, the prototype structure as a flat network of compo- at the level of the block diagrams in databooks. 3 The system uses four levels of behavioral description. The simulation models for the individual components are the foundation. We only require them to predict outputs from inputs, 21n fact, because are abstractions designer. the circuits are designed, it is not surprising that there readily available; they are the abstractions used by the 3Note that, although individual gates. the model is flat, it is considerably above the level of AUTOMATED REASONING I 885 EXAMPLE INPUT SEQUENCES + COMPONENT 1 VIA BEHAVIOR SIMULATION . tion after GRAPHS ~UMMIRIIAT~VIA REGISTER accomplished using Design for Testability techniques. The next section introduces a simple processor which we use as an illustration throughout the rest of the paper, and the sec- BEHAVIORS SUMMARIZATION COMPONENT CHANGES that 4 The MARK-2 The circuit shown 2: Behavior fictional Representations two are summaries Activation havior example, as Lisp functions. mentioned above. of the behavior Sunzmary graphs directly graphs which links contain if the simulator graphs. component notices that sometime during an instruction, is linked to the behavior graph The next The final instances MAC-l the ALU performs registers. Figure 2 shows tions are generated. 3.3 Summary When reasoning VLSI circuits, an add the cuinternal Characteristics The first observation gives us a way to overcome culties resulting from the second. These observations implications which together guide us to the strategy representing 5 The out: first, that they are engineered artifacts, designed to accomplish a purpose, and second, that their behavior can be extremely complex. be controlled each part stand the space of designed behavior the diffi- The ways (e.g. by observing We use simulation because which fails but quickly on the it is much amount worse of time with Our designed present, method rest so that it is undesirable quickly and either terested simulate other methods can generator to fail, be and unpredictable using could variables The inputs erations the circuit’s behavior for solutions to testing goals. If a solution is then our program will find it, and it does so quickly and components. add, of be- flows through the it could be done version create of the circuit). behavior graphs we need only simulate Rather than of numbers the instruction for data. of operations are the complete set of circuit plus perhaps provided inputs by test as programs, experts. because op- some interestthat We repreworks well with another approach to test generation discussed in [Shirley85]. We divide the circuit state into two components: control state and data state4. Control state is initialized the same way for each simulation variables. For example, is an effective test generation strategy. shows the performance of our program 1). 6 a database data, thus reducing the number simulation we need. For example, suppose we’re in- because the search space is limited. To the extent that the Designed-Behavior Hypothesis is true, i.e. that efficient tests for components exist within the designed behavior, then our method The example in section on a simple processor. a working from the databook, sent these simulator searches is to create it can easily to the simulator collected ing sequences way. exhaustively busses inputs accessible ” intermediate in the ADD instruction of the MARK-2. the instruction once for each combination the processor - for a test for it to run for a large no result are not directlv through of the preprocessor once, Naturally, 23 instructions; and data primary graphs which describe how information We do this using simulation, although some applied. nodes in in turn. purpose in other graphs as important is a lgbitincluding a for managing global aspects of the circuit’s captured in the behavior graphs. We discuss solves - and just of this circuit is a sequencer, implementing of the Details containing symbolic runs (or observations) quickly portion portion indirectly and of searching those graphs for solutions to testing goals. We recognize that test generation is a very difficult problem: partial ‘solutions are likely to be the norm in this field for many years to come. Consequently, rather than trying to build a test generator which solves all problems, we are aiming for one which of the problems example Preprocessor havior circuit. have several of explicitly with behavior version Our method has’three parts: (1) a preprocessor for creating the for finding patterns of acbehavior graphs, (2) a micro-planner tivity among the behavior graphs which solve testing goals, and representa- two observations as a teaching The internal must micro- presented processor (3) a macro-planner state which aren’t of the Domain about behavior horizontally modified 80 lines of microcode and outputs. For then the ALU’s add operation generated by simulating that in- how the various 5 is a simple It is a slightly The central the righthand ROM holding to the beof them. The Register Transfer Summary captures effects each behavior graph has on the circuit’s struction. mulative I and the lefthand portion is a RAM. The address and their associated signal lines are this circuit’s Component The operations one or more . of our method. Microprocessor in figure processor. [Tanenbaum84]. wide datapath; so we can implement them level is the set of behavior the details ACTIVATIONS programmed Figure describes and is left by most The simulator run, while the program instructions data state is initialized with counter is initialized to ?PC holding itself is event-driven, the expression where an event (+ ?PC is a circuit The question of what the designer should do when the test generator fails can be answered by stepping back from the test generation problem and considering its place within the larger and simplifying symbolic expressions and (2) recording justifications between events. These justification links form a flow graph context which of circuit but one part of testability design and manufacturing. of the design task. against performance Test generation Thus, if generating tests for a given circuit requires effort or is impossible, then the designer can consider the 886 circuit to make the / ENGINEERING problem is It is possible to trade off ease and reliability considerations. easier. Any redesign too much modifying can be node changing its value. is one component Its essential features of the behavior are (1) propagating graph. The expressions ‘This division depends on the level at which the circuit is described, but for any given level it is fairly clear and generally corresponds to the division of controller and datapath. For the MARK-2, the control state is the microprogram counter and the micro-instruction register, and the data state is everything else (e.g. the accumulator and the program counter). Specific Patterns IrJPUT-1 II/PUT-2 0 65535 65535 0 1 65535 2 65535 4 65535 8 65535 16 65535 <more patterns> A composite event with subevents: AT ?Time = :PLUS OP IIIPUT-1 = ?Value-1 AT ?Time Ilr'PUT-2 = ?Value-2 AT ?Time OUTPUT = ?Output AT ?Time and constraints: (and (controllable? ?Value-1) (controllable? ?Value-2) (observable? ?Output)) Time ------------- ----------_ 98 99 100 -> 101 ?AC) 102 :PLUS cuit the values inputs the data during registers. to say where another, are functions simulation The variables they much of nodes the originated, simplified, the initial in these expressions consequently, flow graph node back to primary inputs. of these two flow graphs. 5.2 of the values run and The behavior .----------_ ---------??? ?Addend OUTPUT i+ ?Addend ?AC of of ADDD’s Figure 4: Portion behavior graph (shown as a table) are marked the values graph form at each is the union the matcher and irrelevant The Micro-Planner The micro-planner’s II:PUT-2 on cir- states the expressions linking IrlPUT-1 ??? indicates an unknown value . indicates an unchanged value (i.e. ditto) -> indicates the match ?Addend = Contents(RAId,?ADDR) Figure 3: An event pattern describing OP to divide the set of behavior subsets depending on whether graphs into relevant the component “did anything interesting” during a particular behavior. then tries each potentially relevant behavior graph task is to take a test for a single component, The matcher in turn until it expressed in terms of the component’s I/O pins, and to rewrite it in terms of the circuit’s pseudo-inputs and outputs (i.e. pri- The matching finds a situation which meets all of the constraints. process itself is straightforward unification augmented to check mary the additional I/O pins plus data registers). The core of this planner is a matcher which takes component tests and finds them in the behavior graph database. If successful, instances of this planner produces will do most a sequence of the work needed of inputs to cause The remainder of the work Where do the component two sources: for standard devices, we ask the domain for the circuit which the test to occur within though we have not yet tried to do this. Component tests are expressed in two parts: of prototypical operations that the component (e.g. a register test data provide (e.g. have must try to load these language data are just sequences in figure 3 describes The pattern for describing and (b) actual numbers). prototypical We operations; of numbers. a prototypical of the MARK-~‘S ALU. The four subevents between place, value and time that define tion. The additional match only instances we could method, (a) descriptions must be able to be able to load data) the register a rich the actual from combinational devices and sequential experts. For other combinational de- vices, we use a conventional test generator. In principle, also use a recursive application of our test generation perform the circuit. is done by the macro-planner. tests come from? We get them constraints further of add operations pattern The matcher constraints. finds numerous havior graphs i.e. when the the behavior graph (ADDD) , which amount stored in main ?Time ?Value-1 ?Value-2 ?Output specialize this pattern to that are useful for test- inputs. As The program portion to apply matching binding pattern by an of this In all of specific test data an event pattern environment. The in figure 3 against 75 Contents(RAId, ?Addr) ?AC (+ Contents(RAM, ?Addr) ?AC) address set up so that from section 3.2 allows which At this point determine what inverse function came out of the ALU, by applying the that we observe at the circuit output. can then (i.e. ?Value-2) instruction Moreover, Summary relevant == == == back-solve to determine properly. Similarly, there must be a output of the circuit which is an invertible function of the ALU's output. With that we can Activation The == some into the two primary test data moves through the circuit to the ALU, it is back to the desired value, thus exercising the ALU The Component memory. instruction of the accumulator add operation describe the relations the ALU’s add opera- then actually to data the value Recall that our purpose here is to the ALU. An additional result of against a behavior graph is a variable bindings resulting from matching the the behavior graph in figure 4 are: isters in order to apply In this case, one addend data be- graph appears in figure 4, displayed in tabular form. the other potential matches the ALU is either incrementing the in all of these cases, one program counter or the stack pointer: of the ALU’s inputs is a constant, and thus is not controllable. of two distinct primary inputs. This allows us to apply test data to the ALU by transforming the data using the inverse functions, the inverted the MARK-~‘S for the ADD-Direct-from-memory increments environment feeding where many situations in which the ALU performs an addition. But only one of these potential matches meets the additional restrictions needed for it to help test the ALU. This match occurs in ing the ALU. In order to help, the expressions on the two input nodes must be controllable, i.e. they must, be invertible functions the inverted transformed places match the subevents of the pattern in figure 3, processor is “put through its paces,” there are must the equations in this binding how it must set up the circuit’s regparticular values to the ALU’s inputs. (i.e. ?Value-1) must be in the RAM at can be specified later, and the other addend be in the accumulator. the micro-planner has now identified the ADDD as the one to use to test the ALU’s addition operation. it has also determined how the data registers must be the ADDD instruction the job of the macro-planner operations which will initialize can do this job. It is now to work out a sequence of circuit the data registers properly. AUTOMATED REASONING / 887 5.3 The Macro-Planner The purpose of the operations macro-planner (in this case the circuit’s micro-planner descriptions is to generate sequences of set up leave important data in one or more registers the ALU’s output in the accumulator), a sec- ond job of the macro-planner to one of the circuit’s is to work out how to move outputs The macro-planner where searches based on the sequence contained through length in the registers. results it can be observed. the space sequences to find one which moves data planner is implemented as straightforward a metric which state so that the single test operation found by the will start with the right data. Since a test opera- tion will sometimes (e.g. ADDD leaves data sequences of instructions) and pattern designed simulation method) (a well-behaved operations for testing macro-planner, set up circuit The with of useful descriptions (i.e. 6 inputs ,I II 5 ----> on an Example Figure 6 shows the fault achieves with the MARK-2 The chose the ADDD information for the program coverage that processor6. was able to generate while to (PRELOAD-IIEIYIORY ?Ac ?ADDR) (LODD ?ADDR) (PRELOAD-MEMORY ?vAm ?ADDR) (ADDD ?ADDR) (STOD ?ADDR) (OBSERVE-14~140~~(+ ?VALUE ?AC) ?ADDR) Performance components, of all of this is the sequence which subsequently included three operations state and two operations to observe it. 1: 2: 3: Test ------------> 4: Observe outputs -> 5: 1, 6: Setup it failed our 7 Explaining Circuit prototype system method operations Note We believe Consider starts testing the datapath to realize despite trolled almost completely of the program’s success that the fact the program that should of the some ality. of the mapping is easily between able to component following account a specification of processor for an abstract registers abstract design: machine and’the machine a designer which includes instruction set. His in hardware while is con- by 80 lines of intricate microcode. Part can be attributed to its use of abstract describing capabilities of the tester two special operations oper .ations and observe-memory hardware. These are the preload-memory which write data into and read data from the RAM. has 1G components and 91 nodes. Each simulation run is approximately 50 clock cycles long, taking about 10 seconds of real time on a Symbolics 3640. Generation of prototype tests, i.e. tests with symbolic data, for this circuit takes 1 minute, including both the time taken for successfully creating tests for some components and failing to do so for instruction, from register these describing how data to register. dataflow graphs Naturally directly To do this, he adds identity transformations. in one graph in hardware: as can’t without boxes gle multiplexor. collects to the graphs components which perform For example, he might insert a reg- to shift allowing some components via time-multiplexing. of its operations to be shared In another into two graphs When all the control signals from By this account, tal refinement controller chine). and them large portions the fact of individual plus that is designed different change means existing components that many datapath processor the merging and creates a these signals at the right any one of the well-known from is designed (stylized implementation The availability of components which chips), a sin- the designer all the graphs is very graph introduce using fit together, the way the datapath merging) in time, another he might and implement the flow graphs later with situation, finite state machine (FSM) to provide times. This FSM is implemented using methods (e.g. with a PLA). ment is transformed the designer sharing there would be a wasteful duplication of functionSo he looks for ways of merging the graphs together. identity in ‘We include GThis circuit the circuit varies over different parts of the circuit, is a direct result of the design process. the programmer accessible job is to implement this implement that succeeds the datapath the directness the with thereby It is also important between of the components that implement between the more “direct” the relationship operations and circuit operations, the bet- and circuit operations and that this variation ister be modified. Thus our program’s failure points out areas circuit that a redesign program should focus on. on the relationship of the processor, and consequently, our method solve testing goals involving that ALU operation. the expert but really depends ter our method performs. For example, the ADD operation of the ALU very directly implements part of the ADDD instruction since data paths are typically much wider than control paths. ’ Our program also quickly fails on the controller, an area which with effort, the Performance and the operations one for each for the highlighted to do so for the others. testable to solve problems side. meeting myriad performance, reliability, and cost constraints. The specification can be viewed as a set of dataflow graphs, the program can quickly work out how to test virtually all of the datapath, which includes more than half of the physical circuit, says is partially on the other method is that it components using Why is there a radical difference in coverage between the datapath and the controller ? We conjecture that the performance it moves tests through of instruction and the amount below. The micro-planner the ALU and provided reasoning the components them. In particular, individual component of circuit operation use of simulation backwards of our complex from the behavior graphs. the reasoning would try to do. A clear advantage can work forward through extremely of our of the end product Also, is critical: sequencer is very difficult, yet this is exactly what planners and classical test generation algorithms descriptions of the effects of instructions) are contained in the Register Transfer Summaries, which are generated by our system An example behavior. matching the microcode goal-directed involving around properly. best-first search The operator of the circuit’s behavior (e.g. while controlling the The program generates these abstract descrip- register state). tions from the (incrementhe way the of a state madirectly imple- operations process doesn’t (it just adds new identity component operations tend (e.g. ALU normally boxes), to “very directly implement” circuit operations. The state machine design process, however, need yield no such simple relationships. The behavior of the whole different from the behavior register, 888 / ENGINEERING ROM, or MUX). controller (a state machine) of any controller component is very (e.g. a CA I MFIRK-2 Figure 5: The MARK-2 Processor HA ,I I, 1 1 I MARK-2 Figure 6: Coverage of processor components AUTOMATED REASONING / 889 This account also suggests a difference between References our approach to test generation and the classical approaches. The usual result of the design process, a circuit topology, is the superposition of the dataflow graphs, plus the identity boxes added to allow sharing, plus the controlling state machine. include the list of operations the circuit This topology doesn’t can perform, nor does it make explicit the circuit, how data moves through e.g. timing [DeKleer79] [Roth661 attempt nents to generate and topology. tests Testing directly experts from the circuit perform compo- well, because 8 are an approximation of the flow graphs. [Shirley851 they 8 Conclusion We have demonstrated how knowledge of a system’s designed behavior can help solve test generation problems, or more generally, problems involving manipulation The key to our method is that be far more limited can translate planning than of complex engineered systems. a device’s designed behavior can its potential into a reduction behavior. of the search This limitation necessary to achieve goals. A prototype system has been implemented and run on a small number of examples. This system has 3 components: (1) a preprocessor to create the behavior graphs using symbolic simulation of input sequences out of the databook; (2) a micro-planner to match simulation tivation aspects planner’s testing goals gotten runs (the matcher from domain experts against is guided by the Component the Ac- to control,global Summaries); and (3) a macro-planner of the circuit’s state (the behavior graphs also supply the operator descriptions). The system has generated tests for a simple apath. It was successful despite the fact that processor’s datthe datapath is controlled by 80 lines of intricate microcode. A clear advantage of our method is that it can, by using simulation, reason forward through complex components, such as the controller, in order solve problems involving the components on the other side. 9 to Acknowledgments The following to the contents Yehudah people have read of this paper: Freundlich, drafts Randall Jeff Van Baalen, or otherwise Davis, Walter contributed Gordon Kramer, Howard Shrobe, Ralil ValdCs-Perez, Brian Peng Wu. I would especially like to thank Gordon who is the testing expert whose methods Robinson, Hamscher, inspired Glenn Williams, Robinson, much of this work. ‘The domain experts report an interesting dichotomy. They say that, for humans, test generation problems are either very easy or very hard. The problems are easy when they can see clearly which manipulations of the device’s interfaces are useful for exercising components inside the circuit, and hard otherwise. In our work, we have have made some effort, albeit informally, to match the performance of our test generation system to the expert’s intuitions about which problems are easy for humans and which are hard. And the expert does report that the results on the MARK-2 match his expectations fairly closely. 890 / ENGINEERING of Technology, Roth, J. P., “Diagnosis 1979, AI-TR-529. of Automata Failures: A 278-291. Shirley, M., “An Automatic proach to Testing,” IEEE lation and Test Generation know the same things designers know and can reconstruct and use the designer’s flow graphs. Finally, our program is successful for the same reason, it reconstructs and uses behavior graphs, which stitute Calculus and a Method,” IBM Journal of Research and Development, Vol. 10, July 1966, pp. and selection relationships, both of which were explicit in the flow graphs before they were merged. Classical test generation algorithms perform poorly, because they de Kleer, J., Causal and Teleological Reasoning in Circuit Recognition, Diss., Massachusetts In- Programming Ap- Workshop on SimuSept Environments, 1985. [Singh85] Singh, N., Exploiting Design Morphology to Manage Complezity, Diss., Stanford Department of Electrical Engineering, April 1985. [Tanenbaum841 Tanenbaum, A. S., Structured nization, Prentice-Hall, NJ, 1984. Inc., Computer Englewood OrgaCliffs,