You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm seeing two anomalies in the tracer while running a program with WFI and interrupts.
See chips ~harris/cvw/examples/exercises/8p9
make sim
After Info 15, it prints attempt to read uninitialized RAM, even though it is reading from the GPIO_OUTPUT_VAL register, which has previously been written.
The mip.MTIP timer interrupt rises at Info 21 for no apparent reason.
mip.MTIP falls at Info 27 after the WFI. I would have expected the timer to go off during the WFI.
...
# Info 15: 'refRoot/cpu', 0x0000000080000038(wait_loop+4): Machine 10500073 wfi
# Info MEMX 0x80000038 0x80000038 2 0073
# Info MEMX 0x8000003a 0x8000003a 2 1050
# WARNING: Attempting to read from unitialized RAM. Processor may go haywire if it uses x value. But this is normal in WALLY-mmu and ExceptionInstr tests.
# PCM = 80000040 InstrM = 00042283 (LW), IEUAdrM = 1006000c
# WARNING: Attempting to read from unitialized RAM. Processor may go haywire if it uses x value. But this is normal in WALLY-mmu and ExceptionInstr tests.
# PCM = 80000040 InstrM = 00042283 (LW), IEUAdrM = 1006000c
# Info 16: 'refRoot/cpu', 0x000000008000003c(wait_loop+8): Machine c01022f3 csrrs x5,time,x0
# Info MEMX 0x8000003c 0x8000003c 2 22f3
# Info MEMX 0x8000003e 0x8000003e 2 c010
# Info x5 0000002e -> 00000211
# Info 17: 'refRoot/cpu', 0x0000000080000040(wait_loop+c): Machine 00042283 lw x5,0(x8)
# Info MEMX 0x80000040 0x80000040 2 2283
# Info MEMX 0x80000042 0x80000042 2 0004
# Info MEMR 0x1006000c 0x1006000c 4 00000000
# Info x5 00000211 -> 00000000
# Info 18: 'refRoot/cpu', 0x0000000080000044(wait_loop+10): Machine 0012c293 xori x5,x5,1
# Info MEMX 0x80000044 0x80000044 2 c293
# Info MEMX 0x80000046 0x80000046 2 0012
# Info x5 00000000 -> 00000001
# Info 19: 'refRoot/cpu', 0x0000000080000048(wait_loop+14): Machine 00542023 sw x5,0(x8)
# Info MEMX 0x80000048 0x80000048 2 2023
# Info MEMX 0x8000004a 0x8000004a 2 0054
# Info MEMW 0x1006000c 0x1006000c 4 00000001
# Info 20: 'refRoot/cpu', 0x000000008000004c(wait_loop+18): Machine 0004a283 lw x5,0(x9)
# Info MEMX 0x8000004c 0x8000004c 2 a283
# Info MEMX 0x8000004e 0x8000004e 2 0004
# Info MEMR 0x2004000 0x2004000 4 00000210
# Info x5 00000001 -> 00000210
# Info 21: 'refRoot/cpu', 0x0000000080000050(wait_loop+1c): Machine 012282b3 add x5,x5,x18
# Info MEMX 0x80000050 0x80000050 2 82b3
# Info MEMX 0x80000052 0x80000052 2 0122
# Info x5 00000210 -> 00000404
# Info (OP_NCH) GlobalTime:0.000000 LocalTime:0.000000 Net:refRoot/MTimerInterrupt 0 => 1
# Info mip 00000000 -> 00000080 [MEIP:0 SEIP:0 MTIP:0->1 STIP:0 MSIP:0 SSIP:0]
# Info 22: 'refRoot/cpu', 0x0000000080000054(wait_loop+20): Machine 0054a023 sw x5,0(x9)
# Info MEMX 0x80000054 0x80000054 2 a023
# Info MEMX 0x80000056 0x80000056 2 0054
# Info MEMW 0x2004000 0x2004000 4 00000404
# Info 23: 'refRoot/cpu', 0x0000000080000058(wait_loop+24): Machine fff98993 addi x19,x19,-1
# Info MEMX 0x80000058 0x80000058 2 8993
# Info MEMX 0x8000005a 0x8000005a 2 fff9
# Info x19 00000004 -> 00000003
# Info 24: 'refRoot/cpu', 0x000000008000005c(wait_loop+28): Machine fc099ce3 bne x19,x0,80000034
# Info MEMX 0x8000005c 0x8000005c 2 9ce3
# Info MEMX 0x8000005e 0x8000005e 2 fc09
# Info 25: 'refRoot/cpu', 0x0000000080000034(wait_loop): Machine c01022f3 csrrs x5,time,x0
# Info MEMX 0x80000034 0x80000034 2 22f3
# Info MEMX 0x80000036 0x80000036 2 c010
# Info x5 00000404 -> 0000022b
# Info 26: 'refRoot/cpu', 0x0000000080000038(wait_loop+4): Machine 10500073 wfi
# Info MEMX 0x80000038 0x80000038 2 0073
# Info MEMX 0x8000003a 0x8000003a 2 1050
# Info 27: 'refRoot/cpu', 0x000000008000003c(wait_loop+8): Machine c01022f3 csrrs x5,time,x0
# Info MEMX 0x8000003c 0x8000003c 2 22f3
# Info MEMX 0x8000003e 0x8000003e 2 c010
# Info x5 0000022b -> 00000405
# Info (OP_NCH) GlobalTime:0.000000 LocalTime:0.000000 Net:refRoot/MTimerInterrupt 1 => 0
# Info mip 00000080 -> 00000000 [MEIP:0 SEIP:0 MTIP:1->0 STIP:0 MSIP:0 SSIP:0]
# Info 28: 'refRoot/cpu', 0x0000000080000040(wait_loop+c): Machine 00042283 lw x5,0(x8)
# Info MEMX 0x80000040 0x80000040 2 2283
# Info MEMX 0x80000042 0x80000042 2 0004
# Info MEMR 0x1006000c 0x1006000c 4 00000001
# Info x5 00000405 -> 00000001
The text was updated successfully, but these errors were encountered:
Waveforms show the mip.MTIP rise at 5500 and WFI at 0x80000038 retires and CSRRS at 8000003C is in the mem stage at time 5510, and that wallyTracer asserts CSR_W[0x344] (for mip) at 5510. It's not clear to my why the tracer doesn't print MTimerInterrupt rising until six instructions later.
MemReadM rises at 5520 when the lw from 1006000c rises. The read value doesn't return until 5540 because of the slow APB. ramxdetector displays the warning as soon as MemReadM is 1, which is too soon, leading to the spurious warning.
I'm seeing two anomalies in the tracer while running a program with WFI and interrupts.
See chips ~harris/cvw/examples/exercises/8p9
make sim
After Info 15, it prints attempt to read uninitialized RAM, even though it is reading from the GPIO_OUTPUT_VAL register, which has previously been written.
The mip.MTIP timer interrupt rises at Info 21 for no apparent reason.
mip.MTIP falls at Info 27 after the WFI. I would have expected the timer to go off during the WFI.
The text was updated successfully, but these errors were encountered: