Fixed timing tests and added no io tests option

This commit is contained in:
transistor 2024-04-07 20:16:55 -07:00
parent 1c5ad3999a
commit 471695aff5
2 changed files with 40 additions and 34 deletions

View File

@ -1,4 +1,4 @@
Last run on 2024-03-31 at commit 6e7e315808228e03eaf8ad2e8152c087710f1d28 with flags --check-undocumented --check-timings
Last run on 2024-04-07 at commit 1c5ad3999afa5591ec8fcbcadf4797514c390031 with flags --check-undocumented --check-timings
00.json completed, all passed!
01.json completed, all passed!
@ -614,7 +614,7 @@ dd 82.json completed, all passed!
dd 83.json completed, all passed!
dd 84.json completed, all passed!
dd 85.json completed, all passed!
dd 86.json completed, all passed!
dd 86.json completed: 0 passed, 1000 FAILED
dd 87.json completed, all passed!
dd 88.json completed, all passed!
dd 89.json completed, all passed!
@ -622,7 +622,7 @@ dd 8a.json completed, all passed!
dd 8b.json completed, all passed!
dd 8c.json completed, all passed!
dd 8d.json completed, all passed!
dd 8e.json completed, all passed!
dd 8e.json completed: 0 passed, 1000 FAILED
dd 8f.json completed, all passed!
dd 90.json completed, all passed!
dd 91.json completed, all passed!
@ -630,7 +630,7 @@ dd 92.json completed, all passed!
dd 93.json completed, all passed!
dd 94.json completed, all passed!
dd 95.json completed, all passed!
dd 96.json completed, all passed!
dd 96.json completed: 0 passed, 1000 FAILED
dd 97.json completed, all passed!
dd 98.json completed, all passed!
dd 99.json completed, all passed!
@ -638,7 +638,7 @@ dd 9a.json completed, all passed!
dd 9b.json completed, all passed!
dd 9c.json completed, all passed!
dd 9d.json completed, all passed!
dd 9e.json completed, all passed!
dd 9e.json completed: 0 passed, 1000 FAILED
dd 9f.json completed, all passed!
dd a0.json completed, all passed!
dd a1.json completed, all passed!
@ -646,7 +646,7 @@ dd a2.json completed, all passed!
dd a3.json completed, all passed!
dd a4.json completed, all passed!
dd a5.json completed, all passed!
dd a6.json completed, all passed!
dd a6.json completed: 0 passed, 1000 FAILED
dd a7.json completed, all passed!
dd a8.json completed, all passed!
dd a9.json completed, all passed!
@ -654,7 +654,7 @@ dd aa.json completed, all passed!
dd ab.json completed, all passed!
dd ac.json completed, all passed!
dd ad.json completed, all passed!
dd ae.json completed, all passed!
dd ae.json completed: 0 passed, 1000 FAILED
dd af.json completed, all passed!
dd b0.json completed, all passed!
dd b1.json completed, all passed!
@ -662,7 +662,7 @@ dd b2.json completed, all passed!
dd b3.json completed, all passed!
dd b4.json completed, all passed!
dd b5.json completed, all passed!
dd b6.json completed, all passed!
dd b6.json completed: 0 passed, 1000 FAILED
dd b7.json completed, all passed!
dd b8.json completed, all passed!
dd b9.json completed, all passed!
@ -670,7 +670,7 @@ dd ba.json completed, all passed!
dd bb.json completed, all passed!
dd bc.json completed, all passed!
dd bd.json completed, all passed!
dd be.json completed, all passed!
dd be.json completed: 0 passed, 1000 FAILED
dd bf.json completed, all passed!
dd c0.json completed, all passed!
dd c1.json completed, all passed!
@ -1038,7 +1038,7 @@ ed 5f.json completed, all passed!
ed 60.json completed: 2 passed, 998 FAILED
ed 61.json completed, all passed!
ed 62.json completed, all passed!
ed 63.json completed, all passed!
ed 63.json completed: 0 passed, 1000 FAILED
ed 64.json completed, all passed!
ed 65.json completed, all passed!
ed 66.json completed, all passed!
@ -1046,7 +1046,7 @@ ed 67.json completed, all passed!
ed 68.json completed: 4 passed, 996 FAILED
ed 69.json completed, all passed!
ed 6a.json completed, all passed!
ed 6b.json completed, all passed!
ed 6b.json completed: 0 passed, 1000 FAILED
ed 6c.json completed, all passed!
ed 6d.json completed, all passed!
ed 6e.json completed, all passed!
@ -1058,7 +1058,7 @@ ed 73.json completed, all passed!
ed 74.json completed, all passed!
ed 75.json completed, all passed!
ed 76.json completed, all passed!
ed 77.json completed, all passed!
ed 77.json completed: 0 passed, 1000 FAILED
ed 78.json completed: 7 passed, 993 FAILED
ed 79.json completed, all passed!
ed 7a.json completed, all passed!
@ -1066,7 +1066,7 @@ ed 7b.json completed, all passed!
ed 7c.json completed, all passed!
ed 7d.json completed, all passed!
ed 7e.json completed, all passed!
ed 7f.json completed, all passed!
ed 7f.json completed: 0 passed, 1000 FAILED
ed a0.json completed, all passed!
ed a1.json completed: 0 passed, 1000 FAILED
ed a2.json completed: 0 passed, 1000 FAILED
@ -1234,7 +1234,7 @@ fd 82.json completed, all passed!
fd 83.json completed, all passed!
fd 84.json completed, all passed!
fd 85.json completed, all passed!
fd 86.json completed, all passed!
fd 86.json completed: 0 passed, 1000 FAILED
fd 87.json completed, all passed!
fd 88.json completed, all passed!
fd 89.json completed, all passed!
@ -1242,7 +1242,7 @@ fd 8a.json completed, all passed!
fd 8b.json completed, all passed!
fd 8c.json completed, all passed!
fd 8d.json completed, all passed!
fd 8e.json completed, all passed!
fd 8e.json completed: 0 passed, 1000 FAILED
fd 8f.json completed, all passed!
fd 90.json completed, all passed!
fd 91.json completed, all passed!
@ -1250,7 +1250,7 @@ fd 92.json completed, all passed!
fd 93.json completed, all passed!
fd 94.json completed, all passed!
fd 95.json completed, all passed!
fd 96.json completed, all passed!
fd 96.json completed: 0 passed, 1000 FAILED
fd 97.json completed, all passed!
fd 98.json completed, all passed!
fd 99.json completed, all passed!
@ -1258,7 +1258,7 @@ fd 9a.json completed, all passed!
fd 9b.json completed, all passed!
fd 9c.json completed, all passed!
fd 9d.json completed, all passed!
fd 9e.json completed, all passed!
fd 9e.json completed: 0 passed, 1000 FAILED
fd 9f.json completed, all passed!
fd a0.json completed, all passed!
fd a1.json completed, all passed!
@ -1266,7 +1266,7 @@ fd a2.json completed, all passed!
fd a3.json completed, all passed!
fd a4.json completed, all passed!
fd a5.json completed, all passed!
fd a6.json completed, all passed!
fd a6.json completed: 0 passed, 1000 FAILED
fd a7.json completed, all passed!
fd a8.json completed, all passed!
fd a9.json completed, all passed!
@ -1274,7 +1274,7 @@ fd aa.json completed, all passed!
fd ab.json completed, all passed!
fd ac.json completed, all passed!
fd ad.json completed, all passed!
fd ae.json completed, all passed!
fd ae.json completed: 0 passed, 1000 FAILED
fd af.json completed, all passed!
fd b0.json completed, all passed!
fd b1.json completed, all passed!
@ -1282,7 +1282,7 @@ fd b2.json completed, all passed!
fd b3.json completed, all passed!
fd b4.json completed, all passed!
fd b5.json completed, all passed!
fd b6.json completed, all passed!
fd b6.json completed: 0 passed, 1000 FAILED
fd b7.json completed, all passed!
fd b8.json completed, all passed!
fd b9.json completed, all passed!
@ -1290,7 +1290,7 @@ fd ba.json completed, all passed!
fd bb.json completed, all passed!
fd bc.json completed, all passed!
fd bd.json completed, all passed!
fd be.json completed, all passed!
fd be.json completed: 0 passed, 1000 FAILED
fd bf.json completed, all passed!
fd c0.json completed, all passed!
fd c1.json completed, all passed!
@ -1611,5 +1611,5 @@ fd ff.json completed, all passed!
fe.json completed, all passed!
ff.json completed, all passed!
passed: 1584670, failed: 25330, total 98%
completed in 0m 8s
passed: 1564670, failed: 45330, total 97%
completed in 0m 9s

View File

@ -46,6 +46,9 @@ struct Args {
/// Check instruction timings
#[clap(short = 't', long)]
check_timings: bool,
/// Don't check I/O instructions
#[clap(short = 'i', long)]
no_check_io: bool,
/// Directory to the test suite to run
#[clap(long, default_value = DEFAULT_RAD_TESTS)]
testsuite: String,
@ -284,7 +287,7 @@ fn assert_state(
assert_value(cpu.state.iff1 as u8, expected.iff1, "iff1")?;
assert_value(cpu.state.iff2 as u8, expected.iff2, "iff2")?;
// Load data bytes into memory
// Compare data bytes in memory
for (addr, byte) in expected.ram.iter() {
let actual = memory
.read_u8(Instant::START, *addr)
@ -292,7 +295,7 @@ fn assert_state(
assert_value(actual, *byte, &format!("ram at {:x}", addr))?;
}
// Load data bytes into io space
// Compare data bytes in io space
for port in ports.iter() {
if port.atype == "w" {
let actual = io
@ -319,15 +322,14 @@ fn step_cpu_and_assert(
assert_state(cpu, memory, io, &case.final_state, args.check_extra_flags, &case.ports)?;
if args.check_timings {
// TODO re-enable. not sure why it can't divide here
//let cycles = clock_elapsed / cpu.frequency.period_duration();
//if cycles != case.cycles.len() {
// return Err(Error::Assertion(format!(
// "expected instruction to take {} cycles, but took {}",
// case.cycles.len(),
// cycles
// )));
//}
let cycles = clock_elapsed.as_duration() / cpu.frequency.period_duration();
if cycles != case.cycles.len() as u64 {
return Err(Error::Assertion(format!(
"expected instruction to take {} cycles, but took {}",
case.cycles.len(),
cycles
)));
}
}
Ok(())
@ -379,6 +381,10 @@ fn test_json_file(path: PathBuf, args: &Args) -> (usize, usize, String) {
}
}
if args.no_check_io && !case.ports.is_empty() {
continue;
}
// Sort the ram memory for debugging help
if args.debug {
case.initial_state.ram.sort_by_key(|(addr, _)| *addr);