gateware

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit c9583916905378daf05e700b211454b3a942757d
parent 8caf74ca1c7a04da4e0d0225ec6e313e89d68ddb
Author: Brian Swetland <swetland@frotz.net>
Date:   Sat, 24 Nov 2018 22:44:51 -0800

tests: update for cpu16v4

- start on some new basic tests
- exercise mov, alu, and extended mov and alu ops
- illustrate data hazards (fails)
- test runner now supports tests that declare the intended state of
  the register set as well as write ops

Diffstat:
Dtests/000-load-registers.s | 20--------------------
Atests/000-mov-imm.s | 21+++++++++++++++++++++
Atests/001-mov-imm-bits.s | 20++++++++++++++++++++
Dtests/001-simple-loop.s | 19-------------------
Atests/002-alu-ops-1.s | 20++++++++++++++++++++
Dtests/002-simple-math.s | 21---------------------
Dtests/003-increment.s | 13-------------
Atests/003-mov-imm-ext.s | 21+++++++++++++++++++++
Atests/004-alu-ops-ext.s | 21+++++++++++++++++++++
Dtests/004-write-loop.s | 25-------------------------
Atests/100-hazards-1.s | 21+++++++++++++++++++++
Mtests/runtest | 12++++++++++--
12 files changed, 134 insertions(+), 100 deletions(-)

diff --git a/tests/000-load-registers.s b/tests/000-load-registers.s @@ -1,20 +0,0 @@ - mov r0, 0 - mov r1, 1 - mov r2, 0x1234 - mov r3, -1 - mov r4, -76 - - mov r15, 0 - nop ; BUG should not be required - sw r0, [r15] - sw r1, [r15] - sw r2, [r15] - sw r3, [r15] - sw r4, [r15] - word 0xffff - -;0000 0000 -;0000 0001 -;0000 1234 -;0000 ffff -;0000 ffb4 diff --git a/tests/000-mov-imm.s b/tests/000-mov-imm.s @@ -0,0 +1,21 @@ +mov r0, 0x10 +mov r1, 0x20 +mov r2, 0x30 +mov r3, 0x40 +mov r4, 0x50 +mov r5, 0x60 +mov r6, 0x70 +mov r7, 0x80 + +nop +halt + +;R0 0010 +;R1 0020 +;R2 0030 +;R3 0040 +;R4 0050 +;R5 0060 +;R6 0070 +;R7 0080 + diff --git a/tests/001-mov-imm-bits.s b/tests/001-mov-imm-bits.s @@ -0,0 +1,20 @@ +mov r0, 0x01 +mov r1, 0x02 +mov r2, 0x04 +mov r3, 0x08 +mov r4, 0x10 +mov r5, 0x20 +mov r6, 0x40 +mov r7, -256 +nop +halt + +;R0 0001 +;R1 0002 +;R2 0004 +;R3 0008 +;R4 0010 +;R5 0020 +;R6 0040 +;R7 ff00 + diff --git a/tests/001-simple-loop.s b/tests/001-simple-loop.s @@ -1,19 +0,0 @@ - mov r0, 5 - mov r2, 0 - mov r1, 17 -loop: - add r1, r1, r1 - sub r0, r0, 1 - add r2, r2, 1 - bnz r0, loop - - mov r15, 0 - nop - sw r0, [r15] - sw r1, [r15] - sw r2, [r15] - word 0xffff - -;0000 0000 -;0000 0220 -;0000 0005 diff --git a/tests/002-alu-ops-1.s b/tests/002-alu-ops-1.s @@ -0,0 +1,20 @@ +mov r0, 0x11 +mov r1, 0x22 +mov r2, 0x33 +mov r3, 0x44 +add r4, r1, r2 +sub r5, r3, r1 +orr r6, r1, r3 +sge r7, r3, r2 + +nop +halt + +;R0 0011 +;R1 0022 +;R2 0033 +;R3 0044 +;R4 0055 +;R5 0022 +;R6 0066 +;R7 0001 diff --git a/tests/002-simple-math.s b/tests/002-simple-math.s @@ -1,21 +0,0 @@ - mov r0, 0 - add r1, r0, 1 - add r2, r0, 2 - add r3, r1, 1 - add r4, r3, 1 - - mov r15, 0 - nop - - sw r0, [r15] - sw r1, [r15] - sw r2, [r15] - sw r3, [r15] - sw r4, [r15] - word 0xffff - -;0000 0000 -;0000 0001 -;0000 0002 -;0000 0002 -;0000 0003 diff --git a/tests/003-increment.s b/tests/003-increment.s @@ -1,13 +0,0 @@ - mov r0, 0 - add r0, r0, 1 - add r0, r0, 1 - add r0, r0, 1 - add r0, r0, 1 - - mov r15, 0 - nop - - sw r0, [r15] - word 0xffff - -;0000 0004 diff --git a/tests/003-mov-imm-ext.s b/tests/003-mov-imm-ext.s @@ -0,0 +1,21 @@ +mov r0, 0x1234 +mov r1, 0xA7A7 +mov r2, 0x1111 +mov r3, 0x2222 +mov r4, 0x4444 +mov r5, 0x8888 +mov r6, 0x5A5A +mov r7, 0x8080 + +nop +halt + +;R0 1234 +;R1 a7a7 +;R2 1111 +;R3 2222 +;R4 4444 +;R5 8888 +;R6 5a5a +;R7 8080 + diff --git a/tests/004-alu-ops-ext.s b/tests/004-alu-ops-ext.s @@ -0,0 +1,21 @@ +mov r0, 0 +mov r1, 0x7777 +add r2, r0, 0x1234 +and r3, r1, 0xF1F1 +sub r4, r1, 0x1111 +slt r5, r1, 0x8000 +sge r6, r1, 0x8000 +sge r7, r1, 0x7777 + +nop +halt + +;R0 0000 +;R1 7777 +;R2 1234 +;R3 7171 +;R4 6666 +;R5 0001 +;R6 0000 +;R7 0001 + diff --git a/tests/004-write-loop.s b/tests/004-write-loop.s @@ -1,25 +0,0 @@ - mov r15, 0x100 - mov r14, 0x108 - mov r0, 0xabcd - -loop: - slt r1, r15, r14 - bnz r1, done - sw r0, [r15] - add r15, r15, 1 - nop - b loop - -done: - word 0xffff - - -;0100 abcd -;0101 abcd -;0102 abcd -;0103 abcd -;0104 abcd -;0105 abcd -;0106 abcd -;0107 abcd -;0100 0000 diff --git a/tests/100-hazards-1.s b/tests/100-hazards-1.s @@ -0,0 +1,21 @@ +mov r0, 0xff +nop +mov r1, r0 +mov r2, r1 +mov r3, r2 +mov r4, r3 +mov r5, r4 +mov r6, r5 +mov r7, r6 + +nop +halt + +;R0 00ff +;R1 00ff +;R2 00ff +;R3 00ff +;R4 00ff +;R5 00ff +;R6 00ff +;R7 00ff diff --git a/tests/runtest b/tests/runtest @@ -17,13 +17,21 @@ if ! ./out/a16 "$1" "out/$1.hex" ; then exit 0 fi -if ! ./out/cpu/Vtestbench -trace "out/$1.vcd" -load "out/$1.hex" | grep '^:WRI' > "out/$1.log" ; then +if ! ./out/cpu/Vtestbench -trace "out/$1.vcd" -load "out/$1.hex" > "out/$1.raw" ; then echo FAIL: Error simulating $1 echo FAIL > "out/$1.status" exit 0 fi -grep '^;' "$1" | sed 's/;/:WRI /g' > "out/$1.tmpl" +# extract WRItes from log and test +grep '^:WRI' "out/$1.raw" > "out/$1.log" +grep '^;[0-9a-fA-F]' "$1" | sed 's/;/:WRI /g' > "out/$1.tmpl" + +# extract REGister state from log and test (if test includes them) +if grep -q '^;R' "$1" ; then + grep '^:REG' "out/$1.raw" >> "out/$1.log" + grep '^;R' "$1" | sed 's/;/:REG /g' >> "out/$1.tmpl" +fi if ! diff "out/$1.tmpl" "out/$1.log" ; then echo FAIL: $1 '(results differ)'