OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /w11/tags/w11a_V0.74/tools/tbench/tm11
    from Rev 35 to Rev 38
    Reverse comparison

Rev 35 → Rev 38

/test_tm11_int.tcl
0,0 → 1,159
# $Id: test_tm11_int.tcl 704 2015-07-25 14:18:03Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2015-07-25 704 1.0.1 tmpproc_dotest: use args rather opts
# 2015-05-17 683 1.0 Initial version
#
# Test interrupt response
# A:
 
# ----------------------------------------------------------------------------
rlc log "test_tm11_int: test interrupt response ------------------------------"
rlc log " setup: all units online"
package require ibd_tm11
ibd_tm11::setup
 
rlc set statmask $rw11::STAT_DEFMASK
rlc set statvalue 0
 
# configure drives
set rsronl [regbld ibd_tm11::RRL {onl 1} {bot 1}]
$cpu cp -wibr "tma.cr" [ibd_tm11::rcr_wunit 0] \
-wibr "tma.rl" $rsronl \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 1] \
-wibr "tma.rl" $rsronl \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 2] \
-wibr "tma.rl" $rsronl \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 3] \
-wibr "tma.rl" $rsronl
 
# load test code
$cpu ldasm -lst lst -sym sym {
.include |lib/defs_cpu.mac|
.include |lib/defs_tm.mac|
;
.include |lib/vec_cpucatch.mac|
;
. = 000224 ; setup TM11 interrupt vector
v..tm: .word vh.tm
.word cp.pr7
;
. = 1000 ; data area
stack:
ibuf: .blkw 3. ; input buffer
obuf: .blkw 5. ; output buffer
fbuf: .blkw 4. ; final buffer
;
. = 2000 ; code area
start: spl 7 ; lock out interrupts
;
mov #obuf,r0 ; clear obuf
clr (r0)+
clr (r0)+
clr (r0)+
clr (r0)+
clr (r0)+
;
mov #ibuf,r0 ; setup regs from ibuf
mov (r0)+,@#tm.bc ; bc
mov (r0)+,@#tm.ba ; ba
mov (r0)+,@#tm.cr ; cr
spl 0 ; allow interrupts
;
poll: tstb @#tm.cr ; check cr
bpl poll ; if rdy=0 keep polling
;
4$: mov #fbuf,r0 ; store final regs in fbuf
mov @#tm.sr,(r0)+ ; sr
mov @#tm.cr,(r0)+ ; cr
mov @#tm.bc,(r0)+ ; bc
mov @#tm.ba,(r0)+ ; ba
 
halt ; halt if done
stop:
 
; TM11 interrupt handler
vh.tm: mov #obuf,r0 ; store regs in obuf
mov #1,(r0)+ ; flag
mov @#tm.sr,(r0)+ ; sr
mov @#tm.cr,(r0)+ ; cr
mov @#tm.bc,(r0)+ ; bc
mov @#tm.ba,(r0)+ ; ba
rti ; and return
}
 
##puts $lst
 
# define tmpproc for readback checks
proc tmpproc_dotest {cpu symName args} {
upvar 1 $symName sym
 
set tout 10.; # FIXME_code: parameter ??
 
# setup defs hash, first defaults, than write over concrete run values
args2opts opts {i.cr 0 \
i.bc 0 \
i.ba 0 \
o.sr 0 \
o.cr 0 \
o.bc 0 \
o.ba 0 \
do.lam 0 } {*}$args
 
# build ibuf
set ibuf [list $opts(i.bc) $opts(i.ba) $opts(i.cr)]
 
# setup write ibuf, setup stack, and start cpu at start:
$cpu cp -wal $sym(ibuf) \
-bwm $ibuf \
-wsp $sym(stack) \
-stapc $sym(start)
 
# here do minimal lam handling (harvest + send DONE)
if {$opts(do.lam)} {
rlc wtlam $tout apat
$cpu cp -attn \
-wibr tma.cs [ibd_rhrp::cr_func $ibd_tm11::RFUNC_DONE]
}
 
$cpu wtcpu -reset $tout
 
# determine regs after cleanup
$cpu cp -rpc -edata $sym(stop) \
-rsp -edata $sym(stack) \
-wal $sym(obuf) \
-rmi -edata 1 \
-rmi -edata $opts(o.sr) \
-rmi -edata $opts(o.cr) \
-rmi -edata $opts(o.bc) \
-rmi -edata $opts(o.ba) \
-wal $sym(fbuf) \
-rmi -edata $opts(o.sr) \
-rmi -edata $opts(o.cr) \
-rmi -edata $opts(o.bc) \
-rmi -edata $opts(o.ba)
 
return ""
}
 
# discard pending attn to be on save side
rlc wtlam 0.
rlc exec -attn
 
# -- Section A ---------------------------------------------------------------
rlc log " A1.1 set cr.ie=1 -> software interrupt -------------"
 
tmpproc_dotest $cpu sym \
i.cr [regbld ibd_tm11::CR ie] \
i.bc 0xff00 \
i.ba 0x8800 \
o.sr [regbld ibd_tm11::SR onl bot tur] \
o.cr [regbld ibd_tm11::CR rdy ie] \
o.bc 0xff00 \
o.ba 0x8800
 
 
/tm11_all.dat
0,0 → 1,6
# $Id: tm11_all.dat 683 2015-05-17 21:54:35Z mueller $
#
## steering file for all tm11 tests
#
test_tm11_regs.tcl
test_tm11_int.tcl
/test_tm11_regs.tcl
0,0 → 1,175
# $Id: test_tm11_regs.tcl 683 2015-05-17 21:54:35Z mueller $
#
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
#
# Revision History:
# Date Rev Version Comment
# 2015-05-17 683 1.0 Initial version
#
# Test register response
# A: register basics
 
# ----------------------------------------------------------------------------
rlc log "test_tm11_regs: test register response ------------------------------"
package require ibd_tm11
ibd_tm11::setup
 
rlc set statmask $rw11::STAT_DEFMASK
rlc set statvalue 0
 
# -- Section A ---------------------------------------------------------------
rlc log " A1: test read ---------------------------------------------"
rlc log " A1.1: loc read sr,...,rl ---------------------------"
 
$cpu cp -rma tma.sr \
-rma tma.cr \
-rma tma.bc \
-rma tma.ba \
-rma tma.db \
-rma tma.rl
 
rlc log " A1.2: rem read sr,...,rl ---------------------------"
 
$cpu cp -ribr tma.sr \
-ribr tma.cr \
-ribr tma.bc \
-ribr tma.ba \
-ribr tma.db \
-ribr tma.rl
 
rlc log " A1.3: test that rl+2,+4 gives no ack (loc) ---------"
 
set iaddr2 [expr {[cpu0 imap tma.rl] + 2}]
set iaddr4 [expr {[cpu0 imap tma.rl] + 4}]
 
$cpu cp -ribr $iaddr2 -estaterr \
-ribr $iaddr4 -estaterr
 
# -- Section B ---------------------------------------------------------------
rlc log " B1: test sr setup -------------------------------------------------"
 
rlc log " B1.1: rem write via rl -----------------------------"
# setup units with eof=!u1 eot=!u0 onl=1 bot=u0 wrl=u1
set rsr0 [regbld ibd_tm11::RRL {eof 1} {eot 1} {onl 1} {bot 0} {wrl 0} {unit 0}]
set rsr1 [regbld ibd_tm11::RRL {eof 1} {eot 0} {onl 1} {bot 1} {wrl 0} {unit 1}]
set rsr2 [regbld ibd_tm11::RRL {eof 0} {eot 1} {onl 1} {bot 0} {wrl 1} {unit 2}]
set rsr3 [regbld ibd_tm11::RRL {eof 0} {eot 0} {onl 1} {bot 1} {wrl 1} {unit 3}]
# on readback SR has tur=1
set sr0 [regbld ibd_tm11::SR {eof 1} {eot 1} {onl 1} {bot 0} {wrl 0} {tur 1}]
set sr1 [regbld ibd_tm11::SR {eof 1} {eot 0} {onl 1} {bot 1} {wrl 0} {tur 1}]
set sr2 [regbld ibd_tm11::SR {eof 0} {eot 1} {onl 1} {bot 0} {wrl 1} {tur 1}]
set sr3 [regbld ibd_tm11::SR {eof 0} {eot 0} {onl 1} {bot 1} {wrl 1} {tur 1}]
set sr7 [regbld ibd_tm11::SR {tur 1}]
 
$cpu cp -wibr "tma.cr" [ibd_tm11::rcr_wunit 0] \
-wibr "tma.rl" $rsr0 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 1] \
-wibr "tma.rl" $rsr1 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 2] \
-wibr "tma.rl" $rsr2 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 3] \
-wibr "tma.rl" $rsr3
 
rlc log " B1.2: rem read via rl ------------------------------"
 
$cpu cp -wibr "tma.cr" [ibd_tm11::rcr_wunit 0] \
-ribr "tma.rl" -edata $rsr0 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 1] \
-ribr "tma.rl" -edata $rsr1 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 2] \
-ribr "tma.rl" -edata $rsr2 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 3] \
-ribr "tma.rl" -edata $rsr3
 
rlc log " B1.3: loc read via sr ------------------------------"
 
$cpu cp -wma "tma.cr" [regbld ibd_tm11::CR {unit 0}]\
-rma "tma.sr" -edata $sr0 \
-wma "tma.cr" [regbld ibd_tm11::CR {unit 1}]\
-rma "tma.sr" -edata $sr1 \
-wma "tma.cr" [regbld ibd_tm11::CR {unit 2}]\
-rma "tma.sr" -edata $sr2 \
-wma "tma.cr" [regbld ibd_tm11::CR {unit 3}]\
-rma "tma.sr" -edata $sr3
 
rlc log " B1.4: ensure unit 4,..,7 signal offline ------------"
 
$cpu cp -wma "tma.cr" [regbld ibd_tm11::CR {unit 4}]\
-rma "tma.sr" -edata $sr7 \
-wma "tma.cr" [regbld ibd_tm11::CR {unit 5}]\
-rma "tma.sr" -edata $sr7 \
-wma "tma.cr" [regbld ibd_tm11::CR {unit 6}]\
-rma "tma.sr" -edata $sr7 \
-wma "tma.cr" [regbld ibd_tm11::CR {unit 7}]\
-rma "tma.sr" -edata $sr7
 
rlc log " B1.5: setup unit 0:3 as onl=1 bot=1 ----------------"
 
# use use ONL=1 BOT=1 for all units -> no error flags
set rsr0 [regbld ibd_tm11::RRL {onl 1} {bot 1} {unit 0}]
set rsr1 [regbld ibd_tm11::RRL {onl 1} {bot 1} {unit 1}]
set rsr2 [regbld ibd_tm11::RRL {onl 1} {bot 1} {unit 2}]
set rsr3 [regbld ibd_tm11::RRL {onl 1} {bot 1} {unit 3}]
# on readback SR has tur=1
set sr0 [regbld ibd_tm11::SR {onl 1} {bot 1} {tur 1}]
set sr1 [regbld ibd_tm11::SR {onl 1} {bot 1} {tur 1}]
set sr2 [regbld ibd_tm11::SR {onl 1} {bot 1} {tur 1}]
set sr3 [regbld ibd_tm11::SR {onl 1} {bot 1} {tur 1}]
$cpu cp -wibr "tma.cr" [ibd_tm11::rcr_wunit 0] \
-wibr "tma.rl" $rsr0 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 1] \
-wibr "tma.rl" $rsr1 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 2] \
-wibr "tma.rl" $rsr2 \
-wibr "tma.cr" [ibd_tm11::rcr_wunit 3] \
-wibr "tma.rl" $rsr3
 
rlc log " B2.1: loc write loc/rem read of cr -----------------"
# test all cr fields except ie and go (no interrupts and functions yet)
set crlist [list \
[regbld ibd_tm11::CR {den 0} {pevn 0} {unit 0} {ea 0} {func 0}] \
[regbld ibd_tm11::CR {den 3} {pevn 0} {unit 0} {ea 0} {func 0}] \
[regbld ibd_tm11::CR {den 3} {pevn 1} {unit 0} {ea 0} {func 0}] \
[regbld ibd_tm11::CR {den 3} {pevn 1} {unit 7} {ea 0} {func 0}] \
[regbld ibd_tm11::CR {den 3} {pevn 1} {unit 3} {ea 3} {func 0}] \
[regbld ibd_tm11::CR {den 3} {pevn 1} {unit 3} {ea 3} {func 7}] \
]
foreach cr $crlist {
# on cr read here always rdy=1
set crread [expr {$cr | [regbld ibd_tm11::CR {rdy 1}] } ]
$cpu cp -wma "tma.cr" $cr \
-rma "tma.cr" -edata $crread \
-ribr "tma.cr" -edata $crread
}
 
rlc log " B3.1: loc write loc/rem read for bc,ba -------------"
# Note: ba ignores bit 0, only word addresses
$cpu cp -wma "tma.bc" 0x0010 \
-wma "tma.ba" 0x0020 \
-rma "tma.bc" -edata 0x0010 \
-rma "tma.ba" -edata 0x0020 \
-ribr "tma.bc" -edata 0x0010 \
-ribr "tma.ba" -edata 0x0020
$cpu cp -wma "tma.bc" 0x8888 \
-wma "tma.ba" 0x7777 \
-rma "tma.bc" -edata 0x8888 \
-rma "tma.ba" -edata 0x7776 \
-ribr "tma.bc" -edata 0x8888 \
-ribr "tma.ba" -edata 0x7776
 
rlc log " B3.2: rem write loc/rem read for bc,ba -------------"
 
$cpu cp -wibr "tma.bc" 0x1234 \
-wibr "tma.ba" 0x4321 \
-rma "tma.bc" -edata 0x1234 \
-rma "tma.ba" -edata 0x4320 \
-ribr "tma.bc" -edata 0x1234 \
-ribr "tma.ba" -edata 0x4320
$cpu cp -wibr "tma.bc" 0x0000 \
-wibr "tma.ba" 0x0000 \
-rma "tma.bc" -edata 0x0000 \
-rma "tma.ba" -edata 0x0000 \
-ribr "tma.bc" -edata 0x0000 \
-ribr "tma.ba" -edata 0x0000
/.
. Property changes : Added: svn:ignore ## -0,0 +1,42 ## +*.gz +*.tar +*.tgz +*.dep_* +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +*.svf +*.log +isim +*_[sfot]sim.vhd +*_tsim.sdf +rlink_cext_fifo_[rt]x +rlink_cext_conf +tmu_ofile +*.dsk +*.tap +*.lst +*.cof +.Xil +project_mflow +xsim.dir +webtalk_* +*_[sfot]sim +*_[IX]Sim +*_[IX]Sim_[sfot]sim +*.dcp +*.jou +*.pb +*.prj +*.rpt +*.wdb

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.