1
0
mirror of https://github.com/wfjm/w11.git synced 2026-01-13 15:37:43 +00:00

tbench: add ibd_ibmon, finish ibd_ibtst

This commit is contained in:
wfjm 2019-03-10 14:37:21 +01:00
parent 374dfe30cc
commit 8abe1ed421
10 changed files with 917 additions and 26 deletions

View File

@ -30,6 +30,7 @@ The full set of tests is only run for tagged releases.
- simclkv: test bench clock generator with variable period
- new verification codes
- tbench/w11a_ibtst/*: tbench for ibd_ibtst
- tbench/w11a_ibmon/*: tbench for ibd_ibmon
- test_w11a_sdreg.tcl: tbench for sdreg
### Changes

View File

@ -1,10 +1,11 @@
# $Id: cpu_all.dat 1112 2019-02-17 11:10:04Z mueller $
# $Id: cpu_all.dat 1115 2019-02-24 12:53:04Z mueller $
#
## steering file for all cpu tests
#
@cp/cp_all.dat
#
@w11a_ibtst/w11a_ibtst_all.dat
@w11a_ibmon/w11a_ibmon_all.dat
#
@w11a/w11a_all.dat
#

View File

@ -0,0 +1,278 @@
# $Id: test_ibmon_cpu.tcl 1118 2019-03-05 19:26:39Z mueller $
#
# Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see License.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2019-03-05 1118 1.0 Initial version
# 2019-02-24 1115 0.1 First draft
#
# Test register response
# 1. write/read IB space via bwm/brm (use MMU SAR SM I regs)
# 2. write/read IB space via wibr/ribr (use MMU SAR SM I regs)
# 3. test membe (byte write) via wibr/ribr
# ----------------------------------------------------------------------------
rlc log "test_ibmon_cpu: test basics with cpu register accesses --------------"
if {[$cpu get hasibmon] == 0} {
rlc log " test_ibmon_cpu-W: no ibmon unit found, test aborted"
return
}
package require ibd_ibmon
set print 0
# -- Section A ---------------------------------------------------------------
rlc log " A exercise monitor data access via data/addr regs ---------"
rlc log " A1: capture write/read rem and loc -----------------"
# write/read rem and loc with ibmon on; check that 4 lines acquired
set cntlstastd [regbld ibd_ibmon::CNTL conena remena locena {func "STA"}]
set cntlsto [regbld ibd_ibmon::CNTL {func "STO"}]
set statmsk [regbld ibd_ibmon::STAT wrap susp run]
set sarsi0 [$cpu imap sarsi.0]
set sarsi1 [$cpu imap sarsi.1]
set sarsi2 [$cpu imap sarsi.2]
$cpu cp \
-wreg im.hilim 0177776 \
-wreg im.lolim 0160000 \
-wreg im.cntl $cntlstastd \
-rreg im.stat -edata [regbld ibd_ibmon::STAT run] $statmsk \
-wibr sarsi.0 0xdead \
-ribr sarsi.0 -edata 0xdead \
-wal $sarsi0 \
-wm 0xbeef \
-rm -edata 0xbeef \
-wreg im.cntl $cntlsto \
-rreg im.stat -edata 0x0000 $statmsk \
-rreg im.addr -edata [regbld ibd_ibmon::ADDR {laddr 4}]
if {$print} {puts [ibd_ibmon::print $cpu]}
# build expect list: list of {eflag eaddr edata enbusy} sublists
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $sarsi0 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi0 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $sarsi0 0xbeef 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $sarsi0 0xbeef 0]
rlc log " A1.1: read all in one rblk -------------------------"
$cpu cp \
-wreg im.addr 0x0000 \
-rblk im.data 16 -edata $edat $emsk \
-rreg im.addr -edata 16
rlc log " A1.2: random address read --------------------------"
foreach addr {0x1 0x3 0x5 0x7 0x6 0x4 0x2 0x0 \
0x9 0xb 0xd 0xf 0xe 0xc 0xa 0x8} {
$cpu cp \
-wreg im.addr $addr \
-rreg im.data -edata [lindex $edat $addr] [lindex $emsk $addr] \
-rreg im.addr -edata [expr {$addr + 1}]
}
rlc log " A1.3: random address with rblk length 2 ------------"
foreach addr {0x1 0x3 0x5 0x7 0x6 0x4 0x2 0x0 \
0x9 0xb 0xd 0xe 0xc 0xa 0x8} {
$cpu cp \
-wreg im.addr $addr \
-rblk im.data 2 -edata [lrange $edat $addr [expr {$addr + 1}] ] \
[lrange $emsk $addr [expr {$addr + 1}] ] \
-rreg im.addr -edata [expr {$addr + 2}]
}
# -- Section B ---------------------------------------------------------------
rlc log " B test rreg,wreg capture: ack,we,be* flags ----------------"
rlc log " B1.1: test byte racc access (via wibr/ribr) --------"
# word write/read already tested in section A; now go for byte writes
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be0 we] $sarsi0 0x00aa 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi0 0xbeaa 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 we] $sarsi0 0x5500 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi0 0x55aa 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra we] $sarsi0 0xfade 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi0 0x55aa 0]
ibd_ibmon::start $cpu
$cpu cp \
-wmembe 1 \
-wibr sarsi.0 0x00aa \
-ribr sarsi.0 -edata 0xbeaa \
-wmembe 2 \
-wibr sarsi.0 0x5500 \
-ribr sarsi.0 -edata 0x55aa \
-wmembe 0 \
-wibr sarsi.0 0xfade \
-ribr sarsi.0 -edata 0x55aa
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " B1.2: test byte cacc access (via wm/rm) ------------"
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca be0 we] $sarsi0 0xff34 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $sarsi0 0x5534 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 we] $sarsi0 0x12ff 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $sarsi0 0x1234 0] \
[list [regbld ibd_ibmon::FLAGS ack ca we] $sarsi0 0xfade 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $sarsi0 0x1234 0]
ibd_ibmon::start $cpu
$cpu cp \
-wal $sarsi0 \
-wmembe 1 \
-wm 0xff34 \
-rm -edata 0x5534 \
-wmembe 2 \
-wm 0x12ff \
-rm -edata 0x1234 \
-wmembe 0 \
-wm 0xfade \
-rm -edata 0x1234
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " B1.3: test loc access (via cpu code) --------------"
# check that burst flag is seen for write of rmw
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack be1 be0 we] $sarsi0 0xffff 0] \
[list [regbld ibd_ibmon::FLAGS ack rmw be1 be0 ] $sarsi0 0xffff 0] \
[list [regbld ibd_ibmon::FLAGS bu ack rmw be1 be0 we] $sarsi0 0x0000 0] \
[list [regbld ibd_ibmon::FLAGS ack be1 be0 ] $sarsi0 0x0000 0] \
[list [regbld ibd_ibmon::FLAGS ack rmw be0 ] $sarsi0 0x0000 0] \
[list [regbld ibd_ibmon::FLAGS bu ack rmw be0 we] $sarsi0 0xffff 0] \
[list [regbld ibd_ibmon::FLAGS ack be1 be0 ] $sarsi0 0x00ff 0] \
[list [regbld ibd_ibmon::FLAGS ack rmw be1 ] $sarsi0 0x00ff 0] \
[list [regbld ibd_ibmon::FLAGS bu ack rmw be1 we] $sarsi0 0x0101 0] \
[list [regbld ibd_ibmon::FLAGS ack be1 be0 ] $sarsi0 0x01ff 0]
$cpu ldasm -lst lst -sym sym {
. = 1000
stack:
start: mov #177777,(r0)
inc (r0)
mov (r0),r1
decb (r0)
mov (r0),r2
incb 1(r0)
mov (r0),r3
halt
stop:
}
ibd_ibmon::start $cpu
rw11::asmrun $cpu sym r0 $sarsi0
rw11::asmwait $cpu sym
rw11::asmtreg $cpu r1 0x0000 \
r2 0x00ff \
r3 0x01ff
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
# -- Section C ---------------------------------------------------------------
rlc log " C test access mode enable flags ---------------------------"
$cpu ldasm -lst lst -sym sym {
. = 1000
stack:
start: mov r1,(r0)
stop:
}
rlc log " C1.1: test conena ----------------------------------"
# note that ibr access set cacc and racc flags
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $sarsi0 0x0100 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $sarsi1 0x0101 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi0 0x0100 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $sarsi1 0x0101 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi2 0x0102 0]
ibd_ibmon::start $cpu conena 1 remena 0 locena 0
$cpu cp \
-wibr sarsi.0 0x0100 \
-wal $sarsi1 \
-wm 0x0101 \
-wr0 $sarsi2 \
-wr1 0x0102 \
-wpc $sym(start) \
-step \
-rpc -edata $sym(stop) \
-ribr sarsi.0 -edata 0x0100 \
-wal $sarsi1 \
-rm -edata 0x0101 \
-ribr sarsi.2 -edata 0x0102
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " C1.2: test remena ----------------------------------"
# Note: use -wal and -wr0 setup above, skip -rpc also
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $sarsi0 0x0200 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi0 0x0200 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi2 0x0202 0]
ibd_ibmon::start $cpu conena 0 remena 1 locena 0
$cpu cp \
-wibr sarsi.0 0x0200 \
-wm 0x0201 \
-wr1 0x0202 \
-wpc $sym(start) \
-step \
-ribr sarsi.0 -edata 0x0200 \
-wal $sarsi1 \
-rm -edata 0x0201 \
-ribr sarsi.2 -edata 0x0202
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " C1.3: test locena ----------------------------------"
# Note: again reuse -wal and -wr0 setup above, skip -rpc also
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack be1 be0 we] $sarsi2 0x0302 0] \
ibd_ibmon::start $cpu conena 0 remena 0 locena 1
$cpu cp \
-wibr sarsi.0 0x0300 \
-wm 0x0301 \
-wr1 0x0302 \
-wpc $sym(start) \
-step \
-ribr sarsi.0 -edata 0x0300 \
-wal $sarsi1 \
-rm -edata 0x0301 \
-ribr sarsi.2 -edata 0x0302
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
# -- Section D ---------------------------------------------------------------
rlc log " D test hilim,lolim ----------------------------------------"
# allow sarsi0,sarsi1, block sarsi2
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $sarsi0 0x1100 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $sarsi1 0x1101 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi0 0x1100 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $sarsi1 0x1101 0]
ibd_ibmon::start $cpu
$cpu cp \
-wreg im.hilim $sarsi1 \
-wreg im.lolim $sarsi0 \
-wibr sarsi.0 0x1100 \
-wibr sarsi.1 0x1101 \
-wibr sarsi.2 0x1102 \
-ribr sarsi.0 -edata 0x1100 \
-ribr sarsi.1 -edata 0x1101 \
-ribr sarsi.2 -edata 0x1102 \
-wreg im.hilim 0177777 \
-wreg im.lolim 0160000
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk

View File

@ -0,0 +1,387 @@
# $Id: test_ibmon_ibtst.tcl 1118 2019-03-05 19:26:39Z mueller $
#
# Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see License.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2019-03-05 1118 1.0 Initial version
#
# Test register response
# 1. write/read IB space via bwm/brm (use MMU SAR SM I regs)
# 2. write/read IB space via wibr/ribr (use MMU SAR SM I regs)
# 3. test membe (byte write) via wibr/ribr
# ----------------------------------------------------------------------------
rlc log "test_ibmon_ibtest: tests with ibd_ibtst as target -------------------"
if {[$cpu get hasibmon] == 0} {
rlc log " test_ibmon_ibtst-W: no ibmon unit found, test aborted"
return
}
if {[$cpu get hasibtst] == 0} {
rlc log " test_ibmon_ibtst-W: no ibtst unit found, test aborted"
return
}
package require ibd_ibmon
package require ibd_ibtst
set print 0
# -- Section A ---------------------------------------------------------------
rlc log " A exercise ack,nak,tout,busy and nbusy --------------------"
set itdata [$cpu imap it.data]
set itfifo [$cpu imap it.fifo]
# only data and fifo visible for ibmon to keep logs short
$cpu cp \
-wreg im.hilim $itfifo \
-wreg im.lolim $itdata
rlc log " A1: ack,nak on data --------------------------------"
# disable/enable rem/loc side visibility of data
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS nak ca ra be1 be0 we] $itdata 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS nak ca ra be1 be0 ] $itdata {} 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 we] $itdata 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 ] $itdata {} 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itdata 0x1111 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0x1111 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 we] $itdata 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 ] $itdata {} 0] \
[list [regbld ibd_ibmon::FLAGS nak ca ra be1 be0 we] $itdata 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS nak ca ra be1 be0 ] $itdata {} 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itdata 0x2222 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $itdata 0x2222 0]
ibd_ibmon::start $cpu
$cpu cp \
-wal $itdata \
-wreg it.cntl [regbld ibd_ibtst::CNTL ] \
-wibr it.data 0xdead -estaterr \
-ribr it.data -estaterr \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL remw remr] \
-wibr it.data 0x1111 \
-ribr it.data -edata 0x1111 \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL locw locr] \
-wibr it.data 0xdead -estaterr \
-ribr it.data -estaterr \
-wm 0x2222 \
-rm -edata 0x2222
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " A2: ack with busy on data --------------------------"
# enable loc/rem side visibility of data, enable bsy
# use 3 cases: bsyw; bsyr; bsyw+bsyr; check that delay only on loc side
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itdata 0x0101 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0x0101 0] \
[list [regbld ibd_ibmon::FLAGS bsy ack ca be1 be0 we] $itdata 0x0102 8] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $itdata 0x0102 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itdata 0x0201 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0x0201 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itdata 0x0202 0] \
[list [regbld ibd_ibmon::FLAGS bsy ack ca be1 be0 ] $itdata 0x0202 8] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itdata 0x0301 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0x0301 0] \
[list [regbld ibd_ibmon::FLAGS bsy ack ca be1 be0 we] $itdata 0x0302 8] \
[list [regbld ibd_ibmon::FLAGS bsy ack ca be1 be0 ] $itdata 0x0302 8]
ibd_ibmon::start $cpu
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyw remw remr locw locr] \
-wibr it.data 0x0101 \
-ribr it.data -edata 0x0101 \
-wm 0x0102 \
-rm -edata 0x0102 \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyr remw remr locw locr] \
-wibr it.data 0x0201 \
-ribr it.data -edata 0x0201 \
-wm 0x0202 \
-rm -edata 0x0202 \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyw bsyr remw remr locw locr] \
-wibr it.data 0x0301 \
-ribr it.data -edata 0x0301 \
-wm 0x0302 \
-rm -edata 0x0302
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " A3: nak on data (bsy,bsy+datab,datto,datto+datab) --"
# disable loc side visibility of data and use
# --> prompt nak (as above)
# bsy --> delayed nak on write
# bsy --> delayed nak on read
# bsy+datab --> delayed nak with ack while busy
# datto --> timeout
# datto+bsy --> timeout (should look plain timeout)
# datto+bsy+datab --> timeout with inital ack
set ibtout 63; # ibus timeout
# [list [regbld ibd_ibmon::FLAGS to bsy nak ack ca be1 be0 we]
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 we] \
$itdata 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 ] \
$itdata {} 0] \
[list [regbld ibd_ibmon::FLAGS bsy nak ca be1 be0 we] \
$itdata 0xdead 8] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 ] \
$itdata {} 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 we] \
$itdata 0xdead 0] \
[list [regbld ibd_ibmon::FLAGS bsy nak ca be1 be0 ] \
$itdata {} 8] \
[list [regbld ibd_ibmon::FLAGS bsy nak ack ca be1 be0 we] \
$itdata 0xdead 8] \
[list [regbld ibd_ibmon::FLAGS bsy nak ack ca be1 be0 ] \
$itdata {} 8] \
[list [regbld ibd_ibmon::FLAGS to bsy nak ca be1 be0 we] \
$itdata 0xdead $ibtout] \
[list [regbld ibd_ibmon::FLAGS to bsy nak ca be1 be0 ] \
$itdata {} $ibtout] \
[list [regbld ibd_ibmon::FLAGS to bsy nak ca be1 be0 we] \
$itdata 0xdead $ibtout] \
[list [regbld ibd_ibmon::FLAGS to bsy nak ca be1 be0 ] \
$itdata {} $ibtout] \
[list [regbld ibd_ibmon::FLAGS to bsy nak ack ca be1 be0 we] \
$itdata 0xdead $ibtout] \
[list [regbld ibd_ibmon::FLAGS to bsy nak ack ca be1 be0 ] \
$itdata {} $ibtout]
ibd_ibmon::start $cpu
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL remw remr] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyw remw remr] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyr remw remr] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL datab bsyw bsyr remw remr] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL datto remw remr] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL datto bsyw bsyr remw remr] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL datab datto bsyw bsyr remw remr] \
-wm 0xdead -estaterr \
-rm -estaterr
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
# -- Section B ---------------------------------------------------------------
rlc log " B fifo basics ---------------------------------------------"
rlc log " B1: fifo read test (write 2, read 3) -------------"
# use remw locr
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0101 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0102 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $itfifo 0x0101 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 ] $itfifo 0x0102 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 ] $itfifo {} 0] \
ibd_ibmon::start $cpu
$cpu cp \
-wal $itfifo \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw locr] \
-wbibr it.fifo {0x0101 0x0102} \
-rblk mem 3 -edone 2 -edata {0x0101 0x0102} -estaterr
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " B2: fifo write test (write 16, read 15) ------------"
# use locw remr
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0200 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0201 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0202 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0203 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0204 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0205 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0206 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0207 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0208 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x0209 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x020a 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x020b 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x020c 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x020d 0] \
[list [regbld ibd_ibmon::FLAGS ack ca be1 be0 we] $itfifo 0x020e 0] \
[list [regbld ibd_ibmon::FLAGS nak ca be1 be0 we] $itfifo 0x020f 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0200 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0201 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0202 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0203 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0204 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0205 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0206 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0207 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0208 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0209 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x020a 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x020b 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x020c 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x020d 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x020e 0]
ibd_ibmon::start $cpu
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr locw remr] \
-wblk mem {0x0200 0x0201 0x0202 0x0203 0x0204 0x0205 0x0206 0x0207 \
0x0208 0x0209 0x020a 0x020b 0x020c 0x020d 0x020e 0x020f} \
-edone 15 -estaterr \
-rbibr it.fifo 15 \
-edata {0x0200 0x0201 0x0202 0x0203 0x0204 0x0205 0x0206 0x0207 \
0x0208 0x0209 0x020a 0x020b 0x020c 0x020d 0x020e}
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
# -- Section C ---------------------------------------------------------------
rlc log " C test repeat collapes ------------------------------------"
rlc log " C1: dry run, no collapse active --------------------"
# use remw remr (for simplicity)
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0300 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0301 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0302 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0303 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0300 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0301 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0302 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0303 0]
ibd_ibmon::start $cpu
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw remr] \
-wbibr it.fifo {0x0300 0x0301 0x0302 0x0303} \
-rbibr it.fifo 4 -edata {0x0300 0x0301 0x0302 0x0303}
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " C2.1: read collapse active -------------------------"
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0400 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0401 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0402 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0403 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0400 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0403 0]
ibd_ibmon::start $cpu rcolr 1
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw remr] \
-wbibr it.fifo {0x0400 0x0401 0x0402 0x0403} \
-rbibr it.fifo 4 -edata {0x0400 0x0401 0x0402 0x0403}
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " C2.2: write collapse active ------------------------"
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0500 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0503 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0500 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0501 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0502 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0503 0]
ibd_ibmon::start $cpu rcolw 1
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw remr] \
-wbibr it.fifo {0x0500 0x0501 0x0502 0x0503} \
-rbibr it.fifo 4 -edata {0x0500 0x0501 0x0502 0x0503}
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " C2.3: read and write collapse active ---------------"
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0600 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0603 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0600 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0603 0]
ibd_ibmon::start $cpu rcolw 1 rcolr 1
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw remr] \
-wbibr it.fifo {0x0600 0x0601 0x0602 0x0603} \
-rbibr it.fifo 4 -edata {0x0600 0x0601 0x0602 0x0603}
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " C2.4: non-collapse of write-read same address ------"
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0700 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0700 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0701 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0701 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0702 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0702 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0703 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0703 0]
ibd_ibmon::start $cpu rcolw 1 rcolr 1
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw remr] \
-wibr it.fifo 0x0700 \
-ribr it.fifo -edata 0x0700 \
-wibr it.fifo 0x0701 \
-ribr it.fifo -edata 0x0701 \
-wibr it.fifo 0x0702 \
-ribr it.fifo -edata 0x0702 \
-wibr it.fifo 0x0703 \
-ribr it.fifo -edata 0x0703
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk
rlc log " C2.5: non-collapse of reads to different address ---"
ibd_ibmon::raw_edata edat emsk \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itdata 0xbabe 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0800 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 we] $itfifo 0x0803 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0800 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0xbabe 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0801 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0xbabe 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0802 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0xbabe 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itfifo 0x0803 0] \
[list [regbld ibd_ibmon::FLAGS ack ca ra be1 be0 ] $itdata 0xbabe 0]
ibd_ibmon::start $cpu rcolw 1 rcolr 1
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw remr] \
-wibr it.data 0xbabe \
-wbibr it.fifo {0x0800 0x0801 0x0802 0x0803} \
-ribr it.fifo -edata 0x0800 \
-ribr it.data -edata 0xbabe \
-ribr it.fifo -edata 0x0801 \
-ribr it.data -edata 0xbabe \
-ribr it.fifo -edata 0x0802 \
-ribr it.data -edata 0xbabe \
-ribr it.fifo -edata 0x0803 \
-ribr it.data -edata 0xbabe
ibd_ibmon::stop $cpu
if {$print} {puts [ibd_ibmon::print $cpu]}
ibd_ibmon::raw_check $cpu $edat $emsk

View File

@ -0,0 +1,193 @@
# $Id: test_ibmon_regs.tcl 1120 2019-03-09 18:19:31Z mueller $
#
# Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see License.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2019-03-01 1116 1.0 Initial version
# 2019-02-24 1115 0.1 First draft
#
# Test register response
# ----------------------------------------------------------------------------
rlc log "test_ibmon_regs: test register response -----------------------------"
if {[$cpu get hasibmon] == 0} {
rlc log " test_ibmon_regs-W: no ibmon unit found, test aborted"
return
}
package require ibd_ibmon
# -- Section A ---------------------------------------------------------------
rlc log " A basic register access tests -----------------------------"
rlc log " A1: write/read cntl---------------------------------"
# test that starting captures option flags, and that stoping keeps them
# test that NOOP is a noop and doesn't change flags
$cpu cp \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL] \
-wreg im.cntl [regbld ibd_ibmon::CNTL locena {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL locena] \
-wreg im.cntl [regbld ibd_ibmon::CNTL remena {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL remena] \
-wreg im.cntl [regbld ibd_ibmon::CNTL conena {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL conena] \
-wreg im.cntl [regbld ibd_ibmon::CNTL wstop {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop] \
-wreg im.cntl [regbld ibd_ibmon::CNTL rcolr {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL rcolr] \
-wreg im.cntl [regbld ibd_ibmon::CNTL rcolw {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL rcolw] \
-wreg im.cntl [regbld ibd_ibmon::CNTL wstop remena locena {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop remena locena ] \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STO"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop remena locena] \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "NOOP"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop remena locena]
rlc log " A2: write cntl, read stat --------------------------"
# test that susp/run follow functions set to cntl
# test that sus/res does not change option flags
set statmsk [regbld ibd_ibmon::STAT wrap susp run]
$cpu cp \
-wreg im.cntl [regbld ibd_ibmon::CNTL wstop locena {func "STA"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop locena ] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "SUS"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop locena ] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT susp run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "RES"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop locena ] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STO"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT] $statmsk
# test that suspend/resume of a stopped system is a noop
$cpu cp \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "SUS"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "RES"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT] $statmsk
# test that start of a suspended system clears suspend
$cpu cp \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STA"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "SUS"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT susp run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STA"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT run] $statmsk
# test that suspend of a suspended system is a noop
# test that stop of a suspended system clears suspend
$cpu cp \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STA"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "SUS"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT susp run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "SUS"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT susp run] $statmsk \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STO"}] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT] $statmsk
# get amax for later usage
$cpu cp \
-rreg im.stat rstat
set bsize [regget ibd_ibmon::STAT(bsize) $rstat]
set amax [expr {( 256 << $bsize ) - 1}]
rlc log " A3: test addr --------------------------------------"
rlc log " A3.1: write/read addr when stopped -----------------"
foreach {laddr waddr} [list 0x0000 0 0x0000 3 $amax 0 $amax 3] {
set addr [regbld ibd_ibmon::ADDR [list laddr $laddr] [list waddr $waddr]]
$cpu cp \
-wreg im.addr $addr \
-rreg im.addr -edata $addr
}
rlc log " A3.2: verify that starting clears addr -------------"
$cpu cp \
-wreg im.cntl [regbldkv ibd_ibmon::CNTL func "STO"] \
-wreg im.addr [regbldkv ibd_ibmon::ADDR laddr $amax] \
-rreg im.addr -edata [regbldkv ibd_ibmon::ADDR laddr $amax] \
-wreg im.cntl [regbldkv ibd_ibmon::CNTL func "STA"] \
-rreg im.addr -edata 0x00 \
-wreg im.cntl [regbldkv ibd_ibmon::CNTL func "STO"]
rlc log " A3.3: test err when started and addr written -------"
$cpu cp \
-wreg im.cntl [regbldkv ibd_ibmon::CNTL func "STA"] \
-wreg im.addr 0x100 -estaterr \
-wreg im.cntl [regbldkv ibd_ibmon::CNTL func "STO"]
rlc log " A4: test data --------------------------------------"
rlc log " A4.1: when stopped ---------------------------------"
# stop, set addr, and four times data, check addr
# at 5th data read waddr goes 0 and laddr incs
$cpu cp \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "STO"}] \
-wreg im.addr [regbld ibd_ibmon::ADDR {laddr 010} {waddr 0}] \
-rreg im.data \
-rreg im.addr -edata [regbld ibd_ibmon::ADDR {laddr 010} {waddr 001}] \
-rreg im.data \
-rreg im.addr -edata [regbld ibd_ibmon::ADDR {laddr 010} {waddr 002}] \
-rreg im.data \
-rreg im.addr -edata [regbld ibd_ibmon::ADDR {laddr 010} {waddr 003}] \
-rreg im.data \
-rreg im.addr -edata [regbld ibd_ibmon::ADDR {laddr 011} {waddr 000}]
rlc log " A4.2: test err when written ------------------------"
$cpu cp -wreg im.data 0x100 -estaterr
rlc log " A5: test hilim/lolim -------------------------------"
# check also that upper 3 bits are stuck 1, lsb stuck 0
$cpu cp \
-wreg im.hilim 0162346 \
-wreg im.lolim 0161234 \
-rreg im.hilim -edata 0162346 \
-rreg im.lolim -edata 0161234 \
-wreg im.hilim 0017777 \
-wreg im.lolim 0000001 \
-rreg im.hilim -edata 0177776 \
-rreg im.lolim -edata 0160000
rlc log " A6: test reset behavior ----------------------------"
# a reset will start ibtst with conena remena locena and hilim/lolim fully open
rlc log " A6.1: no reset on BRESET ---------------------------"
# no reset on BRESET and CRESET (cp -creset), only on GRESET (rbus init)
$cpu cp \
-wreg im.hilim 0172000 \
-wreg im.lolim 0171000 \
-wreg im.cntl [regbld ibd_ibmon::CNTL wstop locena {func "STA"}] \
-wreg im.cntl [regbld ibd_ibmon::CNTL {func "SUS"}] \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop locena] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT susp run] $statmsk \
-rreg im.hilim -edata 0172000 \
-rreg im.lolim -edata 0171000 \
-breset \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop locena] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT susp run] $statmsk \
-rreg im.hilim -edata 0172000 \
-rreg im.lolim -edata 0171000
rlc log " A6.2: no reset on CRESET ---------------------------"
$cpu cp \
-creset \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL wstop locena] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT susp run] $statmsk \
-rreg im.hilim -edata 0172000 \
-rreg im.lolim -edata 0171000
rlc log " A6.2: test reset on GRESET -------------------------"
# GRESET, triggered by rbus init against cpu conf register
rlc exec -init [$cpu rmap conf] [regbld rw11::INIT greset]
$cpu cp \
-rreg im.cntl -edata [regbld ibd_ibmon::CNTL conena remena locena] \
-rreg im.stat -edata [regbld ibd_ibmon::STAT run] $statmsk \
-rreg im.hilim -edata 0177776 \
-rreg im.lolim -edata 0160000
# harvest breset/creset triggered attn's
rlc exec -attn
rlc wtlam 0.

View File

@ -0,0 +1,7 @@
# $Id: w11a_ibmon_all.dat 1117 2019-03-03 12:49:26Z mueller $
#
## steering file for all w11a_ibmon tests
#
test_ibmon_regs.tcl
test_ibmon_cpu.tcl
test_ibmon_ibtst.tcl

View File

@ -1,10 +1,11 @@
# $Id: test_ibtst_data.tcl 1112 2019-02-17 11:10:04Z mueller $
# $Id: test_ibtst_data.tcl 1120 2019-03-09 18:19:31Z mueller $
#
# Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see License.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2019-03-05 1118 1.0.1 use -wal
# 2019-02-16 1112 1.0 Initial version
#
# Test data register response
@ -20,7 +21,7 @@
rlc log "test_ibtst_data: test data register response -------------------------"
if {[$cpu get hasibtst] == 0} {
rlc log " test_ibtst_data-W: no ibtest unit found, test aborted"
rlc log " test_ibtst_data-W: no ibtst unit found, test aborted"
return
}
package require ibd_ibtst
@ -29,7 +30,7 @@ rlc log " A1: data loc/rem access ----------------------------"
# test loc/rem write: n/n; y/n; n/y; y/y
# test loc/rem read: n/n; y/n; n/y; y/y
$cpu cp \
-wa [cpu0 imap it.data] \
-wal [$cpu imap it.data] \
-wreg it.cntl [regbld ibd_ibtst::CNTL ] \
-wm 0xdead -estaterr \
-wibr it.data 0xdead -estaterr \
@ -55,9 +56,15 @@ $cpu cp \
-rm -edata 0xdead \
-ribr it.data -edata 0xdead
rlc log " A2: data loc nak and timeout -----------------------"
# test datto; should look like nak
rlc log " A2: data loc nak and bsy,bsy+ack,timeout -----------"
# should all give rbus
$cpu cp \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyw bsyr ] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyw bsyr datab ] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wreg it.cntl [regbld ibd_ibtst::CNTL datto ] \
-wm 0xdead -estaterr \
-rm -estaterr
@ -92,3 +99,7 @@ $cpu cp \
-wibr it.data 0xdead \
-breset \
-ribr it.data -edata 0x0000
# harvest breset/creset triggered attn's
rlc exec -attn -edata 0
rlc wtlam 0.

View File

@ -1,10 +1,11 @@
# $Id: test_ibtst_fifo.tcl 1112 2019-02-17 11:10:04Z mueller $
# $Id: test_ibtst_fifo.tcl 1120 2019-03-09 18:19:31Z mueller $
#
# Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see License.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2019-03-05 1118 1.0.1 use -wal
# 2019-02-16 1112 1.0 Initial version
#
# Test fifo register response
@ -20,7 +21,7 @@
rlc log "test_ibtst_fifo: test fifo register response -------------------------"
if {[$cpu get hasibtst] == 0} {
rlc log " test_ibtst_fifo-W: no ibtest unit found, test aborted"
rlc log " test_ibtst_fifo-W: no ibtst unit found, test aborted"
return
}
package require ibd_ibtst
@ -28,7 +29,7 @@ package require ibd_ibtst
rlc log " A1: fifo loc/rem access ----------------------------"
# test off->off; loc->loc; loc->rem; rem->loc; rem->rem
$cpu cp \
-wa [cpu0 imap it.fifo] \
-wal [cpu0 imap it.fifo] \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr ] \
-wm 0xdead -estaterr \
-wibr it.fifo 0xdead -estaterr \
@ -132,3 +133,7 @@ $cpu cp \
-breset \
-ribr it.stat -edata [regbld ibd_ibtst::STAT] \
-ribr it.fifo -estaterr
# harvest breset/creset triggered attn's
rlc exec -attn -edata 0
rlc wtlam 0.

View File

@ -1,10 +1,11 @@
# $Id: test_ibtst_regs.tcl 1112 2019-02-17 11:10:04Z mueller $
# $Id: test_ibtst_regs.tcl 1120 2019-03-09 18:19:31Z mueller $
#
# Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see License.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2019-03-05 1118 1.0.1 rename dly[rw] -> bsy[rw]; add datab; use -wal
# 2019-02-16 1112 1.0 Initial version
#
# Test cntl register response
@ -20,7 +21,7 @@
rlc log "test_ibtst_regs: test cntl/stat register access ----------------------"
if {[$cpu get hasibtst] == 0} {
rlc log " test_ibtst_regs-W: no ibtest unit found, test aborted"
rlc log " test_ibtst_regs-W: no ibtst unit found, test aborted"
return
}
package require ibd_ibtst
@ -36,14 +37,16 @@ $cpu cp \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL remr] \
-wreg it.cntl [regbld ibd_ibtst::CNTL remw] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL remw] \
-wreg it.cntl [regbld ibd_ibtst::CNTL dlyr] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL dlyr] \
-wreg it.cntl [regbld ibd_ibtst::CNTL dlyw] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL dlyw] \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyr] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL bsyr] \
-wreg it.cntl [regbld ibd_ibtst::CNTL bsyw] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL bsyw] \
-wreg it.cntl [regbld ibd_ibtst::CNTL nobyt] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL nobyt] \
-wreg it.cntl [regbld ibd_ibtst::CNTL datto] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL datto] \
-wreg it.cntl [regbld ibd_ibtst::CNTL datab] \
-rreg it.cntl -edata [regbld ibd_ibtst::CNTL datab] \
-wreg it.cntl 0x0000 \
-rreg it.cntl -edata -0x0000
@ -58,9 +61,13 @@ $cpu cp \
rlc log " A3: cntl,stat only rem accessible ------------------"
$cpu cp \
-rreg it.stat -edata 0x0000 \
-wa [cpu0 imap it.cntl] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wa [cpu0 imap it.stat] \
-wm 0xdead -estaterr \
-rm -estaterr
-wal [cpu0 imap it.cntl] \
-wm 0xdead -estaterr \
-rm -estaterr \
-wal [cpu0 imap it.stat] \
-wm 0xdead -estaterr \
-rm -estaterr
# harvest breset/creset triggered attn's
rlc exec -attn -edata 0
rlc wtlam 0.

View File

@ -1,10 +1,11 @@
# $Id: test_ibtst_stat.tcl 1112 2019-02-17 11:10:04Z mueller $
# $Id: test_ibtst_stat.tcl 1118 2019-03-05 19:26:39Z mueller $
#
# Copyright 2019- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see License.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2019-03-05 1118 1.0.1 rename dly[rw] -> bsy[rw]; use -wal
# 2019-02-16 1112 1.0 Initial version
#
# Test stat register response
@ -20,14 +21,14 @@
rlc log "test_ibtst_stat: test stat register response -------------------------"
if {[$cpu get hasibtst] == 0} {
rlc log " test_ibtst_data-W: no ibtest unit found, test aborted"
rlc log " test_ibtst_data-W: no ibtst unit found, test aborted"
return
}
package require ibd_ibtst
rlc log " A1: data rem access --------------------------------"
$cpu cp \
-wa [cpu0 imap it.data] \
-wal [cpu0 imap it.data] \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remw remr ] \
-wibr it.data 0x1234 \
-ribr it.stat -edata [regbld ibd_ibtst::STAT racc cacc be1 be0 we ] \
@ -68,7 +69,7 @@ $cpu cp \
-wr1 [expr {[cpu0 imap it.data] + 1}] \
-wr2 0xdead \
-wpc 02000 \
-wa [cpu0 imap it.data] \
-wal [cpu0 imap it.data] \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr remr locw locr ]
# step through code and check
@ -101,7 +102,7 @@ rlc log " A4: data cpu write -> rem read (busy=8) ------------"
$cpu cp \
-wr2 0xdead \
-wpc 02000 \
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr dlyw dlyr remr locw locr ]
-wreg it.cntl [regbld ibd_ibtst::CNTL fclr bsyw bsyr remr locw locr ]
# step through code and check (same sequence as above)
$cpu cp \