Line 109... |
Line 109... |
wait for 10 ns;
|
wait for 10 ns;
|
assert(HoldAck = '0') report "hold state lasts longer than it should" severity error;
|
assert(HoldAck = '0') report "hold state lasts longer than it should" severity error;
|
|
|
Reset <= '0';
|
Reset <= '0';
|
MemIn <= x"0012"; --mov r0, 0xFF
|
MemIn <= x"0012"; --mov r0, 0xFF
|
wait for 30 ns; --fetcher needs two clock cycles to catch up
|
wait for 20 ns; --fetcher needs two clock cycles to catch up
|
assert(MemAddr = x"0100") report "Not fetching from correct start address" severity error;
|
assert(MemAddr = x"0100") report "Not fetching from correct start address" severity error;
|
MemIn <= x"00F1"; --mov r0, 0xF1
|
MemIn <= x"00F1"; --mov r0, 0xF1
|
wait for 10 ns;
|
wait for 10 ns;
|
assert(MemAddr = x"0102") report "fetcher is not incrementing address" severity error;
|
assert(MemAddr = x"0102") report "fetcher is not incrementing address" severity error;
|
assert(DebugIR = x"00F1" and DebugR0 /= x"12") report "IR is not correct. Execution occurs during first fetch";
|
assert(DebugIR = x"00F1" and DebugR0 /= x"12") report "IR is not correct. Execution occurs during first fetch";
|
MemIn <= x"0056";
|
MemIn <= x"0056";
|
wait for 10 ns;
|
wait for 10 ns;
|
assert(DebugR0 = x"F1") report "loaded value of R0 is not correct" severity error;
|
assert(DebugR0 = x"F1") report "loaded value of R0 is not correct" severity error;
|
|
MemIn <= x"0E50"; --mov IP, 0x50
|
wait for 10 ns;
|
wait for 10 ns;
|
|
assert( MemAddr = x"0150") report "mov to IP doesn't work" severity error; --DebugIP uses regOut, so it won't be updated until next clock cycle actually, but it's correct.
|
|
MemIn <= x"0020"; --mov r0, 0x20
|
|
wait for 10 ns;
|
|
assert (MemAddr = x"0152" and DebugIP=x"50") report "fetching is wrong after move to IP" severity error; --DebugIP uses regOut, Fetchaddress uses regIn, so this is correct
|
|
wait for 10 ns; --wait until register write happens
|
|
assert(DebugR0 = x"20") report "mov to r0 is wrong after move to IP" severity error;
|
|
|
-- summary of testbench
|
-- summary of testbench
|
assert false
|
assert false
|
report "Testbench of core completed successfully!"
|
report "Testbench of core completed successfully!"
|
severity note;
|
severity note;
|