Closed MP2E closed 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.
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!
I'll open a new PR when ready
basically the design should have only one master clock. All other clocks must be converted to clock enablers (CE).
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.
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