sim: simple memory test works!

This commit is contained in:
Jacob Lifshay 2024-12-12 19:47:57 -08:00
parent 8d030ac65d
commit 903ca1bf30
Signed by: programmerjake
SSH key fingerprint: SHA256:HnFTLGpSm4Q4Fj502oCFisjZSoakwEuTsJJMSke63RQ
13 changed files with 4146 additions and 510 deletions

View file

@ -509,7 +509,6 @@ pub fn memories() {
connect_any(mem.new_write_port(), w);
}
#[cfg(todo)] // TODO: finish
#[hdl]
#[test]
fn test_memories() {
@ -529,15 +528,107 @@ fn test_memories() {
w_data: (u8, i8),
w_mask: (bool, bool),
}
let io_cycles = [IO {
r_addr: 0,
r_en: false,
r_data: (0, 0),
w_addr: 0,
w_en: false,
w_data: (0, 0),
w_mask: (false, false),
}];
let io_cycles = [
IO {
r_addr: 0,
r_en: false,
r_data: (0, 0),
w_addr: 0,
w_en: false,
w_data: (0, 0),
w_mask: (false, false),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x1, 0x23),
w_addr: 0,
w_en: true,
w_data: (0x10, 0x20),
w_mask: (true, true),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x10, 0x20),
w_addr: 0,
w_en: true,
w_data: (0x30, 0x40),
w_mask: (false, true),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x10, 0x40),
w_addr: 0,
w_en: true,
w_data: (0x50, 0x60),
w_mask: (true, false),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x50, 0x40),
w_addr: 0,
w_en: true,
w_data: (0x70, -0x80),
w_mask: (false, false),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x50, 0x40),
w_addr: 0,
w_en: false,
w_data: (0x90, 0xA0u8 as i8),
w_mask: (false, false),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x50, 0x40),
w_addr: 1,
w_en: true,
w_data: (0x90, 0xA0u8 as i8),
w_mask: (true, true),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x50, 0x40),
w_addr: 2,
w_en: true,
w_data: (0xB0, 0xC0u8 as i8),
w_mask: (true, true),
},
IO {
r_addr: 0,
r_en: true,
r_data: (0x50, 0x40),
w_addr: 2,
w_en: false,
w_data: (0xD0, 0xE0u8 as i8),
w_mask: (true, true),
},
IO {
r_addr: 1,
r_en: true,
r_data: (0x90, 0xA0u8 as i8),
w_addr: 2,
w_en: false,
w_data: (0xD0, 0xE0u8 as i8),
w_mask: (true, true),
},
IO {
r_addr: 2,
r_en: true,
r_data: (0xB0, 0xC0u8 as i8),
w_addr: 2,
w_en: false,
w_data: (0xD0, 0xE0u8 as i8),
w_mask: (true, true),
},
];
for (
cycle,
expected @ IO {