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! 00.json completed, all passed!
01.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 83.json completed, all passed!
dd 84.json completed, all passed! dd 84.json completed, all passed!
dd 85.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 87.json completed, all passed!
dd 88.json completed, all passed! dd 88.json completed, all passed!
dd 89.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 8b.json completed, all passed!
dd 8c.json completed, all passed! dd 8c.json completed, all passed!
dd 8d.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 8f.json completed, all passed!
dd 90.json completed, all passed! dd 90.json completed, all passed!
dd 91.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 93.json completed, all passed!
dd 94.json completed, all passed! dd 94.json completed, all passed!
dd 95.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 97.json completed, all passed!
dd 98.json completed, all passed! dd 98.json completed, all passed!
dd 99.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 9b.json completed, all passed!
dd 9c.json completed, all passed! dd 9c.json completed, all passed!
dd 9d.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 9f.json completed, all passed!
dd a0.json completed, all passed! dd a0.json completed, all passed!
dd a1.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 a3.json completed, all passed!
dd a4.json completed, all passed! dd a4.json completed, all passed!
dd a5.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 a7.json completed, all passed!
dd a8.json completed, all passed! dd a8.json completed, all passed!
dd a9.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 ab.json completed, all passed!
dd ac.json completed, all passed! dd ac.json completed, all passed!
dd ad.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 af.json completed, all passed!
dd b0.json completed, all passed! dd b0.json completed, all passed!
dd b1.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 b3.json completed, all passed!
dd b4.json completed, all passed! dd b4.json completed, all passed!
dd b5.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 b7.json completed, all passed!
dd b8.json completed, all passed! dd b8.json completed, all passed!
dd b9.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 bb.json completed, all passed!
dd bc.json completed, all passed! dd bc.json completed, all passed!
dd bd.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 bf.json completed, all passed!
dd c0.json completed, all passed! dd c0.json completed, all passed!
dd c1.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 60.json completed: 2 passed, 998 FAILED
ed 61.json completed, all passed! ed 61.json completed, all passed!
ed 62.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 64.json completed, all passed!
ed 65.json completed, all passed! ed 65.json completed, all passed!
ed 66.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 68.json completed: 4 passed, 996 FAILED
ed 69.json completed, all passed! ed 69.json completed, all passed!
ed 6a.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 6c.json completed, all passed!
ed 6d.json completed, all passed! ed 6d.json completed, all passed!
ed 6e.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 74.json completed, all passed!
ed 75.json completed, all passed! ed 75.json completed, all passed!
ed 76.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 78.json completed: 7 passed, 993 FAILED
ed 79.json completed, all passed! ed 79.json completed, all passed!
ed 7a.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 7c.json completed, all passed!
ed 7d.json completed, all passed! ed 7d.json completed, all passed!
ed 7e.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 a0.json completed, all passed!
ed a1.json completed: 0 passed, 1000 FAILED ed a1.json completed: 0 passed, 1000 FAILED
ed a2.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 83.json completed, all passed!
fd 84.json completed, all passed! fd 84.json completed, all passed!
fd 85.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 87.json completed, all passed!
fd 88.json completed, all passed! fd 88.json completed, all passed!
fd 89.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 8b.json completed, all passed!
fd 8c.json completed, all passed! fd 8c.json completed, all passed!
fd 8d.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 8f.json completed, all passed!
fd 90.json completed, all passed! fd 90.json completed, all passed!
fd 91.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 93.json completed, all passed!
fd 94.json completed, all passed! fd 94.json completed, all passed!
fd 95.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 97.json completed, all passed!
fd 98.json completed, all passed! fd 98.json completed, all passed!
fd 99.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 9b.json completed, all passed!
fd 9c.json completed, all passed! fd 9c.json completed, all passed!
fd 9d.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 9f.json completed, all passed!
fd a0.json completed, all passed! fd a0.json completed, all passed!
fd a1.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 a3.json completed, all passed!
fd a4.json completed, all passed! fd a4.json completed, all passed!
fd a5.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 a7.json completed, all passed!
fd a8.json completed, all passed! fd a8.json completed, all passed!
fd a9.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 ab.json completed, all passed!
fd ac.json completed, all passed! fd ac.json completed, all passed!
fd ad.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 af.json completed, all passed!
fd b0.json completed, all passed! fd b0.json completed, all passed!
fd b1.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 b3.json completed, all passed!
fd b4.json completed, all passed! fd b4.json completed, all passed!
fd b5.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 b7.json completed, all passed!
fd b8.json completed, all passed! fd b8.json completed, all passed!
fd b9.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 bb.json completed, all passed!
fd bc.json completed, all passed! fd bc.json completed, all passed!
fd bd.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 bf.json completed, all passed!
fd c0.json completed, all passed! fd c0.json completed, all passed!
fd c1.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! fe.json completed, all passed!
ff.json completed, all passed! ff.json completed, all passed!
passed: 1584670, failed: 25330, total 98% passed: 1564670, failed: 45330, total 97%
completed in 0m 8s completed in 0m 9s

View File

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