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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.6/] [doc/] [w11a_tb_guide.txt] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 22 wfjm
# $Id: w11a_tb_guide.txt 547 2013-12-29 13:10:07Z mueller $
2 4 wfjm
 
3 5 wfjm
Guide to running w11a test benches
4 4 wfjm
 
5 5 wfjm
  Table of content:
6
 
7
  1. Unit tests benches
8
  2. Available unit tests benches
9
  3. System tests benches
10
  4. Available system tests benches
11
 
12
 
13 4 wfjm
1. Unit tests benches -----------------------------------------------------
14
 
15
   All unit test benches have the same simple structure:
16
 
17
   - a stimulus process reads test patterns as well as the expected
18
     responses from a stimulus file
19
 
20
   - the responses are checked in very simple cases by the stimulus process,
21
     in general by a monitoring process
22
 
23
   - the test bench produces a comprehensive log file. For each checked
24
     response the line contains the word "CHECK" and either an "OK" or a
25
     "FAIL", in the later case in general with an indication of whats wrong.
26
     Other unexpected behaviour, like timeouts, will also result in a line
27
     containing the word "FAIL".
28
 
29
   - at the end a line with the word "DONE" is printed.
30
 
31
   - the test bench is run like
32
 
33
       tbw  [stimfile] | tee  | egrep "(FAIL|DONE)"
34
 
35
     where
36
       - 'tbw' is a small perl script setting up a symbolic link to the
37
         stimulus file, the default extracted from the file tbw.dat, if
38
         an optional file name is give this one will be used instead.
39 22 wfjm
       - 'tee' ensures that the full log is saved
40 4 wfjm
       - 'egrep' filters FAIL and DONE lines, a successful run will
41
         produce a single DONE line
42
 
43
   - Most tests can be run against
44
       - the functional model
45
       - gate level models at three stages
46
         - the post-xst model   (produced by netgen from ngc xst output)
47
         - the post-map model   (produced by netgen from ncd ngdbuild output)
48
         - the post-par model   (produced by netgen from ncd par output)
49
     This is simply done using
50
        make _ssim       for post-xst
51
        make _fsim       for post-map
52
        make _tsim       for post-par
53
     all the rest is handled by the build environment.
54
     An example of a post-synthesis model is given for the w11a core test.
55
 
56
2. Available unit tests benches -------------------------------------------
57
 
58
   In the following the available tests are listed with
59
     - the 'make' command to build them
60
     - the pipe setup to run them
61
     - the expected output (the run time measured on a 3 GHz system)
62
 
63
   - serport receiver test
64
     cd $RETROBASE/rtl/vlib/serport/tb
65
     make tb_serport_uart_rx
66
     time tbw tb_serport_uart_rx |\
67
       tee tb_serport_uart_rx_dsim.log | egrep "(FAIL|DONE)"
68 9 wfjm
     -> 1269955.0 ns  63488: DONE
69 13 wfjm
     -> real 0m01.178s   user 0m01.172s   sys 0m00.020s
70 4 wfjm
 
71 9 wfjm
 
72 4 wfjm
   - serport receiver/transmitter test
73
     make tb_serport_uart_rxtx
74
     time tbw tb_serport_uart_rxtx |\
75
       tee tb_serport_uart_rxtx_dsim.log | egrep "(FAIL|DONE)"
76 9 wfjm
     ->  52335.0 ns   2607: DONE
77 13 wfjm
     -> real 0m00.094s   user 0m00.092s   sys 0m00.008s
78 4 wfjm
 
79
   - serport autobauder test
80
     make tb_serport_autobaud
81
     time tbw tb_serport_autobaud |\
82
       tee tb_serport_autobaud_dsim.log | egrep "(FAIL|DONE)"
83 9 wfjm
     -> 367475.0 ns  18364: DONE
84 13 wfjm
     -> real 0m00.610s   user 0m00.612s   sys 0m00.004s
85 4 wfjm
 
86 9 wfjm
   - rlink core test
87 4 wfjm
 
88 9 wfjm
     cd $RETROBASE/rtl/vlib/rlink/tb
89
     make tb_rlink_direct
90
     time tbw tb_rlink_direct |\
91
       tee tb_rlink_direct_dsim.log | egrep "(FAIL|DONE)"
92 17 wfjm
     ->  147755.0 ns   7378: DONE
93 13 wfjm
     -> real 0m00.317s   user 0m00.324s   sys 0m00.028s
94 4 wfjm
 
95 9 wfjm
   - rlink core test via serial port interface
96 4 wfjm
 
97 17 wfjm
     cd $RETROBASE/rtl/vlib/rlink/tb
98
     make tb_rlink_sp1c
99
     time tbw tb_rlink_sp1c tb_rlink_sp1c_stim.dat |\
100
       tee tb_rlink_sp1c_stim2_dsim.log | egrep "(FAIL|DONE)"
101
     ->   24695.0 ns   1225: DONE
102
     -> real 0m0.133s   user 0m0.104s   sys 0m0.008s
103 4 wfjm
 
104 17 wfjm
 
105
     time tbw tb_rlink_sp1c tb_rlink_stim.dat |\
106
       tee tb_rlink_sp1c_dsim.log | egrep "(FAIL|DONE)"
107
     -> 551935.0 ns  27587: DONE
108 13 wfjm
     -> real  0m01.714s   user  0m01.704s   sys  0m00.044s
109 9 wfjm
 
110 4 wfjm
   - w11a core test (using behavioural model)
111
 
112
     cd $RETROBASE/rtl/w11a/tb
113 9 wfjm
     make tb_pdp11core
114
     time tbw tb_pdp11core |\
115
       tee tb_pdp11core_dsim.log | egrep "(FAIL|DONE)"
116
     -> 1220255.0 ns  61003: DONE
117 13 wfjm
     -> real 0m10.736s   user 0m10.713s   sys 0m00.060s
118 4 wfjm
 
119
   - w11a core test (using post-synthesis model)
120
 
121 9 wfjm
     make ghdl_tmp_clean tb_pdp11core_ssim
122
     time tbw tb_pdp11core_ssim |\
123
       tee tb_pdp11core_ssim.log | egrep "(FAIL|DONE)"
124
     ->  1220255.0 ns  61003: DONE
125 13 wfjm
     -> real 1m09.738s   user 1m09.588s   sys 0m00.096s
126 4 wfjm
 
127 16 wfjm
   - s3board sram controller test
128
 
129
     cd $RETROBASE/rtl/bplib/s3board/tb
130
     make tb_s3_sram_memctl
131
     time tbw tb_s3_sram_memctl |\
132
       tee tb_s3_sram_memctl_dsim.log | egrep "(FAIL|DONE)"
133
     -> 5015.0 ns    241: DONE
134
     -> real 0m00.113s   user 0m00.068s   sys 0m00.016s
135
 
136
 
137
   - nexys2/nexys3 cram controller test
138
 
139
     cd $RETROBASE/rtl/bplib/nxcramlib/tb
140
     make tb_nx_cram_memctl_as
141
     time tbw tb_nx_cram_memctl_as |\
142
       tee tb_nx_cram_memctl_as_dsim.log | egrep "(FAIL|DONE)"
143
     -> 24272.5 ns   1204: DONE
144
     -> real 0m00.343s   user 0m00.248s   sys 0m00.100s
145
 
146
 
147 4 wfjm
3. System tests benches ---------------------------------------------------
148
 
149 11 wfjm
   The system tests allow to verify to verify a full system design.
150 4 wfjm
   In this case vhdl test bench code contains
151
     - (simple) models of the memories used on the FPGA boards
152 9 wfjm
     - drivers for the rlink connection (currently just serialport)
153
     - code to interface the rlink data stream to a UNIX 'named pipe',
154 4 wfjm
       implemented with a C routine which is called via VHPI from VHDL.
155
   This way the whole ghdl simulation can be controlled via a di-directional
156
   byte stream.
157
 
158 11 wfjm
   The rlink backend process can connect either via a named pipe to a ghdl
159
   simulation, or via a serial port to a FPGA board. This way the same tests
160
   can be executed in simulation and on real hardware.
161 4 wfjm
 
162
4. Available system tests benches -----------------------------------------
163
 
164 20 wfjm
4a. serport tester ---------------------------------------------------
165 11 wfjm
 
166 16 wfjm
   The sys_tst_serloop design is a test target for validating the serial
167
   link UART stack. Send and receive throughput as well as loop-back tests
168
   are supported
169
 
170
   - sys_tst_serloop_s3 test bench
171
 
172
     cd $RETROBASE/rtl/sys_gen/tst_serloop/s3board/tb
173
     make tb_tst_serloop_s3
174
     time tbw tb_tst_serloop_s3 |\
175
       tee tb_tst_serloop_s3_dsim.log | egrep "(FAIL|DONE)"
176
     -> 301353.3 ns  18068: DONE
177
     -> real 0m1.422s   user 0m1.372s   sys 0m0.024s
178
 
179
   - sys_tst_serloop_n2 test bench
180
 
181
     cd $RETROBASE/rtl/sys_gen/tst_serloop/nexys2/tb
182
     make tb_tst_serloop1_n2
183
     time tbw tb_tst_serloop1_n2 |\
184
       tee tb_tst_serloop1_n2_dsim.log | egrep "(FAIL|DONE)"
185
     -> 361560.0 ns  18068: DONE
186
     -> real 0m1.341s   user 0m1.340s   sys 0m0.016s
187
 
188
     make tb_tst_serloop2_n2
189
     time tbw tb_tst_serloop2_n2 |\
190
       tee tb_tst_serloop2_n2_dsim.log | egrep "(FAIL|DONE)"
191
     -> 304353.3 ns  18248: DONE
192
     -> real 0m1.933s   user 0m1.924s   sys 0m0.024s
193
 
194
   - sys_tst_serloop_n3 test bench
195
 
196
     cd $RETROBASE/rtl/sys_gen/tst_serloop/nexys3/tb
197
     make tb_tst_serloop1_n3
198
     time tbw tb_tst_serloop1_n3 |\
199
       tee tb_tst_serloop1_n3_dsim.log | egrep "(FAIL|DONE)"
200
     -> 361560.0 ns  18068: DONE
201
     -> real 0m1.371s   user 0m1.372s   sys 0m0.016s
202
 
203
4b. rlink tester -----------------------------------------------------
204
 
205 11 wfjm
   The sys_tst_rlink design is a test target for validating the rlink
206
   and rbus functionality at all levels.
207
 
208 16 wfjm
   - sys_tst_rlink_s3 test bench
209
 
210
     cd $RETROBASE/rtl/sys_gen/tst_rlink/s3board/tb
211
     make tb_tst_rlink_s3
212
     time ti_rri --run="tbw tb_tst_rlink_s3" --fifo --logl=3 -- \
213
       "package require tst_rlink" "tst_rlink::setup" "tst_rlink::test_all" |\
214
       tee tb_tst_rlink_s3_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)"
215 19 wfjm
     -> 960540.0 ns  48017: DONE
216
     -> real 0m4.470s
217 16 wfjm
 
218 11 wfjm
   - sys_tst_rlink_n2 test bench
219
 
220
     cd $RETROBASE/rtl/sys_gen/tst_rlink/nexys2/tb
221
     make tb_tst_rlink_n2
222
     time ti_rri --run="tbw tb_tst_rlink_n2" --fifo --logl=3 -- \
223
       "package require tst_rlink" "tst_rlink::setup" "tst_rlink::test_all" |\
224 16 wfjm
       tee tb_tst_rlink_n2_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)"
225 19 wfjm
     -> 960560.0 ns  48017: DONE
226
     -> real 0m4.717s
227 11 wfjm
 
228 15 wfjm
   - sys_tst_rlink_n3 test bench
229
 
230
     cd $RETROBASE/rtl/sys_gen/tst_rlink/nexys3/tb
231
     make tb_tst_rlink_n3
232
     time ti_rri --run="tbw tb_tst_rlink_n3" --fifo --logl=3 -- \
233
       "package require tst_rlink" "tst_rlink::setup" "tst_rlink::test_all" |\
234 16 wfjm
       tee tb_tst_rlink_n3_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)"
235 19 wfjm
     -> 480380.0 ns  48017: DONE
236
     -> real 0m4.860s
237 15 wfjm
 
238 16 wfjm
4c. w11a systems -----------------------------------------------------
239 11 wfjm
 
240 4 wfjm
   The stimulus file used in the w11a core test can be executed in the
241
   full system context (both s3board and nexys2 versions) with the
242
   following commands. Note that the cycle number printed in the DONE
243 9 wfjm
   line can now vary slightly because the response time of the rlink
244 4 wfjm
   backend process and thus scheduling of backend vs. ghdl process
245
   can affect the result.
246
 
247 11 wfjm
   - sys_w11a_s3 test bench
248 4 wfjm
 
249
     cd $RETROBASE/rtl/sys_gen/w11a/s3board/tb
250
     make tb_w11a_s3
251 20 wfjm
     time ti_rri --pack=rw11 --run="tbw tb_w11a_s3" --fifo --logl=3 -- \
252
         "rw11::setup_cpu" \
253
         "rw11::run_pdpcp ../../../../w11a/tb/tb_pdp11core_stim.dat" |\
254 16 wfjm
       tee tb_w11a_s3_stim2_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)"
255 19 wfjm
     -> 10225140.0 ns 511247: DONE
256 22 wfjm
     -> real 0m52.105s   user 0m51.871s   sys 0m0.376s
257 4 wfjm
 
258 11 wfjm
   - sys_w11a_n2 test bench
259 4 wfjm
 
260
     cd $RETROBASE/rtl/sys_gen/w11a/nexys2/tb
261
     make tb_w11a_n2
262 20 wfjm
     time ti_rri --pack=rw11 --run="tbw tb_w11a_n2" --fifo --logl=3 -- \
263
         "rw11::setup_cpu" \
264
         "rw11::run_pdpcp ../../../../w11a/tb/tb_pdp11core_stim.dat" |\
265 16 wfjm
       tee tb_w11a_n2_stim2_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)"
266 19 wfjm
     -> 10278380.0 ns 513908: DONE
267 22 wfjm
     -> real 1m2.951s   user 1m2.628s   sys 0m0.532s
268 15 wfjm
 
269
   - sys_w11a_n3 test bench
270
 
271
     cd $RETROBASE/rtl/sys_gen/w11a/nexys3/tb
272
     make tb_w11a_n3
273 20 wfjm
     time ti_rri --pack=rw11 --run="tbw tb_w11a_n3" --fifo --logl=3 -- \
274
         "rw11::setup_cpu" \
275
         "rw11::run_pdpcp ../../../../w11a/tb/tb_pdp11core_stim.dat" |\
276 16 wfjm
       tee tb_w11a_n3_stim2_dsim.log | egrep "(-[EFW]:|FAIL|PEND|DONE)"
277 19 wfjm
     -> 5167410.0 ns 516720: DONE
278 22 wfjm
     -> real 1m5.322s   user 1m5.072s   sys 0m0.500s
279 16 wfjm
 
280 19 wfjm
   A new, modular w11a test bench is under construction. So far it is very
281
   incomplete. This very preliminary version can be executed with
282
 
283
   - sys_w11a_n2 test bench
284
 
285
     cd $RETROBASE/rtl/sys_gen/w11a/nexys2/tb
286
     make tb_w11a_n2
287 20 wfjm
     time ti_rri --pack=rw11 --run="tbw tb_w11a_n2" --fifo --logl=3 -- \
288
         "rw11::setup_cpu" "rw11::tbench @w11a_all.dat" | \
289 19 wfjm
       tee w11a_tbench_dsim.log | egrep "(-[EFW]:|FAIL|PASS|DONE)"
290
     -> 904180.0 ns  45198: DONE
291 22 wfjm
     -> real 0m5.539s   user 0m5.748s   sys 0m0.204s
292
 

powered by: WebSVN 2.1.0

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