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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.74/] [tools/] [tbench/] [rhrp/] [test_rhrp_basics.tcl] - Blame information for rev 40

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

Line No. Rev Author Line
1 34 wfjm
# $Id: test_rhrp_basics.tcl 705 2015-07-26 21:25:42Z mueller $
2 30 wfjm
#
3
# Copyright 2015- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4
# License disclaimer see LICENSE_gpl_v2.txt in $RETROBASE directory
5
#
6
# Revision History:
7
# Date         Rev Version  Comment
8
# 2015-03-29   660   1.0    Initial version
9
#
10
# Test basic access 
11
#  1. ibus/rbus ack (for cs1:cs3) and no ack (cs3+2)
12
#  2. unit enable/disable and cs2.ned response
13
#  3. drive type logic
14
#  4. readability of all regs (enabled and diabled unit, check cs2.ned)
15
 
16
# ----------------------------------------------------------------------------
17
rlc log "test_rhrp_basics: basic access tests --------------------------------"
18
rlc log "  setup context"
19
package require ibd_rhrp
20
ibd_rhrp::setup
21
 
22
rlc set statmask  $rw11::STAT_DEFMASK
23
rlc set statvalue 0
24
 
25
rlc log "  A1: test that cs1,cs3 give ack, cs3+2 gives no ack --------"
26
 
27
set iaddrfail [expr {[cpu0 imap rpa.cs3] + 2}]
28
 
29
rlc log "    A1.1: rem read cs1,cs3,cs3+1 -----------------------"
30
 
31
$cpu cp -ribr rpa.cs1 \
32
        -ribr rpa.cs3 \
33
        -ribr $iaddrfail -estaterr
34
 
35
rlc log "    A1.2: loc read cs1,cs3,cs3+1 -----------------------"
36
 
37
$cpu cp -rma  rpa.cs1 \
38
        -rma  rpa.cs3 \
39
        -rma $iaddrfail -estaterr
40
 
41
rlc log "  A2: test unit enable, dt and cs2.ned ----------------------"
42
rlc log "    A2.1: disable unit 0 -------------------------------"
43
 
44
# 
45
# select rem and loc unit 0; disable unit
46
$cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit 0] \
47
        -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 0}] \
48
        -wma  rpa.cs2 [regbld ibd_rhrp::CS2 {unit 0}]
49
 
50
rlc log "    A2.2: check dt read and cs2.ned --------------------"
51
set cs2ned [regbld ibd_rhrp::CS2 ned]
52
$cpu cp -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
53
        -rma  rpa.dt \
54
        -rma  rpa.cs2 -edata $cs2ned $cs2ned
55
 
56
rlc log "    A2.3: enable unit 0 as RP06; check cs2.ned, dt -----"
57
 
58
# check for cs2.ned=0 response on dt read (after cs1.tre=1)
59
# unit 0 selected rem and loc from previous section
60
$cpu cp -wibr rpa.ds  [regbld ibd_rhrp::DS {dpr 1}] \
61
        -wibr rpa.dt  $ibd_rhrp::DTE_RP06 \
62
        -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
63
        -rma  rpa.dt  -edata $ibd_rhrp::DT_RP06 \
64
        -rma  rpa.cs2 -edata 0 $cs2ned
65
 
66
rlc log "  A3: set drive types, check proper dt response -------------"
67
 
68
#             dte                 dt
69
set tbl [list $ibd_rhrp::DTE_RP04 $ibd_rhrp::DT_RP04 \
70
              $ibd_rhrp::DTE_RP06 $ibd_rhrp::DT_RP06 \
71
              $ibd_rhrp::DTE_RM04 $ibd_rhrp::DT_RM04 \
72
              $ibd_rhrp::DTE_RM80 $ibd_rhrp::DT_RM80 \
73
              $ibd_rhrp::DTE_RM05 $ibd_rhrp::DT_RM05 \
74
              $ibd_rhrp::DTE_RP07 $ibd_rhrp::DT_RP07 ]
75
 
76
# unit 0 enabled and selected rem and loc from previous section
77
foreach {dte dt} $tbl {
78
  $cpu cp -wibr rpa.dt  $dte \
79
          -ribr rpa.dt  -edata $dte \
80
          -rma  rpa.dt  -edata $dt
81
}
82
 
83
rlc log "  A4: check unit selection and that units are distinct ------"
84
 
85
rlc log "    A4.1: setup units: 0: RP04 1:off 2:RP06 3:off ------"
86
 
87
#          unit dpr dte                 dt
88
set tbl [list 0  1  $ibd_rhrp::DTE_RP04 $ibd_rhrp::DT_RP04 \
89
              1  0  0                   0 \
90
              2  1  $ibd_rhrp::DTE_RP06 $ibd_rhrp::DT_RP06 \
91
              3  0  0                   0]
92
 
93
foreach {unit dpr dte dt} $tbl {
94
  $cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit $unit] \
95
          -wibr rpa.ds  [regbld ibd_rhrp::DS [list dpr $dpr]] \
96
          -wibr rpa.dt  $dte
97
}
98
 
99
rlc log "    A4.2: readback dt rem and loc; check cs2.ned -------"
100
 
101
set dsmsk  [regbld ibd_rhrp::DS  dpr]
102
set cs2msk [regbld ibd_rhrp::CS2 ned {unit 3}]
103
foreach {unit dpr dte dt} $tbl {
104 34 wfjm
  set dsval  [regbldkv ibd_rhrp::DS dpr $dpr]
105
  set cs2val [regbldkv ibd_rhrp::CS2  ned [expr {1-$dpr}]  unit $unit]
106 30 wfjm
  $cpu cp -wibr rpa.cs1 [ibd_rhrp::rcs1_wunit $unit] \
107
          -ribr rpa.ds  -edata $dsval $dsmsk \
108
          -ribr rpa.dt  -edata $dte \
109 34 wfjm
          -wma  rpa.cs2 [regbldkv ibd_rhrp::CS2 unit $unit] \
110 30 wfjm
          -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
111
          -rma  rpa.dt  -edata $dt \
112
          -rma  rpa.cs2 -edata $cs2val $cs2msk
113
}
114
 
115
rlc log "  A5: check cs2.ned for all regs on disabled unit -----------"
116
 
117
# use setting from last section: drive 0 on, drive 1 off
118
#             addr     mb
119
set tbl [list rpa.cs1  1 \
120
              rpa.wc   0 \
121
              rpa.ba   0 \
122
              rpa.da   1 \
123
              rpa.cs2  0 \
124
              rpa.ds   1 \
125
              rpa.er1  1 \
126
              rpa.as   1 \
127
              rpa.la   1 \
128
              rpa.db   0 \
129
              rpa.mr1  1 \
130
              rpa.dt   1 \
131
              rpa.sn   1 \
132
              rpa.of   1 \
133
              rpa.dc   1 \
134
              rpa.m13  1 \
135
              rpa.m14  1 \
136
              rpa.m15  1 \
137
              rpa.ec1  1 \
138
              rpa.ec2  1 \
139
              rpa.bae  0 \
140
              rpa.cs3  0 \
141
        ]
142
 
143
# Note: First unit 1 (enabled) selected, and cs1.tre=1 done
144
#       Than unit 1 (disabled) selected, and registered read
145
#       This ensures that cs2.ned is really cleared, because a cs1.tre=1
146
#       write while a disabled drive is selected will clear and set ned !!
147
set cs2msk [regbld ibd_rhrp::CS2 ned {unit -1}]
148
foreach {addr mb} $tbl {
149
  set cs2val [regbld ibd_rhrp::CS2 [list ned $mb] {unit 1}]
150
  $cpu cp -wma  rpa.cs2 [regbld ibd_rhrp::CS2 {unit 0}] \
151
          -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
152
          -wma  rpa.cs2 [regbld ibd_rhrp::CS2 {unit 1}] \
153
          -rma  $addr \
154
          -rma  rpa.cs2 -edata $cs2val $cs2msk
155
}
156
 
157
rlc log "  A6: check cs2.ned for all regs on enable unit -------------"
158
 
159
# select drive 0 (on); cs1.tre=1; read all regs; check cs2 at end once (sticky)
160
$cpu cp -wma  rpa.cs2 [regbld ibd_rhrp::CS2 [list unit 0]] \
161
        -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
162
        -rma  rpa.cs1 \
163
        -rma  rpa.wc  \
164
        -rma  rpa.ba  \
165
        -rma  rpa.da
166
 
167
$cpu cp -rma  rpa.cs2 \
168
        -rma  rpa.ds  \
169
        -rma  rpa.er1 \
170
        -rma  rpa.as  \
171
        -rma  rpa.la  \
172
        -rma  rpa.db  \
173
        -rma  rpa.mr1
174
 
175
$cpu cp -rma  rpa.dt  \
176
        -rma  rpa.sn  \
177
        -rma  rpa.of  \
178
        -rma  rpa.dc  \
179
        -rma  rpa.m13 \
180
        -rma  rpa.m14 \
181
        -rma  rpa.m15
182
 
183
$cpu cp -rma  rpa.ec1 \
184
        -rma  rpa.ec2 \
185
        -rma  rpa.bae \
186
        -rma  rpa.cs3 \
187
        -rma  rpa.cs2 -edata 0 [regbld ibd_rhrp::CS2 ned]
188
 
189
rlc log "  A7: check that unit 3-7 are loc selectable, but off -------"
190
rlc log "    A7.1: loc read dt for unit 3-7 ; check cs2.unit+ned"
191
 
192
set cs2msk [regbld ibd_rhrp::CS2 ned {unit -1}]
193
foreach {unit} {4 5 6 7} {
194 34 wfjm
  set cs2val [regbldkv ibd_rhrp::CS2  ned 1 unit $unit]
195
  $cpu cp -wma  rpa.cs2 [regbldkv ibd_rhrp::CS2 unit $unit] \
196 30 wfjm
          -wma  rpa.cs1 [regbld ibd_rhrp::CS1 tre] \
197
          -rma  rpa.dt  -edata 0 \
198
          -rma  rpa.cs2 -edata $cs2val $cs2msk
199
}
200
 

powered by: WebSVN 2.1.0

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