forked from sckoarn/VHDL-Test-Bench
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommand_list.stm
More file actions
401 lines (303 loc) · 7.58 KB
/
command_list.stm
File metadata and controls
401 lines (303 loc) · 7.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
include "an_include.stm"
const a_constA 0x03
const a_constB a_constA
const a_constC a_varA
var a_varA 0x05
var a_varB a_varA
var a_varC a_constA
var result 0
array an_array 16
var file_user_index1 1
var file_user_index2 4
file a_fileA "file_name"
file a_fileB "file_name{}{}" file_user_index1 file_user_index2
lines a_lines
var operand1_and_target 0
var operand2 0
namespace a
var nma 0
end namespace
namespace b
var nma 0
end namespace
proc NmsTest ()
equ a.nma b.nma
end proc
proc ArithProc ()
equ operand1_and_target operand2
equ operand1_and_target 0xF0
add operand1_and_target operand2
add operand1_and_target 0xF0
sub operand1_and_target operand2
sub operand1_and_target 0xF0
mul operand1_and_target operand2
mul operand1_and_target 0xF0
div operand1_and_target operand2
div operand1_and_target 0xF0
and operand1_and_target operand2
and operand1_and_target 0xF0
or operand1_and_target operand2
or operand1_and_target 0xF0
xor operand1_and_target operand2
xor operand1_and_target 0xF0
shl operand1_and_target operand2
shl operand1_and_target 0xF0
shr operand1_and_target operand2
shr operand1_and_target 0xF0
inv operand1_and_target
ld operand1_and_target
end proc
var position 0
var expected_value 0
var mask_value 0
array another_array 16
-------------------------------------------
-- begin advanced
proc VarPointer ()
var pointer copy a_varA a_varB
end proc
proc procNoPar1 ()
var test_variable_scope_add_1 1
end proc
proc procNoPar2 ( )
var test_variable_scope_add_1 1
end proc
proc callNoPar1 ()
call procNoPar1 ()
end proc
proc callNoPar2 ()
call procNoPar2 ( )
end proc
proc procPar1 (
var parA 0
var parB 0
)
add a_varC parA
add a_varC parB
end proc
proc procPar2 (
var parA 0
var parB 0 )
add a_varC parA
add a_varC parB
end proc
proc callPar1 ()
call procPar1 (
equ parA 0
var pointer copy parB a_varC
)
end proc
proc callPar2 ()
call procPar2 (
equ parA 0
var pointer copy parB a_varC )
end proc
-- end advanced
-------------------------------------------
-------------------------------------------
-- more advanced
label ExistingLabel ToBeCalledByLabel
callLabel:
proc
call UseLabelForCall (
label pointer copy LabelToCall ExistingLabel
)
end proc
callLabelEqu:
proc
call UseLabelForCall (
label equ LabelToCall ToBeCalledByLabel
)
end proc
proc UseLabelForCall (
label LabelToCall ExistingLabel
)
call label LabelToCall ()
end proc
proc ToBeCalledByLabel ()
log message 0 "Having been called by label"
end proc
-- end more advanced
-------------------------------------------
proc VarVerify ()
var verify position expected_value mask_value
var verify position 8 0xFF
end proc
proc array_proc ()
array set an_array position 0x07
array set an_array position a_varA
array set an_array 5 0x07
array set an_array 3 a_varA
array get an_array position a_varB
array verify an_array position expected_value mask_value
array verify an_array position 0x07 0xFF
array size an_array a_varB
array pointer copy an_array another_array
end proc
proc file_proc ()
file writable a_fileA result
file readable a_fileA result
file appendable a_fileA result
file write a_fileA a_lines
file append a_fileB a_lines
file read all a_fileA a_lines
file read a_fileA a_lines 5
file read end a_fileA
file pointer copy a_fileA a_fileB
end proc
lines a_lines_target
lines a_lines_source
var read_size 0
proc lines_proc ()
lines get array a_lines position an_array result
lines get array a_lines 8 an_array result
lines set array a_lines position an_array
lines set array a_lines 9 an_array
lines set message a_lines position "abc"
lines set message a_lines 7 "abc"
lines set message a_lines position "abc{}" a_varB
lines set message a_lines 7 "abc{}" a_varB
lines insert array a_lines position an_array
lines insert array a_lines 9 an_array
lines insert message a_lines position "abc"
lines insert message a_lines 7 "abc"
lines insert message a_lines position "abc{}" a_varB
lines insert message a_lines 7 "abc{}" a_varB
lines append array a_lines an_array
lines append message a_lines "abc"
lines append message a_lines "abc{}" a_varB
lines delete a_lines position
lines delete a_lines 13
lines size a_lines read_size
lines pointer copy a_lines_target a_lines_source
end proc
var another_var 1
proc if_proc ()
if a_varA = another_var
equ a_varA 5
elsif a_varA > another_var
equ a_varA 6
else
equ a_varA a_constA
end if
if 0x09 = another_var
equ a_varA 5
elsif 0x09 > another_var
equ a_varA 6
else
equ a_varA a_constA
end if
if a_varA = 0x09
equ a_varA 5
elsif a_varA > 0x09
equ a_varA 6
else
equ a_varA a_constA
end if
if 0x09 = 0x09
equ a_varA 5
elsif 0x0A > 0x09
equ a_varA 6
else
equ a_varA a_constA
end if
end proc
var loop_num 1
proc loop_return_proc ()
loop loop_num
if a_varA = another_var
return
end if
end loop
end proc
proc abort_proc ()
abort
end proc
proc some_proc ()
finish
end proc
proc a_proc ()
end proc
a_interrupt:
interrupt
end interrupt
proc call_proc ()
call some_proc ()
end proc
const INFO 5
var seed_var 589043
var rand_var 0
var rand_min_var 0
var rand_max_var 1000
const RESUME_ON_VERIFY_ERROR 1
const EXIT_ON_VERIFY_ERROR 0
var time_to_wait 5000
proc misc_proc ()
log message INFO "some message"
log message INFO "misc_proc severity: {}" INFO
log lines 0 a_lines_target
trace a_varA
trace 1
verbosity INFO
verbosity 25
resume RESUME_ON_VERIFY_ERROR
resume EXIT_ON_VERIFY_ERROR
seed seed_var
seed 1397
random rand_var rand_min_var rand_max_var
random rand_var 0 rand_max_var
random rand_var rand_min_var 9
random rand_var 3 9
wait time_to_wait
wait 10000
marker a_varA a_varB
marker 5 1
end proc
signal a_signal 10
var signal_to_be_set_value 0
var signal_read_value 0
var signal_expected_value 0
var signal_mask_value 0
proc signal_proc ()
signal write a_signal signal_to_be_set_value
signal write a_signal 0x1234
signal read a_signal signal_read_value
signal verify a_signal signal_read_value signal_expected_value signal_mask_value
signal verify a_signal signal_read_value 0x0002 0x00FF
end proc
signal target_signal 0
signal source_signal 0
var signal_pointer_absolut 0
signal pointer copy target_signal source_signal
signal pointer set target_signal 5
signal pointer get a_signal signal_pointer_absolut
bus a_bus 10
var bus_width 32
var bus_address 0
var bus_to_be_set_value 0
var bus_read_value 0
var bus_expected_value 0
var bus_mask_value 0
var bus_timeout_value 0
proc bus_proc ()
bus write a_bus bus_width bus_address bus_to_be_set_value
bus write a_bus 16 0x00001000 0x1233
bus read a_bus bus_width bus_address bus_read_value
bus read a_bus 16 0x00001000 bus_read_value
bus verify a_bus bus_width bus_address bus_read_value bus_expected_value bus_mask_value
bus verify a_bus 32 0x00001004 bus_read_value 0x00050000 0x000FC000
bus timeout set a_bus 1000
bus timeout set a_bus bus_timeout_value
bus timeout get a_bus bus_timeout_value
end proc
var bus_num 0
proc bus_new_proc (
bus target_bus bus_num
)
end proc
bus target_bus 0
bus source_bus 0
var bus_pointer_absolut 0
bus pointer copy target_bus source_bus
bus pointer set target_bus 5
bus pointer get a_bus bus_pointer_absolut