McEnroe Thesis CH3 Simulation

download McEnroe Thesis CH3 Simulation

of 23

Transcript of McEnroe Thesis CH3 Simulation

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    1/23

    CHAPTER II ISIMULATION

    The purpose of simulation is to uncover interesting phenomena and to gaininsight into areas which are difficult to analyze. To be effective, a simulation m ustbe accurate, flexible, easily m odified, and fast enoug h to g arner statistically validresults. Object-oriented programming (O O P) meets the first three requirements. Anefficient language w ith tight algorithms running on a reasonably fast compu ter meetsthe last requirement. The language used for the simulation is Turbo C+ +. Thecomputer used is a 25 M Hz IB M compatible with an 80386 processor and a Cyrixfloating point coprocessor.

    Object-Oriented MethodThe initial reason for choosing object-oriented programming stems from the

    real world nature of the FIFO memory device. The FIF O contains data and followsprocedures which govern the w riting and reading of data words. Depending on itsinternal state the FIFO will set empty and full flags. In object-oriented terms acollection of data and procedu res forms a class. A specific instance of the class FIFOis an object. To consider how the softwa re object matches the real world integratedcircuit consider the O O P property of encapsulation.

    24

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    2/23

    Encapsulation: Co mbining a data structure with the functions (actionsor methods) dedicated to manipulating the data. (Borland 199 0a p. 121 )OOP protects the data in the FIFO by only accessing it via explicitly definedfunctions, similar to how a circuit can only access data in a ph ysical device via theinput and output pins.

    Inheritance is another useful OO P property exploited in the simulation tosimplify programming.

    Inheritance: Building new, derived classes that inherit the data andfunctions from one or mo re previously-defined ba se classes, whilepossibly redefining or adding new data and actions. (Borland 199 0ap. 122)

    The simulation sends the generated data stream d own tw o paths, one subject to faultsand the other unmodified and used for comparison purposes. The data streams staysynchronized by simultaneous passage through two separate FIFOs. The faultinjecting FIFO adds new functions to the base functions inherited from the n on-faultinjecting FIFO. Inheritance minimizes software coding errors, improves codingproductivity and enhances code readability by reusing existing classes.

    Ob jec t -Or iented Des ignThe simulation consists of seven objects formed from six classes. These

    objects and the corresponding data flow are shown in fig. 9. Data is generatedrandomly then coded for error correction. The program writes the encoded data intotwo FI FO s, one of which injects faults, the other does not. The chan nel evaluatorobject compares the output of the two FIFO s to exactly measure the faults introduced.

    25

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    3/23

    G E N E R A T O R ,---001 ENCODER FA UL TYF IF O D E C O D E RCODE

    EVALUATOR

    R E F E R E N C EF IF O

    C H A N N E LEVALUATOR

    Figure 9.--Simulation O bjectsThe decoder object takes the faulty FIFO output and performs error detection andcorrection on the data stream. A second evaluator compares the decoded w ord withthe reference word from the good FIFO to determine the effect of the error correc-tion. Each of these objects will now be examined in detail. The c omme nted code forthe simulation is included as App endix A.

    G e ne r at o r O bj e c tThe generator object forms a data word of width k. Each bit is independently

    generated. Turbo C ++ uses a m ultiplicative congruential generator to generate astream of integers between 0 and 2 15 -. The generator object divides the randominteger by 2' using integer arithmetic, effectively taking the floor of the divisionresult. This operation yields a '1' or a '0' with equ al probability.

    E nc o de r O bj e c tThe enco der object takes the random data word w ith k information bits and

    constructs a code word w ith n total bits. The two coding options implemented in thesimulation are single bit even parity and a m odified Hamm ing code.

    2 6

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    4/23

    Single bit even parity. The encoder object appends one parity bit to the dataword. If there are an even number of l's in the data word, the encoder appends a 0.If not, the encoder appends a 1. In either case there are an even number of 1's in theresulting code w ord.

    Table 1.--Parity Matrix for Hsiao Code (Lin 1983 500)

    1 0 1 1 0 00 0 1 1 0 10 1 1 1 0 01 1 0 0 1 01 1 1 0 0 00 1 1 0 0 10 1 1 0 1 01 0 0 1 1 00 1 0 1 1 00 0 1 1 1 01 0 1 0 0 11 0 0 1 0 11 1 0 0 0 11 0 0 0 1 10 1 0 0 1 10 0 0 1 1 1

    Modified Hamming code. The modified Hamming code used in thesimulation was first proposed by M. Y. Hsiao (Hsiao 1970). Key features of thiscode include the ability to detect all double bit errors and correct all single bit errors.The encoder object performs a modulo 2 matrix multiplication of the data word and

    P =

    27

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    5/23

    the generator matrix. The generator matrix is of the following form:G = [I k Pl1 )

    Ik denotes the k x k identity matrix. P is the parity matrix shown in table 1.

    R e fe r e nc e F I F O O b j ec tThe Reference FIFO object is an instance of the FIFO class. Its purpose is to

    maintain an uncorrupted copy of the coded data stream for comparison with thefaulted data stream. There are three main elements of a FIFO. The first is the dataarray. In the simulation this is an integer array where the number of columns is equalto n, the number of bits in the code word. The number of rows is equal to K , themaximum word capacity of the FIFO. In its physical implementation, the array istypically a square of silicon with multiple data words per row. This will make adifference only during fault insertion and will be addressed later. The second type ofdata element is the read and write pointers. The FIFO employs these pointers totranslate the array into a circular queue as shown in fig. 10. The write pointer startsby writing input data to address Ox0...0. Each word increments the write pointer by1. At address OxF...F the pointer wraps around to continue writing at address Ox0...0again. The read pointer similarly starts at Ox0...0 and progresses by 1 with eachword read out. In fig. 10 the FIFO contains OxFFFE - 0x0003 = 65,532 words.Mechanisms are needed to prevent too many words from being read in or out. Thusthe third data type is flags which indicate the internal state of the FIFO. The empty

    28

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    6/23

    Figure 10.-- FIFO O perationflag is set when the write pointer equals the read pointer, indicating that there are nomore data words left. The full flag is set when the write pointer equals the readpointer less one (Integrated Device Tech nology 19 87). The simulation checks thestatus of these flags before attempting a read or write operation.

    Fau lty FI F O O bjectThe Faulty FIFO object is an instance of the Faulty FIFO class which inherits

    all of the data structures and memb er functions of the FIFO class. Its purpose is tosimulate the permane nt and transient types of physical faults identified in the reviewof literature chapter. The following sections describe the fault insertion algorithm and

    29

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    7/23

    capabilities for each fault type.Table 2.-- Format for Stuck-At Fault Matrix

    # of faults (n)x 1 y 1 stuck-at valuex 2 y 2 stuck-at value... ... ...X n yn stuck-at value

    Stuck-at faults. An unlimited number of stuck-at faults can be specified.This fault occurs during write operations. During each write, the cell address ischecked against the list in the fault matrix. If there is a match, then the stuck-at valueis written to the memory cell. Table 2 shows the stuck-at fault matrix format.

    Decoder faults. This fault routine implements both the permanent andintermittent pointer faults discussed in the review of literature. Read and writedecoder faults are specified separately. During a read operation, the Faulty FIFOobject checks if the read row is in the fault matrix. If it is, the object returns the dataword at the add ress, offset by the displacement value in the second column of the faultmatrix. For example, if the fault matrix entry was (37,-8), then instead of readingthe word from row index 37 the object would return the value at row index 29. Faultmatrices exist for both read and write decoder faults. Their common format is shown

    3 0

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    8/23

    Table 3.--Format for Decoder Fault Matrix

    # of faults (n)1' faulty row displacement

    ... ...n th faulty row displacement

    in table 3. As mentioned before, the physical layout of the memory is usually squareresulting in more than one data words per row. The number of data words per rowis defined in the simulation by the compile time variable SHIFT. The Faulty FIFOobject compensates for the SHIFT in the memory array. In a 100 cell memory arraywith 5-bit words there would be 2 data words per memory row. If the fault matrixentry were (3,1), then when words 6 and 7 are accessed, the object would returnwords 8 and 9. Table 4 shows the array with row indices and word numbers.

    Table 4.--Square Memory Array with 100 Cells

    Row Number Word Numbers0 01 22 43 64 8 9

    3 1

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    9/23

    Counter faults. These faults simulate transient errors in the read and writeindex registers. On a random basis, one of the registers may fail to increment due toan alpha particle hit on an address line at the precise moment of the read or write.To model this behavior the simulation generates a uniform deviate and tests whetherthat number is below the parameters wc_freq or rc_freq corresponding to writecounter or read counter faults. X w c is a constant arrival rate for alpha particles hittingthe address lines. 7, s the time span when address lines are sensitive to alpha particle

    w c_f req = 1-e - A " `2 )strikes. Since both of these parameters are constant, w c_freq is a constant as shownin eq. 2.

    Coupling faults. This fault simulates a one-way coupling between a modifyingcell and the target cell. Like stuck-at faults, an unlimited number of coupled cells can

    Table 5.--Format for Coupling Fault Matrix

    Target Cell Coordinatesodifying Cell Coordinates# of faults (n) N A NA NAx 1 yi al b 1... ... ... ...X n yo an bi,

    be specified. The simulation checks for these faults during read operations. When a read is performed, the object searches the fault matrix to see if any of the cells

    3 2

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    10/23

    e 2 .. r 0 at)iP(X = i) -i!i = 0, 1 , ... , n, ... ( 3 )holding the data word are listed. If so, the object modifies the target cell's value andthen returns the faulted data word. Though this fault is considered permanent, theeffect on the data value varies with the data in the modifying cell. The format for thecoupling fault matrix is shown in table 5.Burst faults. These faults simulate alpha particles striking the data array. ToTable 6.--Format for Burst Fault Matrix# of burst types enabled - 1, 2 or 31 X a4 X 4 9 X9aaccount for the effect that alpha particles have on chips with different feature sizes,the particle can affect 1, 2, 4, or 9 adjacent cells. Alpha particles occur as a Poissonprocess with parameters X, X., X, and Xa respectively. The format of this fixedsize array is shown in table 6. The number in the upper left corner indicates thenumber of burst types. The simulation determines how many alpha particles of eachsize occur during the time slice. The probability that i alpha particles of size 1 occurduring a time interval r is (Meyer 1970): 3 3

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    11/23

    The simulation uses a uniform deviate (U) to randomly generate the numberof particles i by com puting the value of P(X = i) given X. and r starting w ith i =0. If P(X = 0) > U then no alpha particles occurred. The next loop iterationcomputes P(X = 1). If P(X = 0) + P(X = 1) < U then at least 1 alpha particleoccurred. Th e simulation iterates until the sum of prob abilities exceeds the un iformdeviate. The num ber of particles which occurred is one less than the value of i whichcaused the Poisson process cdf to exceed the uniform deviate. This is the rejectionmethod similar to that explained by Press et al. (1988 p. 218). Press determines thenumber of Poisson events in an interval by com puting exponential arrival times untilthe cumulative time exceeds the interval. The simulation uses that method incontrolling the process flow as described later (Press 1988 p. 221). The discussionon process flow below also describes how the simulation generates uniform deviates.

    For each alpha p article occurrence the simu lation generates a rando m x, ycoordinate as the corner cell of the alpha particle impact area. If the alpha particleaffects more than one cell then the remaining cells are changed as show n in the table7. The simulation models two factors which affect the distribution of cell hits. Whenthe silicon memory chip is square, the simulation distributes the affected cellsdifferently, which is show n in table 7.

    Interleaving is the second factor governing the mapping between memory cellsand data word bits. When interleaving is enabled, the array data storage is notchanged. The algorithm shifts the faulted cell locations to account for the datainterleave. The purpose of interleaving is to prevent a multiple cell burst from

    34

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    12/23

    Table 7.--Fault Mapping Between Memory Chip and FIFO Data Structure11 11 0 1 I 11 I 1 1 11 11 11 1 1 1 I I 1 1 I 1 1 1 1 11 0 1 1 11 1 1 1 1 1 1 0 01 1 1 1 11 1 1 1 1 1 1 11 1 1 0 0 1 1 1 1 1 1 1 1 0 01 1 1 0 0 1 1 1 1 1 1 111 1 1 1 I 1 1 1 1 1 11

    1 11 1 1 1 1 11 1 1 1 10 0 0 1 1 111110 0 0 I 1 111 1 1 I 1 1 0 0 0 I I1 1

    1 0 0 0 11 1 1 1 I1 0 0 0 11 1 1 11 0 0 0 1

    Memory ChipIFO D ata Structurehitting more than one bit in a word. Therefore the array must have at least an x:1interleave factor where x is the maximum number of memory cells that a burst canaffect. This simulation can have either a 2:1 or a 3:1 interleave. One restriction onarray size is that the interleaved words must fit on one row of the physical data array.Otherwise a word might wrap around to the next row permitting the same multiplecell burst to hit different bits in the same word. Table 8 shows two rows in an arraywhere interleave is 3:1 and each word A-F has 4 bits.

    Table 8.--Data Interleave on Physical Chip Structure

    A l B 1 CA2 B2 C2 A3 B3 C4 B4 C4D1 E FD2 E2 F2 D 3 E3F3 D4 E4 F4

    35

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    13/23

    D e c o de r O bj e c tThe decoder object maps a received code word to a data word. When the code

    is detection only, the data word is the same as the information part of the codeword.When an error correcting code is used, the decoder estimates the data word. Thenum ber of errors that the code can tolerate and still mak e correct estimates is the errorcorrecting capability of the code. The decoder object operations are the complementof the encoder object's.

    Single bit even parity. The decoder object counts the number of ones in thereceived word. If the count is even, the decoder assumes no errors occurred. If thecount is odd, the decoder assumes one error occurred. Obviously, the decoder isunable to differentiate between one, three, five, or any odd numbers of errors.Similarly the decoder is blind to even numbers of errors.

    Modified Hamming Code. The decoding process for the Hsiao modifiedHamming code follows the algorithm in Rao (1989 p. 140). The simulationimplements Rao's hardware algorithm in software. The first step in the decodingprocess is to calculate the syndrome S of the received word D.

    S = D HT4 )HT is composed of an identity matrix and the parity matrix shown in table 1.

    A . If S is 0 then the word is assumed to be error free.B . If the syndrome is nonzero and parity of the syndrome is even, then an

    36

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    14/23

    T =Hly iP _ k Jeven number of errors occurred. Set the number of bit error detectionsto two and the number of word error detections to one.

    C . If not A or B search to see if the syndrome matches any row in the HTmatrix. If so flip the bit in the received word which corresponds to thematching row in the H T matrix. Set bit and word detections andcorrections to one.

    D . If the syndrome does not match any row in the H T matrix, then at leastthree errors occurred. Set bit detections to three and word detectionsto one.

    E valuator Objec tsBoth the channel and code evaluator objects are instances of the evaluator

    class. An evaluator object is attached to two points in the data flow diagram tomeasure the differences in the data stream. Receiving data one n bit word at a time,evaluator objects compare the first k bits, counting the differences as information biterrors. If there is at least one information bit in error, the information word countis set to one. The counters for total bit errors are set to the information error countsand the evaluator continues with the last n-k bits. Any bit errors in these parity checkbits will increment the total bit error counter and the total word error count will beset to one.

    ( 5 )

    37

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    15/23

    Simulation SchedulingThe previous sections described each object and its role in the simulation.

    This section will cover the scheduler routine which ties the objects together anddirects when each is to perform its function. The scheduler determines when data iswritten and read from the FIFO and when and what type of faults are injected.

    Event Stepping vs. Time SteppingOne of the first simulation design decisions was to choose between time

    stepping and event stepping. In time stepping, a scheduler routine performs Bernoullitrials for each Poisson process in the simulation. In a given time period, thescheduler would flip a coin for each process to see if an event occurred. The timeperiod must be chosen small enough so that the probability of more than one event ofeach type per time slice approaches zero for even the highest rate process. This is aninefficient use of resources; during most intervals nothing happens.

    A much better simulation approach is event stepping. The scheduler generatesexponentially distributed event times, then performs those events and advances theglobal clock by the amount of the event time. This strategy makes effective use ofresources but requires a more complicated event scheduler.

    Process F lowThere are three Poisson processes occurring in this simulation. Random data

    words are generated and written to the FIFO with parameter X as long as there isroom in the FIFO. When there are customers in the FIFO, departures take place as

    38

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    16/23

    part of a Poisson process with parameter . The third Poisson process is the arrivalof burst errors.

    Figure 11 shows the process flow of the event scheduler. When the FIFO isempty, the event scheduler generates an exponential arrival time, the word is writtento the FIFO, and the global clock is advanced by the amount of the arrival time.When there are data words in the FIFO, the scheduler generates an exponentialdeparture time. The departure defines a time period in which arrivals can occur. Thescheduler then generates an arrival time and tests whether that arrival time is beforethe departure time. If so, then the scheduler performs the arrival. If however, thearrival time exceeds the departure time, then the arrival is discarded and faults areinserted into each discrete time period.

    Figure 12 shows two consecutive sequences. In the first sequence, the initialarrival time exceeded the departure time so the arrival was discarded, faults wereinserted, and the departure event (write) was performed. In the second sequence,three arrivals occured during the given departure time. For each arrival the schedulerchecked that the cumulative arrival time did not exceed the departure time. After eacharrival, faults were inserted and the next arrival time was tested. When the fourtharrival exceeded the departure time, the fourth arrival was discarded, faults wereinserted and the departure event was performed.

    The discarding of arrivals is possible because of the memoryless nature of thePoisson process. At any point in time, the time to the next event in a Poisson processis independent of the past history of the process. Thus after the departure event is

    39

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    17/23

    Figure 11.--Simulation Flow Diagram

    4 0

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    18/23

    ^^^^^^^^^^ Niiiiiiiiiiiiiiiiio II I I I I I I I I I IM I I I I ABurn faults insertedduring each period.Poisson process resetsPoisson process resets Poisson process resets- epart= Processrrival P r o c e s sFigure 12.--Sample Simulation Time Lineperformed, the scheduler can restart as if from the beginning.

    The scheduler inserts faults three ways during the course of the simulation:read, write, and burst. The read operation faults are: read counter, read decoder,and couplings. Coupling faults are read oriented because their value at read timedepends on the state of the affecting cell at read time. The write operation faults are:write counter, write decoder, and stuck-at faults. The third insertion method concernsburst faults. These faults can happen at any time, across data words, and tend toaccumulate. They are inserted during each discrete time interval defined by read andwrite events as shown in figure 12.

    G e n e ra ti o n o f R a n d o m N u m b e rsTurbo C + + uses a multiplicative congruential random number generator

    which generates an integer between 0 and 2 1 5 -1 (Borland 1990b p. 393). The mul-tiplicative congruential method is a form of the linear congruential method (Knuth

    41

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    19/23

    1969 p. 10). The advantage of this method is that it is very fast; the disadvantage isthat it is not free of sequential correlation on successive calls (Press et al. 1988 p.206). To effectively eliminate this sequential correlation, the simulation performs anadditional shuffling of the data as outlined in Press et al. (1988 p. 207). An array ofrandom numbers is constructed. When a new random number is needed, the systemrandom number routine supplies an index to the array. The number at that indexlocation is returned. A new random number is placed in the array and the old arrayvalue becomes the index the next time the random routine is called (Press et al. 1988

    p. 208).The simulation scheduler needs to transform uniform deviates into exponential

    deviates. To transform a uniform deviate into an exponential deviate, find the pointwhere the cdf of the exponential random variable equals the uniform deviate.

    F(t) =U6 )Solving for t, equation 6 becomes:

    t = 1 ln(1-U)7 )aPress et al. (1988 p. 214) also cover this technique in their description of the transfor-mation method.Verification M ethods and R esul ts

    A subset of the simulation program which included only the three Poisson4 2

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    20/23

    c :4Zc 44 4w0tc44 0.80%0.60%-0.40%-0.20%- 4 -E.S-Z.00%U[I.r3. 0.20%-

    . 4 0 % --I-

    - 0.60%1E +05 1E +06E+07E+08SIMULATION RUN TIMEFigure 13.--X. Simulation Error vs. Simulation Run Timeprocesses was run for increasing lengths. The program listing is included in AppendixB as NURAND3.CPP. The actual number of events for each process should approachthe Poisson process parameter. Figure 13 shows results for increasing run times forone of the parameters. Note that the percentage error decreases as the length of thesimulation increases.

    Program OutputProgram output can be divided into information from objects and information

    from the scheduler. Table 9 shows a sample output with line numbers added.Scheduler output lists the simulation start and stop times, process parameters selected

    4 3

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    21/23

    by the user, fault selection data, and summary statistics on total time and number ofdata words (lines 1-19, 33 table 9).

    Table 9.--Sample Simulation Program Output1tart date and time: Sat Jun 08 22:03:50 199 123rocess parameters are:4rrival (write) lambda is:5ervice (read) lambda is:. 26IFO depth is:0 07atio of data words to mem ory cell rows is:89oding method used:odified H amming (22, 16).10ead fault type is:one11rite fault type is:one12urst faults:nabled1 314urst fault array is:15urst size:requency:16urst size:requency:17urst size:requency:1 819otal tim e = 100.044728 Total number of words read = 942 021ecoder results:22it detections = 14ord detections = 1423it corrections = 14ord corrections = 142 425hannel error events:26nfo bit errors = 7nfo word errors = 727otal bit errors = 14otal word errors = 142 829ecoded error events:30nfo bit errors = 0nfo word errors = 031otal bit errors = 0otal word errors = 03 233nd date and time: Sat Jun 08 22:03:52 1991

    The decoder object lists the number of bit errors detected and corrected asestimated by the code in effect. Also listed is the number of data words which hadat least one bit error detected or corrected (lines 21-23 table 9).

    4 4

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    22/23

    The channel evaluator object gives an absolute measurement of all faultsinjected by comparing the output of the faulty FIFO and the reference FIFO. Channelerror totals are listed for both bits and words and are further categorized by which bitsin the word were affected. Faults in the k information bits of an n bit codeword aretracked in addition to faults which happen in any of the n bits (lines 25-27 table 9).

    The code evaluator object compares the output of the decoder against thereference FIFO output. The code evaluator object has the same output as the channelevaluator object (lines 29-31 table 9).

    Extremely detailed statistics can be gathered about FIFO contents andindividual word statistics. When enabled, the FIFO print feature prints the entirecontents of the FIFO, all buffer registers between simulation objects, and the FIFOstatus flags. This feature was critical during debug and examination of unusual faultsituations. Another print feature produces a file as shown in table 10. Line 1,

    Table 10.--Sample Detailed Word Event File

    Decoder or E valuator Results Event Time Word Number1st Result 2ndResult

    3rd Result 4th Result

    2 1 1* 1 1 1 0 2 2 0 1 1 88680990.257345 177261951 3 4 1 1 1 1 3 4 1 1 1 92955825.250959 185810603 3 3 1 1 1 0 3 3 0 1 1 103713709.150748 20730478

    *Results from Decoder, Channel E valuator, Code Evaluator objects in order

    column 1 of the table contains 2 1 1. This refers to a word where the decoder

    4 5

  • 8/3/2019 McEnroe Thesis CH3 Simulation

    23/23

    detected 2 errors, the channel evaluator counted one of those errors in the info bits,and the code evaluator agreed with the channel evaluator. The second line in the tableshows a word with three errors that fooled the decoder into thinking there was onlyone error. The decoder tried to correct the problem but made the situation worse.The code evaluator object flags that there are now four errors where before thechannel evaluator object only found three errors.

    Though table 10 only shows three lines from the sample file, a typicalsimulation run produces a file of thousands of lines. Exploratory data searching usingthis print feature drew attention to the error interarrival distribution pattern, one ofthe subjects of the analysis section of this thesis.

    4 6