MiSTer-devel / MSX_MiSTer

MSX for MiSTer
41 stars 22 forks source link

Initial removal of async clocks #7

Closed MP2E closed 4 years ago

MP2E commented 4 years ago

There may be more async clocks i missed, I will keep looking. I also think that I could clean up emsx_top more than I did. However, just these changes alone brought the compile times on my laptop from 30 mins to 6 mins, and games still work fine. So, I thought it was smart to share these changes now and continue working

sorgelig commented 4 years ago

Hmm.. Those 2 async clocks in SDC cannot be removed while these signals continue to be a clocks. They are async not because they are in SDC file, it's opposite. Async clocks need to be described in SDC to let the Quartus handle them better than if they won't described. I don't see in the patch any change in these signals to make them disappear from clocks.

Compile the core and notice warnings like: Warning (332060): Node: emu:emu|emsx_top:emsx|ExpSlot0[0] was determined to be a clock but was found without an associated clock assignment.

after you removed these clocks from SDC they will appear in such warning as well.

MP2E commented 4 years ago

I see, thanks for the help. I misunderstood what was going on.

EDIT: I did some reading, and comparing of commits in the other mister projects where async clocks were removed. I think I understand now!

MP2E commented 4 years ago

I'll open a new PR when ready

sorgelig commented 4 years ago

basically the design should have only one master clock. All other clocks must be converted to clock enablers (CE).

sorgelig commented 4 years ago

Btw, You can check T80 with many fixes i've applied in ZX or Amstrad cores. That T80 now pass all tests (except some few undocumented behaviors). Not sure if it will be easy to port to MSX as it includes R800 subset. But it could improve the MSX compatibility. There are T80pa/T80s wrappers in ZX/Amstrad for synchronous design.