
12-24
ColdFire CF4e Core User’s Manual
For More Information On This Product,
Go to: www.freescale.com
BIST
# The only difference is the modified last line. The original file’s last line
# does not change. The new file’s last line contains the correct ROM BIST
# signature of the proceeding N-1 lines.
#############################################################
# INPUT: The input file is an array of N lines each of which contains 32 ascii
# ones
# (1)s and zeroes (0)s. It should NOT contain any blank lines, NOR any spaces.
#############################################################
# OPERATION: call as such: modify_signature.sh original_filename
# This script invokes a nawk script called modify_signature.nawk.
#############################################################
sed ‘s/0/ 0/g’ $1 | sed ‘s/1/ 1/g’ | sed ‘s/^ //’ | nawk -f modify_signature.nawk
|
sed ‘s/ //g’ > $1.modified
diff $1 $1.modified
12.3.6.2 Modify BIST ROM Signature Script—Part 2
##########################################################
# FILE: modify_signature.nawk
# DESCRIPTION: Use nawk to emulate V4 ROM BIST algorithm.
# N is the length of the array.
##########################################################
# initialize the signature register to all zeroes
##########################################################
BEGIN{for(initial_count=0;initial_count<32;initial_count++)
signature[initial_count]=0}
##########################################################
# calculate next_signature, the only thing special is bit 31
##########################################################
{for(next_signature_count=0;next_signature_count<31;next_signature_count++)
next_signature[(30-next_signature_count)]=xor(signature[(31-
next_signature_count)],$(next_signature_count+2));
next_signature[31]
xor(xor(xor(signature[0],signature[1]),xor(signature[2],signature[22])),$1);
##########################################################
# move next_signature to current signature.
##########################################################
for(signature_count=0;signature_count<32;signature_count++)
signature[signature_count] = next_signature[signature_count];
##########################################################
# The last line of the file is the signature.
# If NR is equal to the last line, modify it. Else reprint the line.
##########################################################
if (NR == N)
print
xor($1,signature[31])
xor($2,signature[30])
xor($4,signature[28]),
xor($5,signature[27]),
xor($6,signature[26])
xor($8,signature[24]),
xor($9,signature[23]),
xor($10,signature[22])
xor($12,signature[20]),
xor($13,signature[19])
xor($14,signature[18])
xor($16,signature[16]),
xor($17,signature[15])
xor($18,signature[14])
xor($20,signature[12]),
xor($21,signature[11])
xor($22,signature[10])
xor($24,signature[8]),
xor($25,signature[7]),
xor($26,signature[6])
xor($28,signature[4]),
xor($29,signature[3])
xor($30,signature[2]),
xor($32,signature[0])
else
print $1 $2 $3 $4,$5 $6 $7 $8,$9 $10 $11 $12,$13 $14 $15 $16,$17 $18 $19 $20,$21
22 $23 $24,$25 $26 $27 $28,$29 $30 $31 $32}
##########################################################
xor($3,signature[29])
xor($7,signature[25])
xor($11,signature[21])
xor($15,signature[17])
xor($19,signature[13])
xor($23,signature[9])
xor($27,signature[5])
xor($31,signature[1])
F
Freescale Semiconductor, Inc.
n
.