1 :Info: test_cpu:  2022-09-03 test_cpu
  2 
  3 Syntax as a command:  test_cpu {-control_args}
  4 
  5 
  6 Function:  checks the CPU hardware for problems that have existed on
  7 the processors.  By running various tests invoked by this command, you
  8 can determine whether the given CPU has had specific problems fixed.
  9 This command is usually used with the set_proc_required command if the
 10 system being tested has multiple CPUs configured.  If one of the test
 11 scripts fails and the successful execution of that test is dependent
 12 upon installation of a particular FCO, the FCO number is displayed in
 13 the error message.
 14 
 15 
 16 Control arguments:
 17 -brief, -bf
 18    inhibits the printing of the test number and name, prior to the
 19    execution of a test.
 20 -cycle COUNT
 21    repeats each test for COUNT times, then proceeds on to the next
 22    test.
 23 -exclude TEST ... TEST, -excl TEST ... TEST
 24    excludes the specified tests from being run.  TEST may be: the
 25    name of one of the tests in "List of requests for diagnostic tests"
 26    section below; or the number of the test to be excluded where
 27    test numbers are displayed by the command:  test_cpu -test_names.
 28 
 29 
 30 -from TEST NUMBER/NAME, -fm TEST NUMBER/NAME
 31    starts testing from the test identified by TEST NUMBER or NAME.  The
 32    default is to start testing from test 1.
 33 -help
 34    displays a brief usage statement.  This control argument should not
 35    be used with any other control argument.
 36 -history_regs, -hregs
 37    displays history registers when a test fails.  The default is not to
 38    display them.
 39 -long, -lg
 40    displays machine conditions and history registers after a fault has
 41    occured.  The default is not to display them.
 42 -machine_conditions, -mc
 43    displays machine conditions when a test fails.  The default is not
 44    to display them.
 45 
 46 
 47 -repeat COUNT, -rpt COUNT
 48    repeats an entire sequence of tests for COUNT times.  The default is
 49    to run the test set one time.
 50 -select TEST_LIST, -sel TEST_LIST
 51    executes only those tests specified by TEST_LIST, where TEST_LIST is
 52    either a set of test names or numbers from the tests that are run.
 53 
 54    The tests are described briefly below.  To find out the exact
 55    details of each test, see the test_cpu program.  The default is to
 56    run all tests.  The command line:
 57 
 58          test_cpu -select cmpc tmir -repeat 5 -count 2
 59 
 60    executes the "cmpc" test twice, then the "tmlr" test twice.  The
 61    sequence is repeated five times.
 62 
 63 
 64 -stop_on_failure, -sof
 65    stops testing when a test failure occurs and returns to a new
 66    Multics command level.  The default is to continue testing with the
 67    next test.
 68 -test_names
 69    lists valid test names and the associated test numbers known to
 70    test_cpu.  This control argument should not be used with any other
 71    control argument.
 72 -to TEST NUMBER/NAME
 73    stops testing after the test identified by TEST NUMBER or NAME.  The
 74    default is to run all tests.
 75 
 76 
 77 List of requests for diagnostic tests:
 78 mlrstern
 79    checks a failure in which the fill character is placed as the first
 80    character on a page.  This test causes a MME1 fault if the hardware
 81    fails.
 82 tmlr
 83    tries several MLR instructions, in several working combinations,
 84    across a page boundary.  Messages are printed for any failures.
 85 csl_oob
 86    checks a particular use of a CSL instruction where the first
 87    descriptor is 0.  This test causes an out_of_bounds fault if the
 88    hardware fails, and a MME1 fault if it succeeds.
 89 
 90 
 91 mvn
 92    checks the use of an MVN instruction that moves a number to a
 93    shorter number.  The first two characters are dropped when the
 94    hardware fails.
 95 mvn_of1
 96    checks the use of MVN to move the number 0.  An overflow indicates
 97    that the hardware failed.
 98 tct
 99    checks a particular TCT use.  The test causes an op_not_complete if
100    the hardware fails, and a MME1 fault if it succeeds.
101 sreg
102    checks the use of an SREG instruction that occurs as the last
103    instruction in a page.  The test causes an op_not_complete if the
104    hardware fails, and a MME1 fault if it succeeds.
105 
106 
107 csl_onc
108    checks a particular CSL use.  The test causes an op_not_complete if
109    the hardware fails, and a MME1 fault if it succeeds.
110 test_sc2
111    checks the use of the SC modifier interacting with page faults.  A
112    MME1 fault occurs if the hardware fails.
113 test_ci
114    checks the use of the CI modifier interacting with page faults.  A
115    MME1 fault occurs if the hardware fails.
116 rpd_test
117    checks a particular use of the RPD instruction as it interacts with
118    the hardware.  A MME1 fault occurs if the hardware fails.
119 
120 
121 mlr_test
122    checks the use of the MLR instruction across a bounds fault
123    boundary.  The bounds fault is followed by a segment fault and a
124    page fault.  A MME1 fault occurs if the hardware fails.
125 cls_test
126    checks the CSL instruction across a bound fault boundary.  A MME1
127    fault occurs if the hardware fails.
128 cmpc
129    checks the CMPC instruction in a way that fails if a timer runout or
130    connect fault occurs in midexecution when the hardware is failing.
131    A MME1 fault occurs if the hardware fails.
132 bad_fill
133    checks the success of moving or comparing fill characters in the
134    first two words of a page.  Failure is indicated by a miscompare and
135    a message to the user.
136 
137 
138 mpy_ofl
139    multiplies -2**35 by itself and checks for an overflow fault (which
140    indicates failure).
141 test_xed
142    checks a particular indexed XED usage that fails if the first
143    executed instruction is an APU-type instruction.  Failure is
144    indicated by a miscompare and a message to the user.
145 cmpc7
146    checks a CMPC failure when both strings begin seven words from a
147    page boundary and run into the next page.  A MME1 fault occurs if
148    the hardware fails.
149 extra_fill
150    checks the MLR instruction to see if extra fill characters are
151    placed after a string when the string crosses a page boundary.  A
152    MME1 fault occurs if the hardware fails.
153 
154 
155 test_cmpc_fill
156    checks the fill mechanism of the CMPC instruction near a page
157    boundary.  A MME1 fault occurs if the hardware fails.
158 acv_restart
159    checks that machine conditions can successfully be restarted after
160    an access violation fault that is caused by a reference to data via
161    an EIS (MLR) instruction.  Failure is indicated by successive
162    no_write_permission conditions.
163 scm_tally
164    checks to see if the SCM instruction works with the tally runout
165    indicator set correctly.  The test calls a small alm program that
166    uses an SCM instruction.  Because the hardware fails erratically,
167    the test is run 10 times to get a (limited) statistical sampling.
168    Failure is indicated by a message to the user indicating the number
169    of times the SCM instruction failed.
170 
171 
172 mvt_ascii_to_bcd
173    checks nine to six (ASCII to BCD) conversion using the MVT
174    instruction.  A large ASCII data segment is generated.  Then a BCD
175    segment is generated using non-EIS conversion.  Three segments are
176    then converted from ASCII to BCD using the MVT instruction, and
177    these segments are compared to the known good BCD segment.  If any
178    compare errors are detected, the contents of both segments are
179    dumped in octal at the failing location.
180 mvt_bcd_to_ascii
181    checks six to nine (BCD to ASCII) conversion using the method
182    described for the mvt_nine_to_six test above.  If any compare errors
183    are detected, the contents of both segments are dumped in octal at
184    the failing location.
185 
186 
187 mvt_nine_to_four
188    checks 9-bit to 4-bit (decimal to packed decimal) conversion using
189    the MVT instruction.  A large segment of data, containing 9-bit
190    characters of values 0 to 15 in a rotating pattern, is generated.
191    Then a second segment is generated, converting the 9-bit characters
192    into 4-bit characters using non-EIS conversion techniques.  The
193    9-bit data segment is then converted to three 4-bit data segments
194    using the MVT instruction and compared to the known good 4-bit data.
195    If any discrepancies are found, the contents of both segments are
196    dumped in octal at the failing location.
197 mvt_four_to_nine
198    checks 4-bit to 9-bit (packed decimal to decimal) conversion using
199    the method described for the mvt_nine_to_four test above.  If any
200    compare errors are found, the contents of both segments are dumped
201    in octal at the failing location.
202 
203 
204 mvt_ascii_to_ebcdic
205    checks nine to nine (ASCII to EBCDIC) character conversion using the
206    method described for the mvt_nine_to_four test above.  If any
207    discrepancies are found, the contents of both segments are dumped at
208    the failing location.
209 mvt_ebcdic_to_ascii
210    checks nine to nine (EBCDIC to ASCII) character conversion using the
211    method described for the mvt_nine_to_four test above.  If any
212    discrepancies are found, the contents of both segments are dumped in
213    octal at the failing location.
214 
215 
216 ci_mod_case_2
217    checks character indirect modification with two tally words and two
218    data character strings, each located at a page boundary.  An LDA
219    instruction is executed on one tally word, CI mod, and a CMPA is
220    executed with a second tally word, CI mod.  Both tally words point
221    to a character string that should be equal.  If the zero indicator
222    does not come on as a result of the CMPA, a MME1 fault is taken,
223    indicating that the hardware failed.
224 acv_restart_csl
225    validates that machine conditions can be successfully restarted
226    after an access violation fault that is caused by a reference to
227    data via an EIS (CSL) instruction.  Failure is indicated by
228    successive no_write_permission conditions.
229 
230 
231 cmpn_tst
232    checks that numeric data moved with an MVN instruction can be
233    successfully compared with a CMPN instruction.  Failure is indicated
234    by a MME1 fault.
235 itp_mod
236    checks that an EPP2,* to a word pair that contains an ITP modifier
237    with a bit offset actually loads PR2 with the correct information.
238    A MME1 fault indicates failure.
239 mvnoosb
240    checks the prepage logic of the CPU for EIS numeric instructions.
241    Failure is indicated by a MME1 fault.
242 cmpb_with_sixbit_offset
243    checks the CMPB instruction with a six bit offset.  A MME1 fault
244    indicates that the hardware failed.
245 
246 
247 cmpb_with_rotate
248    checks the CMPB instruction with a rotating pattern.  A MME1 fault
249    indicates that the hardware failed.
250 cmpc_pgbnd
251    compares a 38-character data string against a zero-length string,
252    for a CMPC instruction that is located at seg|1767.  Either an
253    out_of_bounds condition or a MME1 fault indicates that the hardware
254    failed.
255 csl_pgflt
256    checks that a CSL instruction does not get a no_write_perm condition
257    if it causes a page fault on the target string and the source string
258    is read-only.
259 
260 
261 scm_pgflt
262    tests a problem with the SCM instruction whereby the target operand
263    takes a page fault and the resulting comparison is not made.
264    Failure is indicated by a message to the user indicating the number
265    of miscompares.
266 scd_con_flt
267    tests a failure with the SCD instruction that fails when interrupted
268    by a connect fault.  Failure is indicated by displaying the number
269    of times the SCD failed.
270 xed_dirflt_even
271    tests the ability of the CPU to perform an XED, located on an even
272    word location, of a pair of instructions located on a page boundary.
273    Failure is indicated by an IPR fault.
274 
275 
276 xed_dirflt_odd
277    tests the ability of the CPU to perform an XED, located on an odd
278    word location, of a pair of instructions located on a page boundary.
279    Failure is indicated by an IPR fault.
280 cmpc_adj_len
281    tests the ability of the processor to perform a CMPC instruction
282    which takes a fault on D2 and D2 has residue, indicated by the MIF
283    flag.  The test fails when the level count on D2 is not adjusted
284    correctly on the SPL.  Failure is indicated by an IPR fault.
285 cmpc_zero_ind
286    tests the ability of the processor to correctly restore the zero
287    indicator after returning from a page fault on D2 after a match has
288    occurred utilizing the CMPC instruction.  Failure is indicated by an
289    IPR fault.
290 
291 
292 scm_tro
293    tests the ability of the processor to find the correct character
294    using a SCM instruction.  The tally runout indicator should not be
295    set.  Failure is indicated by an IPR fault.
296 rpt_test_odd
297    checks that a RPT instruction in an odd location does not fail after
298    a page fault on a STZ instruction, after crossing a page boundary.
299    Failure is indicated by an IPR fault.
300 rpt_test_even
301    checks that a RPT instruction in an even location does not fail
302    after a page fault on a STZ instruction, after crossing a page
303    boundary.  Failure is indicated by an IPR fault.
304 
305 
306 scd_oob_tst
307    tests the conditions when D3 resides in a different segment than D1
308    or D2.  Also tests the conditions if there is no match or if the
309    scan ends a few words from the end of a 64K seg.  A seg fault is
310    taken on the seg described by D3.
311 cmpb_onc
312    checks the CPU for cmpb to complete correctly.  An op_not_complete
313    fault will occur on a failure.
314 cmpc_a
315    checks the CPU to insure that the indicators are set correctly.  An
316    illegal_opcode indicates an error.
317 cmpc_b
318    same as cmpc_a except the data and addresses are changed.
319 
320 
321 sreg_no_write
322    checks that the TRS is used (not the PSR) if a sreq instruction is
323    executed two locations from a page boundary.
324 tnz
325    checks for the conditonal transfer at a page boundary.  An
326    illegal_opcode indicates an error.
327 
328 
329 Notes:  All the tests run by test_cpu are contained in the segment
330 >system_library_tools>bound_cpu_tests_.  This segment has an added name
331 of cpu_tests_.  To display the machine condition trace of a test, use
332 the mc_trace command with the test_cpu command
333 
334 
335 :hcom:
336 /****^  HISTORY COMMENTS:
337   1) change(2022-09-03,Swenson), approve(2022-09-03,MCR10124),
338      audit(2022-09-03,Repair), install(2022-09-03,MR12.8-1035):
339      Fix documentation on -exclude control argument. See ticket 135 for
340      details.
341                                                    END HISTORY COMMENTS */
342