I started a new tread as this didn´t belong under announcement. I was discussing 65C02/Arlets core implementation in a Lattice MachXO3L using Lattice Diamond package.
BigEd wrote:
I've checked on FPGA, and the core is working as expected - I put an INC $3000 in the JMP loop so I could see if it had gone around. (I needed that because I have to reset the 6502 to get out of the JMP loop.)
(Might be worth noting: you're not copying the zeroth element of the string, so need to tweak your loop a bit.)
Ok. Yea, its just for testing; it might not be a bug, but an interpreter problem specific to Lattice. In my simulator it crashes every time on loop exit (e.g. after 41 branches) with Clock at 33.25MHz. I use an internal memory module that is part of the package. It preloads the assembly code.
I have also tried to vary the Clock phase for memory access so that Data gets loaded from memory about 7.5ns earlier or later which always causes the CPU core to miss the reset vector (and then crash). So it does look like these core need the timing to be spot on - at least in the Lattice Diamond suite. Is this true for other FPGA´s too?
The question then becomes if I am driving it too fast. The worst slack is positive, so signal timing "should" be ok. But if some of the internal components of the core are timing critical I might need to look into that (if I know were to look). Any suggestions?