Background of the Invention
The present invention relates, in general, to a processor having an improved architecture which can economically perform simulation and fault grading of very large scale digital circuits and, more particularly, to a bus evaluator that can economically preform simulation and fault grading of wired OR buses contained in very large scale digital circuits.
During the design of very large digital circuits, such as VLSI circuits comprising upwards of 100,000 transistors, it is crucial to have available relatively quick means for simulating the performance of a current version of the structure. One type of hardware simulator is described in U.S. Pat. No. 4,587,625 entitled "PROCESSOR FOR SIMULATING DIGITAL STRUCTURES" developed by Joseph T. Marino, Jr. and Ronald V. Chandos and assigned to the same assignee, Motorola Inc.
One particular problem encountered in any hardware simulator is that of evaluating the bus lines. This is normally performed in one of two basic methods. One method consists of defining the bus as a multiple element structure with pyramidally cascaded models, or primitives. This results in unnecessary processing of the additional primitives; increases the size of the simulation database; and creates unrealistic bus timing in the simulation.
Another method is to simulate a bus by: stopping the processing when a bus is encountered; reading all of the data necessary to evaluate the bus; and continue processing. Either of these methods would require a great deal of processing time and the processing may have to be halted while the decision is being made.
Summary of the Invention
Accordingly, it is an object of the present invention to provide a bus evaluator that will overcome the above deficiencies.
It is further an object of the present invention to provide a bus evaluator that will evaluate a six state primitive with memory.
Another object of the present invention is to provide a bus evaluator that utilizes a four input primitive.
Still another object of the present invention is to provide a bus evaluator that will not require excessive additional primitives.
Yet another object of the present invention is to provide a bus evaluator that will reduce the processing time.
The above and other objects and advantages of the present invention are provided by the bus simulator described herein.
A preferred embodiment of the present invention comprises a hardware simulator for use with a host computer. The simulator comprises a single, special purpose pipeline processor which simulates a structure described in terms of an advanced primitive. The advanced primitive has four inputs, of a single output and is capable of representing memory cells as well as simpler logic devices. A highly efficient primitive evaluation architecture and bus revolver logic determine the output state of a given primitive in a single clock cycle.
A preferred embodiment of the present invention consists of the addition of bus evaluator logic to a hardware simulator, such as described in U.S. Pat. No. 4,587,625. In operation, a single bus primitive is added to the simulation model wherever a bus is required, a bus being the connection of two or more drivers. As the bus drive primitives are evaluated, the state of the bus is determined on the fly and stored in an accumulator register, called the bus register. Evaluation of the bus continues using the data stored in the bus register and the state of each driver until all drivers have been evaluated. After the last bus driver is evaluated the state of the bus is known and the bus primitive is assigned the value, or state, stored in the bus register hardware and is passed to all receivers on the bus.
Brief Description of the Drawings
FIG. 1 is a block diagram of a hardware simulator embodying the present invention;
FIG. 2 is a model of a primitive circuit to be evaluated;
FIGS. 3A and 3B are models of bus primitives to be evaluated;
FIG. 4 is a model of a second bus to be evaluated;
FIG. 5 is a model of a third bus to be evaluated;
FIG. 6 is a state diagram representing the operation of the present invention;
FIG. 7 is a more detailed block diagram of a portion of the hardware simulator of FIG. 1;
FIG. 8 is a schematic diagram of a wired "OR" bus to be simulated by the present invention;
FIG. 9 is an illustration of a modeling process as performed by U.S. Pat. No. 4,587,625; and
FIG. 10 is a schematic diagram of a wired "OR" bus modeling process according to the present invention.
Detailed Description of the Preferred Embodiments
Referring now to FIG. 1, a block diagram of a hardware simulator, generally designated 10, embodying the present invention is illustrated. Simulator 10 is shown being driven by a host computer 11 and is comprised of a writable control store (WCS) 12, a state memory 13, a primitive evaluator 14, a control system 15, and a bus evaluator 16.
Control system 15 controls the running of the simulation by sequentially stepping through the primitives which are used to describe the digital circuit. At each step, controller 15 supplies a sequential address, or primitive number, to writable control store 12. Controller 15 also supplies an evaluation write address to state memory 13. The evaluation write address corresponds to the location in state memory 13 of the node which is at the output of the current primitive being evaluated.
In the preferred embodiment, nodes are identified by the number of the primitive at whose output the node appears. Thus, the evaluation address, which locates the output node of the current primitive, is identical to the primitive number supplied to writable control store 12. When writable control store 12 receives a new primitive number from controller 15, it supplies the read address for the locations in state memory 13 of the nodes which are at the inputs of the current primitive. Writable control store 12 also supplies a primitive type indicator to primitive evaluator 14. Once state memory 13 has received the read address for the inputs of the current primitive from writable control store 12, it reads the current states of those nodes and communicates that information to primitive evaluator 14. Since primitive evaluator 14 now has an indication of the type of the current primitive and the states of all of the inputs thereof, it can evaluate the current state of the output. It should be noted here that processing in the different areas is simultaneous, although on different primitives.
In operation, host computer 11 generates an 80 bit data word for each primitive in the circuit to be evaluated. The 80 bit data word consists of the primitive type and the primitive numbers driving each input. For example, in evaluating a circuit 20 of FIG. 2, three primitives (P1-P3) would be compiled by the host computer. The data identifying this circuit would then be input into WCS 12. This data would appear as shown in Table 1.
This data contains five fields of information, the ID field and four input fields, since each primitive is allowed four inputs. The ID field contains data as to the type of primitive and various control and flag setting control data. One type of ID field is shown below.
In this ID field bits 0-8 repesent the primitive type; bits 9 and 10 are fault control bits, bit 11 is the output flag, when this flag is set the evaluated state of the primitive is passed to the host for display; bit 12 is a break point bit, by setting this execution can be suspended after the primitive is evaluated; bits 13 and 14 determine if the bus evaluator should be used or not (whether the primitive is coupled to a bus); and bit 15 is the last primitive flag, this terminates a simulation pass.
The input fields contain the primitive numbers of the primitives which drive each of the four inputs and which are used as addresses by state memory 13. As shown here, primitives P1--P3 only have one input, IN1.
When a simulation is commenced, circuit 20 is evaluated by changing the Y input. This change is made by host computer 11 and is generally the present state of the Y input. The primitive number of primitive P1 is used as an address in WCS 12 to look up the outputs of the devices listed in IN1-IN4. As shown here IN1 is the Y primitive. This information is then transferred to primitive evaluator 14 along with the ID information of primitive P1. Primitive P1 is then evaluated and the new output of P1 is transmitted to control system 15 which will write the result back into state memory 13.
Next, primitive P2 is evaluated for the same time period. At this time the current output from P1 has not been updated, so when P2 is evaluated there has been no change in its input and therefor no change in its output. Finally, P3 is evaluated and, since the output of P2 has not changed, there is no change in the input or output of P3.
Since P3 is the last primitive, control system 15 will check to see if any primitive changed state on the previous pass. This can be accomplished by matching the present outputs with the previous outputs. Assuming that the output of P1 did change the process is repeated. First, P1 is again analyzed, since the Y input has not changed on this pass, P1 does not change. Next, P2 is analyzed. At this point the input to P2 has been updated in state memory 13 and the output of P2 may change as a result of this. Finally P3 is again evaluated, however, as above, the output of P2 has not been updated so there is no change in P3. This process of evaluating repeats until no changes are detected in the circuit, between the present output and the previous output, for a full evaluation cycle.
The above description is a very basic description of how simulator 10 functions. The main function of the present invention is to evaluate buses that are contained in the circuit being analyzed. A bus 30 is shown in FIG. 3A, here outputs of primitives P1 and P2 are coupled to one input of primitive P3. This can not be evaluated in the same manner as above since there are two outputs being coupled to the same input. To evaluate this an extra primitive E1 would have to be added, as shown in circuit 35, FIG. 3B. The writable control store for this would appear as shown below in Table 2.
When circuit 35 is evaluated, primitives P1 and P2 would be updated on the first evaluation pass; E1 on the second evaluation pass; and P3 on the third evaluation pass. This type of evaluation has the drawback of requiring one extra primitive and one extra evaluation pass, thereby wasting processing time by requiring an extra delay in the path.
In FIG. 4 a second bus 40 is illustrated. Bus 40 has the output of five primitives (P1-P5) coupled to one input of primitive P6. In order to model this, two extra primitives (E1 and E2) are required. This would have a WCS input as shown in Table 3.
To evaluate bus 40, a minimum of four evaluation passes are required: primitives P1-P5 on the first pass; E1 on the second pass; E2 on the third pass; and P6. on the fourth pass. Circuit 40 would then require two additional primitives and two additional evaluation passes.
Finally, in FIG. 5 a bus model, generally designated 50, is illustrated. Bus 50 has eight lines being coupled to a single input line. The WCS for model 50 is shown in Table 4.
To evaluate model 50, a minimum of four evaluation passes would be required: primitives P1-P8 on the first pass; E1 and E2 on the second pass; E3 on the third pass; and P9 on the fourth pass. This requires an additional three primitives and two passes for model 50. As the number of bus drivers increases more and more extra primitives and extra delays (evaluation passes) are required.
The present invention consists of replacing all of the extra primitives with an advanced bus primitive (BP) as shown in the dotted lines in FIGS. 3B., 4 and 5. This advanced bus primitive does not require any additional processing pass and only requires the addition of one bus primitive in the WCS as shown in Table 5 for model 50.
The evaluation of model 50 using Table 5 would proceed as follows. First P1 is evaluated using primitive evaluator 14. As part of the ID definition of P1 a flag is set that designates the output as a bus driver, which is an input of a bus primitive (BP). Therefore, once P1 has been evaluated the output goes to control 15 and to bus evaluator 16. The output is then simultaneously processed by control 15, as a standard primitive would, and by bus evaluator 16.
Bus evaluator 16 operates to keep a running tab on the present state of the bus primitive (BP). This is accomplished according to the state diagram shown in FIG. 6. The state of BP is set to an initial default value prior to processing. This default value can be set by the user through host computer 11.
There are six possible states as set out in FIG. 6. These are defined as: a hard 0 (0), a hard 1 (1), a hard X (X), a soft 0 (Z0), a soft 1 (Z1), and a soft X (ZX). The hard values are generally provided by a circuit actively driving a line, such as a driver, an OR gate, etc. The soft values are passively driving a line, such as memory circuits. The X value indicates that the value to which the line is being driven is unknown. Initially, the default state will be set to the primitive's previous state, the previous primitive's present state, Z0, Z1, or ZX.
If the initial default value in bus evaluator 16 is set to Z0 and primitive P1 is evaluated to provide a Z1 output, then the state value contained in bus evaluator 16 is updated to ZX. This is because the value of the input to BP is unknown since neither Z0 nor Z1 is dominant. Next, primitive P2 is evaluated. Since the output of P2 is an input to BP, the result of the evaluation is processed by bus evaluator 16 as well as control 15. If the output of P2 is assumed to be a 1, then bus evaluator 16 transitions to a 1 from the ZX state as shown in the state diagram. The output of BP will transition to 1 here since a hard value is dominant over a soft value. Next, primitive P3 is evaluated in the same manner. Assuming that the output of P3 is designated 0 the state diagram indicates that the BP output transitions to a hard X. This results because two drivers driving opposite data unto the bus yields an unknown value (X). As can be determined from an examination of FIG. 6, once the state reaches hard X there is no value that can change it.
Once primitives P1-P8 have been evaluated the state of the BP output has been determined and is held in bus evaluator 16. Next, primitive BP is evaluated. As shown in Table 5 the inputs to BP are don't cares because they are not used. In place of the normal evaluation for a primitive the state held in the bus evaluator is passed to control system 15 and state memory 13.
A benefit of this method allows BP to be evaluated and its output updated on the same evaluation pass that evaluates and updates primitives P1-P8. This then would allow the modeling of a bus with the addition of only one primitive and with no additional evaluation passes (unit delays).
FIG. 8 shows a wired "OR" bus to be simulated by the present invention. The state of each bus driver primitive in the wired "OR" bus may change by a change in data pins 80a through 80e or enable pins 82a through 82e. FIGS. 9 and 10 illustrate the wired "OR" bus modeling process as performed by U.S. Pat. No. 4,587,625 and the present invention respectively. In FIG. 9, an input change in driver 1' from data pin 80a' or enable pin 82a' is evaluated only in driver 1' on the first pass. On the second pass, the output from updated driver 1' is evaluated in driver 2'. The updated data is fed up through each driver in the same manner in succeeding passes, causing a total of 5 passes or unit delays to simulate a bus. In FIG. 10, each bus driver primitive is coupled to bus primitive 86. Bus primitive 86 represents wire "OR" node 88, shown in FIG. 8, and is evaluated by bus evaluator logic 74 and accumulator 75 according to the state transition diagram in FIG. 6. When an input change is entered into driver 1" from data pin 80a", or enable pin 82a", drivers 1" through 5", and therefore bus primitive 86, are resolved in the same single pass. By decreasing the number of passes to one, the time for modeling is substantially reduced and the modeling accuracy is increased.
Referring now to FIG. 7, a more detailed block diagram of the primitive and bus evaluators of FIG. 1 are illustrated. Primitive evaluator 14 is represented by a latch 70, a primitive evaluator table and logic circuit 71, a multiplexer 72, and a latch 73. Bus evaluator 16 is shown comprised of a bus evaluator logic circuit 74 and an accumulator 75.
In operation, a primitive type and four inputs are loaded into latch 70 from WCS 12 and state memory 13. The information from WCS 12 is from the ID field of the primitive. This ID field is used by primitive evaluation table 71 to determine how to evaluate the primitive. The input fields from WCS 12 are transmitted to state memory 13 which provides the input values of the primitive to latch 70.
The primitive is then evaluated in circuit 71. If the primitive output is not flagged as a bus primitive output, the output of circuit 71 is transmitted to multiplexer 72, which passes the data to latch 73. This data consists of the present value bit (0 or 1); the present Z bit, whether the state is hard or soft; and the present X bit, whether the state is known or unknown (this will override the present value). If the output of the primitive is used as an input to a bus, a bus driver flag from writable control store 12 is sent to bus evaluator logic 74 to load the output of circuit 71 into the bus evaluator logic circuit 74, in addition to latch 73. This input is then evaluated, given the present data on the bus, providing new bus data which is updated in accumulator 75. The data stored in accumulator 75 is the current state of the bus primitive which is made available to bus evaluator logic 74 through feedback path 84. This data stored in accumulator 76 is used in conjunction with the output data from circuit 71 to determine a new state of the bus primitive which will then be stored in accumulator 75. For example, when a first bus driver primitive is entered into bus evaluator 16, it is evaluated in bus evaluator logic 74 with a current bus primitive state from accumulator 74 according to the state table found in FIG. 6 to produce a new state of the bus primitive. This new state is then entered and stored in accumulator 75. A second bus driver primitive is then entered into bus evaluator 74 which is evaluated with the new state of the bus primitive fed back along line 84 from accumulator 75. A new state of the bus primitive is then produced according to the state table in FIG. 6 and the new state is stored in accumulator 75.
When a BP primitive is evaluated, a signal is sent from writable control store 12 to multiplexer 72 and the output from accumulator 75 is passed to latch 73 instead of the output of circuit 71. At this point the control circuit can immediately update the output of BP in state memory 13. This allows the next bus primitive to be evaluated and makes the present state data available for receivers of the bus on the next evaluation pass. This results in the bus represented by BP being evaluated without requiring an extra evaluation pass or unit delay. This then results in a time saving in evaluating a circuit which translates to an economic benefit.
Thus, it is apparent to one skilled in the art that there has been provided in accordance with the invention, a device and method that fully satisfies the objects, aims and advantages set forth above.
It has been shown that the present invention provides a bus evaluator that does not require excessive additional primitives and reduces the processing time.
While the invention has been described in conjunction with specific embodiments thereof, it is evident that many alterations, modifications, and variations will be apparent to those skilled in the art in light of the foregoing description. Accordingly, it is intended to embrace all such alterations, modifications and variations in the appended claims.