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 |
|
|
|