MpyTestVecs.tioga
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
by Ross May 8, 1987 4:30:33 pm PDT
Last Edited by: Ross May 14, 1987 3:14:09 pm PDT
Vectors to check out the entire multiplier. Try FirstLevelOnly to get the overall picture of what tests are performed. The control assignments are listed below for reference:
EUControl[0:2] = 110 => Load Mpy
EUControl[0:2] = 111 => UnLoad Mpy
EUControl[3:6] = x0xx => Load 32 bit number
EUControl[3:6] = x1xx => Load floating pt. number
Note: the difference between signed and unsigned multipliers when doingUpper is controlled by whether a single cycle of doingLower follows the 8 cycles (of CLK2 not CLK). It makes no sense to consider an unsigned multiply when only doingLower. See the example below for the timing of this operation
state[0:1] = 00 => done
state[0:1] = 01 => doingLower
state[0:1] = 10 => doingUpper
state[0:1] = 11 => Invalid
For testing purposes, the D1 and FloatD2 inputs are tied together as with D2 and FloatD1.
Vectors which have been commented out have all passed but not deleted from the file.
d1 d2 state euctl neuctl | R
—————————————————————————————————————
Initialization:
0 0 0 60 1f | xxxxxxxx
0 0 0 60 1f | xxxxxxxx
Basics with early completion and waiting after done:
1 1 0 60 1f | xxxxxxxx -- shows early completion
0 0 1 00 7f | xxxxxxxx -- and not removing the product
0 0 1 00 7f | xxxxxxxx -- immediately.
0 0 1 00 7f | xxxxxxxx
0 0 0 00 7f | xxxxxxxx
0 0 0 70 0f | 1
2 3 0 60 1f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 0 00 7f | xxxxxxxx
0 0 0 70 0f | 6
Floating Point load:
The interesting thing about these next two is trying out whether the loading of the floating point works. If it does, the numbers should swap and it should take more cycles to do the booth encoding.
78 3245 0 60 1f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 0 70 0f | 179058
78 3245 0 64 1b | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 0 70 0f | 179058
More Serious Examples:
61000000 3486107a 0 60 1f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 0 70 0f | 3a000000
12345678 2457afeb 0 60 1f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 0 70 0f | bfef6828
Check out the multiply that returns the upper 32 bits:
69000000 19000000 0 60 1f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 0 70 0f | 0a410000
61000000 3486107a 0 60 1f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 0 70 0f | 13e6cc3e
12345678 2457afeb 0 60 1f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 0 70 0f | 02959874
Demonstration of signed vs. unsigned mpy upper:
signed:
80000000 80000000 0 60 1f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 0 70 0f | c0000000
Now for the signed (notice the cycle with state 1 after the cycles with state 2):
80000000 80000000 0 60 1f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 2 00 7f | xxxxxxxx
0 0 1 00 7f | xxxxxxxx
0 0 0 70 0f | 40000000
.