1
0
mirror of https://github.com/wfjm/w11.git synced 2026-02-16 13:03:16 +00:00
Files
wfjm.w11/tools/tcl/rbtest/test_labo.tcl
2019-07-07 17:52:04 +02:00

168 lines
4.8 KiB
Tcl

# $Id: test_labo.tcl 1177 2019-06-30 12:34:07Z mueller $
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright 2015-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
# Revision History:
# Date Rev Version Comment
# 2019-02-09 1109 1.1 adapt to fifo_simple (full at 15 writes)
# 2015-04-03 662 1.0 Initial version
#
package provide rbtest 1.0
package require rutiltpp
package require rutil
package require rlink
namespace eval rbtest {
#
# Test labo with fifo
#
proc test_labo {} {
#
set errcnt 0
rlc errcnt -clear
#
rlc log "rbtest::test_labo - init: clear cntl, data, and fifo"
rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
#
#-------------------------------------------------------------------------
rlc log " test 1: check that sucessfull blk's do not abort chain"
# use data reg to monitor labo aborts
rlc exec \
-wreg te.data 0x0000
set blk0 {0x1111 0x2222}
set blk1 {0x3333 0x4444}
set blk {0x1111 0x2222 0x3333 0x4444}
rlc exec \
-wblk te.fifo $blk0 \
-labo -edata 0 \
-wblk te.fifo $blk1 \
-labo -edata 0 \
-rblk te.fifo 4 -edata $blk \
-labo -edata 0 \
-wreg te.data 0x0001
# no labo above, so 0x01 written to data !
rlc exec \
-rreg te.data -edata 0x0001
#
#-------------------------------------------------------------------------
rlc log " test 2: check that failed rblk aborts chain"
rlc exec \
-wblk te.fifo $blk0 \
-labo -edata 0 \
-wblk te.fifo $blk1 \
-labo -edata 0 \
-wreg te.data 0x0010 \
-rblk te.fifo 6 -edata $blk -edone 4 -estaterr \
-labo -edata 1 \
-wreg te.data 0x0011 \
-rreg te.data -edata 0xffff \
-wreg te.data 0x0012
# last labo aborted, so 0x10 written, but not 0x11 or 0x12
rlc exec \
-rreg te.data -edata 0x0010
#
#-------------------------------------------------------------------------
rlc log " test 3: check that failed wblk aborts chain"
set blk {}
for { set i 0 } { $i < 17 } { incr i } {
lappend blk [expr {$i | ( $i << 8 ) }]
}
rlc exec \
-wreg te.data 0x0020 \
-wblk te.fifo $blk -edone 15 -estaterr \
-labo -edata 1 \
-wreg te.data 0x0021 \
-rreg te.data -edata 0xffff \
-wreg te.data 0x0022
# last labo aborted, so 0x20 written, but not 0x21
rlc exec \
-rreg te.data -edata 0x0020
#
#-------------------------------------------------------------------------
rlc log " test 4a: check that babo state kept over clists"
rlc exec \
-wreg te.data 0x0030 \
-labo -edata 1 \
-wreg te.data 0x0031
# no blk done, so labo state sicks, so 0x30 written, but not 0x31
rlc exec \
-rreg te.data -edata 0x0030
#
#-------------------------------------------------------------------------
rlc log " test 4b: check that babo readable from RLSTAT"
# babo still set
set babomsk [regbld rlink::RLSTAT babo]
rlc exec \
-rreg $rlink::ADDR_RLSTAT -edata $babomsk $babomsk
#
#-------------------------------------------------------------------------
rlc log " test 4c: check that babo reset by successful rblk"
rlc exec \
-wreg te.data 0x0040 \
-rblk te.fifo 8 -edata [lrange $blk 0 7] \
-rreg $rlink::ADDR_RLSTAT -edata 0x0 $babomsk \
-rblk te.fifo 7 -edata [lrange $blk 8 14] \
-rreg $rlink::ADDR_RLSTAT -edata 0x0 $babomsk \
-rblk te.fifo 8 -edone 0 -estaterr \
-rreg $rlink::ADDR_RLSTAT -edata $babomsk $babomsk \
-labo -edata 1 \
-wreg te.data 0x0041
# last rblk failed again so 0x40 written, but not 0x41
rlc exec \
-rreg te.data -edata 0x0040
#
#-------------------------------------------------------------------------
rlc log " test 4d: check that babo reset by successful wblk"
set blk2 {0x5555 0x6666}
rlc exec \
-wblk te.fifo $blk2 \
-rreg $rlink::ADDR_RLSTAT -edata 0x0 $babomsk
#
#-------------------------------------------------------------------------
rlc log " test 5: check commands between blk and labo are accepted"
# there are two words in fifo from previous test
rlc exec \
-wreg te.data 0x0050 \
-rblk te.fifo 4 -edata $blk2 -edone 2 -estaterr \
-rreg $rlink::ADDR_RLSTAT -edata $babomsk $babomsk \
-wreg te.data 0x0051 \
-labo -edata 1 \
-wreg te.data 0x0052
# last rblk failed so 0x50 written, also 0x51, but not 0x52
rlc exec \
-rreg te.data -edata 0x0051
#
#-------------------------------------------------------------------------
rlc log "rbtest::test_fifo - cleanup: clear cntl, data, and fifo"
rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
#
incr errcnt [rlc errcnt -clear]
return $errcnt
}
}