Browse Prior Art Database

Data Pattern Generation Based On Required Cyclical Redundancy Code

IP.com Disclosure Number: IPCOM000120345D
Original Publication Date: 1991-Apr-01
Included in the Prior Art Database: 2005-Apr-02
Document File: 2 page(s) / 93K

Publishing Venue

IBM

Related People

Harp, MM: AUTHOR [+2]

Abstract

Disclosed is a method for finding the data required to generate desired CRC (Cyclical Redundancy Code) patterns.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Data Pattern Generation Based On Required Cyclical Redundancy Code

      Disclosed is a method for finding the data required to
generate desired CRC (Cyclical Redundancy Code) patterns.

      One objective of RAS (Reliability, Availability, and
Serviceability) is to design diagnostic tests to fully test hardware.
The current RAS strategy is to check for lines which are stuck active
or inactive.  For data lines, this can be done by using multiple data
patterns which cause each data bit to be written both on and off.  In
addition, to insure data integrity, CRC is appended to a string of
data.

      In some cases, latches are present which contain the last bytes
of a data transfer.  Since the CRC bytes are the last two bytes in
the transfer, these latches will contain CRC.  To test the latches,
CRC patterns must be found which will toggle each bit in the latch.
This requires finding data patterns which will generate the desired
CRC.

      Previously, no way existed to predict what data would be
necessary to result in a particular CRC.  To solve this problem,
formulas were derived for finding the data pattern which would
generate a given CRC.  In addition, a Pascal program was written
which uses the derived formulas to calculate the data for a required
CRC.  This program is currently being used by RAS in the development
of certain diagnostic tests.

      The derivation of the formulas is accomplished through
algebraic manipulation.  This process can be adapted to any CRC
generator polynomial.

      Given the CRC generator polynomial of:
         G(X) = X**16 + X**12 + X**5 + 1,
where " + " is the logical XOR function, and " ** " is the
exponential function, a set of equations describes the generated CRC
in terms of an incoming data byte and the CRC previous to the
incoming data byte.  These equations are listed below, with the
following definitions:
         " + "   is the logical XOR function,
         " n "   is the current state,
         " n-1"  is the previous state,
         " D "   represents a data bit, and
         " CRC " represents a CRC bit.
CRCO(n) = CRC8(n-1) + CRC4(n-1) + CRCO(n-1) + DO + D4
CRC1(n) = CRC9(n-1) + CRC5(n-1) + CRC1(n-1) + D1 + D5
CRCO(n) = CRC10(n-1) + CRC6(n-1) + CRC2(n-1) + D2 + D6
CRC3(n) = CRC11(n-1) + CRCO(n-1) + CRC7(n-1) + CRC3(n-1)
+ DO + D3 + D7
CRC4(n) = CRC12(n-1) + CRC1(n-1) + D1
CRC5(n) = CRC13(n-1) + CRC2(n-1) + D2
CRC6(n) = CRC14(n-1) + CRC3(n-1)...