How to sync motor speed???

The main points of your code look good.
You are using interrupts to read the encoders.
The PID loop is on constant timebase.

My approach would be to run PID on each motor individually, which also makes for an incremental approach.
And command them to turn by specifying a different number of steps for each wheel for the same time.

If the behavior is to run away, try reversing either the motor wires, or reversing the direction bit in sw...
What is the transition count of your encoders per revolution? Low count can be tricky...