laforest / Octavo

Verilog FPGA Parts Library. Old Octavo soft-CPU project.
http://fpgacpu.ca/
Other
73 stars 14 forks source link

D write operand may cross over A/B boundaries due to programmed offsets #65

Closed laforest closed 5 years ago

laforest commented 6 years ago

When accessing an indirect memory location in A (for example), the same address is sent to B, via the Address Splitter, which has the same indirect memory locations but with different configuration. The indirect offset is added to the D operand before being sent to the A/B memories. Thus, an indirect access on DA will also happen on DB, and it's possible the DA address gets added an offset that places it in the DB address space, which will then be accepted by the B memory, in error.

Also, this accidental DB indirect access could post-increment the offset, corrupting its state.

Actions: