When designing a synchronous counter, you first draw the counter's state diagram.
With that in mind, you can write the transitions table, where:
- the independent variables are the current flip-flops' outputs Q[0], Q[1], ... Q[n]
- you provide the desired next state of the flip-flops' outputs Q[0], Q[1], ... Q[n]
- the dependent variables are the flip-flops' entries FF[0], FF[1], ... FF[n], which depend on the current state, the desired state, and your flip-flop type
- there may be extra independent variables like a reset entry, or an up/down entry for an up/down counter