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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [tools/] [tcl/] [rbtest/] [test_labo.tcl] - Blame information for rev 36

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 wfjm
# $Id: test_labo.tcl 662 2015-04-05 08:02:54Z mueller $
2
#
3
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4
#
5
# This program is free software; you may redistribute and/or modify it under
6
# the terms of the GNU General Public License as published by the Free
7
# Software Foundation, either version 2, or at your option any later version.
8
#
9
# This program is distributed in the hope that it will be useful, but
10
# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
# for complete details.
13
#
14
#  Revision History:
15
# Date         Rev Version  Comment
16
# 2015-04-03   662   1.0    Initial version
17
#
18
 
19
package provide rbtest 1.0
20
 
21
package require rutiltpp
22
package require rutil
23
package require rlink
24
 
25
namespace eval rbtest {
26
  #
27
  # Test labo with fifo
28
  #
29
  proc test_labo {} {
30
    #
31
    set errcnt 0
32
    rlc errcnt -clear
33
    #
34
    rlc log "rbtest::test_labo - init: clear cntl, data, and fifo"
35
    rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
36
    #
37
    #-------------------------------------------------------------------------
38
    rlc log "  test 1: check that sucessfull blk's do not abort chain"
39
 
40
    # use data reg to monitor labo aborts
41
    rlc exec \
42
      -wreg te.data 0x0000
43
 
44
    set blk0 {0x1111 0x2222}
45
    set blk1 {0x3333 0x4444}
46
    set blk  {0x1111 0x2222 0x3333 0x4444}
47
    rlc exec \
48
      -wblk te.fifo $blk0 \
49
      -labo -edata 0 \
50
      -wblk te.fifo $blk1 \
51
      -labo -edata 0 \
52
      -rblk te.fifo 4 -edata $blk \
53
      -labo -edata 0 \
54
      -wreg te.data 0x0001
55
 
56
    # no labo above, so 0x01 written to data !
57
    rlc exec \
58
      -rreg te.data -edata 0x0001
59
 
60
    #
61
    #-------------------------------------------------------------------------
62
    rlc log "  test 2: check that failed rblk aborts chain"
63
 
64
    rlc exec \
65
      -wblk te.fifo $blk0 \
66
      -labo -edata 0 \
67
      -wblk te.fifo $blk1 \
68
      -labo -edata 0 \
69
      -wreg te.data 0x0010 \
70
      -rblk te.fifo 6 -edata $blk -edone 4 -estaterr \
71
      -labo -edata 1 \
72
      -wreg te.data 0x0011 \
73
      -rreg te.data -edata 0xffff \
74
      -wreg te.data 0x0012
75
 
76
    # last labo aborted, so 0x10 written, but not 0x11 or 0x12
77
    rlc exec \
78
      -rreg te.data -edata 0x0010
79
 
80
    #
81
    #-------------------------------------------------------------------------
82
    rlc log "  test 3: check that failed wblk aborts chain"
83
 
84
    set blk {}
85
    for { set i 0 } { $i < 17 } { incr i } {
86
      lappend blk [expr {$i | ( $i << 8 ) }]
87
    }
88
    rlc exec \
89
      -wreg te.data 0x0020 \
90
      -wblk te.fifo $blk -edone 16 -estaterr \
91
      -labo -edata 1 \
92
      -wreg te.data 0x0021 \
93
      -rreg te.data -edata 0xffff \
94
      -wreg te.data 0x0022
95
 
96
    # last labo aborted, so 0x20 written, but not 0x21
97
    rlc exec \
98
      -rreg te.data -edata 0x0020
99
 
100
    #
101
    #-------------------------------------------------------------------------
102
    rlc log "  test 4a: check that babo state kept over clists"
103
 
104
    rlc exec \
105
      -wreg te.data 0x0030 \
106
      -labo -edata 1 \
107
      -wreg te.data 0x0031
108
 
109
    # no blk done, so labo state sicks, so 0x30 written, but not 0x31
110
    rlc exec \
111
      -rreg te.data -edata 0x0030
112
 
113
    #
114
    #-------------------------------------------------------------------------
115
    rlc log "  test 4b: check that babo readable from RLSTAT"
116
 
117
    # babo still set
118
    set babomsk [regbld rlink::RLSTAT babo]
119
    rlc exec \
120
      -rreg $rlink::ADDR_RLSTAT -edata $babomsk $babomsk
121
 
122
    #
123
    #-------------------------------------------------------------------------
124
    rlc log "  test 4c: check that babo reset by successful rblk"
125
 
126
    rlc exec \
127
      -wreg te.data 0x0040 \
128
      -rblk te.fifo 8 -edata [lrange $blk 0 7] \
129
      -rreg $rlink::ADDR_RLSTAT -edata 0x0 $babomsk \
130
      -rblk te.fifo 8 -edata [lrange $blk 8 15] \
131
      -rreg $rlink::ADDR_RLSTAT -edata 0x0 $babomsk \
132
      -rblk te.fifo 8 -edone 0 -estaterr \
133
      -rreg $rlink::ADDR_RLSTAT -edata $babomsk $babomsk \
134
      -labo -edata 1 \
135
      -wreg te.data 0x0041
136
 
137
    # last rblk failed again so 0x40 written, but not 0x41
138
    rlc exec \
139
      -rreg te.data -edata 0x0040
140
 
141
    #
142
    #-------------------------------------------------------------------------
143
    rlc log "  test 4d: check that babo reset by successful wblk"
144
 
145
    set blk2 {0x5555 0x6666}
146
    rlc exec \
147
      -wblk te.fifo $blk2 \
148
      -rreg $rlink::ADDR_RLSTAT -edata 0x0 $babomsk
149
 
150
    #
151
    #-------------------------------------------------------------------------
152
    rlc log "  test 5: check commands between blk and labo are accepted"
153
 
154
    # there are two words in fifo from previous test
155
    rlc exec \
156
      -wreg te.data 0x0050 \
157
      -rblk te.fifo 4 -edata $blk2 -edone 2 -estaterr \
158
      -rreg $rlink::ADDR_RLSTAT -edata $babomsk $babomsk \
159
      -wreg te.data 0x0051 \
160
      -labo -edata 1 \
161
      -wreg te.data 0x0052
162
 
163
    # last rblk failed so 0x50 written, also 0x51, but not 0x52
164
    rlc exec \
165
      -rreg te.data -edata 0x0051
166
 
167
    #
168
    #-------------------------------------------------------------------------
169
    rlc log "rbtest::test_fifo - cleanup: clear cntl, data, and fifo"
170
    rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
171
    #
172
    incr errcnt [rlc errcnt -clear]
173
    return $errcnt
174
  }
175
}

powered by: WebSVN 2.1.0

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